当前位置:首页 » 安卓系统 » android视频播放实现的

android视频播放实现的

发布时间: 2022-05-10 12:51:24

A. android studio视频播放器都用需要什么知识

Android提供了常见的视频编码,解码机制,使用Android自带的MediaPlayer,MediaController等类可以很方便的实现视频播放的功能。支持的视频格式有MP4和3GP等。这些多媒体数据可以来自于Android应用的资源文件,也可以来自于外部存储器上的文件,甚至可以是来自于网络上的文件流。
MediaController+VideoView实现方式
这种方式是最简单的实现方式。VideoView继承了SurfaceView同时实现了MediaPlayerControl接口,MediaController则是安卓封装的辅助控制器,带有暂停,播放,停止,进度条等控件。通过VideoView+MediaController可以很轻松的实现视频播放、停止、快进、快退等功能。

B. 怎样实现自己写的Android视屏播放器播放rmvb格式的视频

你好,必须移植ffmepg或openmax库用于软解码。就是说需要修改Android多媒体框架,一般播放器只是使用videoview类或mediaplay和surfaceview类实现,这中实现和解码无关。

C. 安卓开发怎么点击按钮就播放视频videoview

Android使用VideoView实现VideoPlayer 在Android系统中,是通过MediaPalyer类播放媒体文件的(包括视频和音频)。虽然这个类已经比较简单了,但是还需要控制各种状态,对于视频还需要设置输出窗口,还是需要仔细研究的。为了避免这些麻烦事儿,Android框架提供了VideoView类来封MediaPalyer,这个VideoView类非常好用。Android自带的程序Gallery也是用VideoView实现的。 通过VideoView播放视频的步骤: 1、在界面布局文件中定义VideoView组件,或在程序中创建VideoView组件 2、调用VideoView的如下两个方法来加载指定的视频 setVidePath(String path):加载path文件代表的视频 setVideoURI(Uri uri):加载uri所对应的视频 3、调用VideoView的start()、stop()、psuse()方法来控制视频的播放 VideoView通过与MediaController类结合使用,开发者可以不用自己控制播放与暂停 简单实例: activity_main/apk/res/android" xmlns:tools="schemas/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <VideoView android:id="@+id/video1" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout> Activity 控制代码: package com.Uri; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.MediaController; import android.widget.VideoView; public class MainActivity extends Activity { private VideoView video1; MediaController mediaco; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); video1=(VideoView)findViewById(R.id.video1); mediaco=new MediaController(this); File file=new File("/mnt/sdcard/通话录音/1.mp4"); if(file.exists()){ //VideoView与MediaController进行关联 video1.setVideoPath(file.getAbsolutePath()); video1.setMediaController(mediaco); mediaco.setMediaPlayer(video1); //让VideiView获取焦点 video1.requestFocus(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }

D. android 实现播放网络视频

没有调start(),vv.setVideoURI(uri);后要调用vv.start(),才可以播放,这里面有好几个接口,pause,resunme,stop你看下api,建议看下Mediaplayer播放的状态机,对你理解多媒体播放有好处。

E. android 如何实现图片视频混合播放啊

直接上代码:

布局文件就是两个全屏的videoview和imageview重叠

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
android:id="@+id/pictureView"
android:scaleType="fitXY"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>

<VideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>


</LinearLayout>

java部分:

/*
视频图片混合展示demo
*/
packagecom.example.administrator.hunbo;

importandroid.content.Context;
importandroid.media.MediaPlayer;
importandroid.net.Uri;
importandroid.os.Handler;
importandroid.os.storage.StorageManager;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.ImageView;
importandroid.widget.Toast;
importandroid.widget.VideoView;
importjava.io.File;
importjava.lang.reflect.InvocationTargetException;
importjava.lang.reflect.Method;
importjava.util.ArrayList;

{

privateVideoViewvideoView;
privateImageViewpictureView;
booleanisPlaying=false;
privateArrayListarrayList=newArrayList<String>();

@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();//隐藏actionBar
//初始化控件
videoView=findViewById(R.id.videoView);
pictureView=findViewById(R.id.pictureView);
//最开始两个view都是隐藏的
videoView.setVisibility(View.GONE);
pictureView.setVisibility(View.GONE);
//检测SD卡是否存在
String[]result=null;
StorageManagerstorageManager=(StorageManager)getSystemService(Context.STORAGE_SERVICE);
try{
Methodmethod=StorageManager.class.getMethod("getVolumePaths");
method.setAccessible(true);
try{
result=(String[])method.invoke(storageManager);
}catch(InvocationTargetExceptione){
e.printStackTrace();
}
if(result.length>1){
//Toast.makeText(this,"检测到U盘",Toast.LENGTH_SHORT).show();
AllFilesPath("/mnt/usb/");
playList();
}else{
Toast.makeText(this,"未检测到U盘,请在开机前插入U盘,或者重新启动此应用",Toast.LENGTH_SHORT).show();
Handlerhandler=newHandler();
handler.postDelayed(newRunnable(){
@Override
publicvoidrun(){
finish();
}
},2500);
}
}catch(Exceptione){
e.printStackTrace();
}
}
//获取所有图片视频的绝对路径到arraylist
privateArrayListAllFilesPath(Stringpath){
Filefile=newFile(path);
File[]files=file.listFiles();
for(Filef:files){
if(f.getName().endsWith("jpg")||f.getName().endsWith("jpeg")||f.getName().endsWith("mp4")
||f.getName().endsWith("avi")||f.getName().endsWith("mkv")||f.getName().endsWith("rmvb")
||f.getName().endsWith("flv")){
System.out.println("------------获取到了一个可用路径:"+f.getAbsolutePath());
arrayList.add(f.getAbsolutePath());//添加到arralist
}elseif(f.isDirectory()){
AllFilesPath(f.getAbsolutePath());
}
}
returnarrayList;
}
//依次混合播放arralist里的图片或视频

publicintlistNum;
privatevoidplayList(){
if(listNum>=arrayList.size()){
finish();
//listNum=0;
}else{
System.out.println("---------------------------收入路径---------------------------");
System.out.println("isplaying="+isPlaying);
finalFilef=newFile(arrayList.get(listNum).toString());
if(f.getName().endsWith("jpg")||f.getName().endsWith("jpeg")||f.getName().endsWith("png")){
System.out.println("---------------------------添加了一张图片:"+f.getAbsolutePath());
pictureView.setVisibility(View.VISIBLE);
pictureView.setImageURI(Uri.fromFile(f));
Handlerhandler=newHandler();
handler.postDelayed(newRunnable(){
@Override
publicvoidrun(){
System.out.println("---------------------------播完了一张位于"+f.getAbsolutePath()+"的图片》》》》》》》》》》》》》》》》》");
pictureView.setVisibility(View.GONE);
listNum++;
playList();
}
},2000);//2秒后结束当前图片
}elseif(f.getName().endsWith("mp4")||f.getName().endsWith("avi")||f.getName().endsWith("mkv")
||f.getName().endsWith("rmvb")||f.getName().endsWith("flv")){
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~添加了一个视频"+f.getAbsolutePath());
videoView.setVideoPath(f.getAbsolutePath());
videoView.setVisibility(View.VISIBLE);//播放之前显示videoView
videoView.start();
videoView.setOnCompletionListener(newMediaPlayer.OnCompletionListener(){
@Override
publicvoidonCompletion(MediaPlayermp){
System.out.println("---------------------------播完了一个位于"+f.getAbsolutePath()+"的视频《《《《《《《《《《《《《《《《《《");
videoView.setVisibility(View.GONE);//视频播放完毕后隐藏videoView
listNum++;
playList();
}
});
}
}
}

F. 在安卓手机上看网页的时候如何实现视频嵌入页面中播放不用flash的话

可以使用android的WebView来加载一个html5 通过video标签来实现视频的播放。

以下为实现步骤:
1.需要在AndroidManifest.xml文件中声明需要使用HardwareAccelerate, 可以细化到Activity级别,如果不需要的View可以声明不要用加速,但是需要在代码中做,
具体如下:
a.如果要声明整个应用都要加速:< application ... android:hardwareAccelerated ="true">
b. 如果要在Activity中声明,则:
<activity ... android:hardwareAccelerated="true" >
Window, getWindow.setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
c. 如果application或者activity都申明了要硬件加速,但是为了某些原因(比如省电?),一些View不需要硬件加速的话, view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

2.需要在AndroidManifest.xml文件中用上<use-sdk></use-sdk>标签,而且如果是空的还不行,必须写上targetSDK或者minSDK,但是我试验过,不管写版本是多少都没有关系。。。理论上说,Android应该是从3.0( API Level 11)开始可以对2D渲染加速,但是我把targetSDK设置为5都可以使用的,但是这个标签不写还不行。

一般来说,上面的操作做了,就可以使用video标签播放视屏了,如果要支持全屏,还需要做一点操作: 给webview一个WebChromeClient对象,这个WebChromeClient对象需要实现onShowCustomView和onHideCustomView方法

G. android如何实现视频的在线播放

vitamio
能播放绝大部分格式的视频,但是这个有点大,里面的so文件比较多,官方文档上说有瘦身的方法,我试过但是没成功,就一个用了vitamio
的小demo,打完包都10m了。在线视频的话如果在电脑浏览器上能直接播放的话,用这个都可以播的,也有缓冲。我们项目也有在线视频播放,原本也是准备用vitamio
的,但是太大了,打完包apk增加了10m,然后我就换成了universalvideoview
了,这个也可以在线播放,有缓冲效果,主要是打包后apk不大。如果你播放在线视频功能要求高,而且不在乎apk大小的话可以使用vitamio
,如果仅想实现在线播放的话建议universalvideoview
就够了!

H. 安卓端需要实现实时视频,该怎么做

安卓端需要实现实时视频,最便捷的方法是和第三方平台合作,接入他们的SDK,即构科技的音视频解决方案就还不错,我之前接入过,他们的sdk灵活性比较强,多终端适配,对比其他同行,优势是支持32路实时音视频,现在好像可以支持更多了,这个听起来好像就那样,但实现难度其实很高!另外,即构的视频效果和音质都是有保障的。

I. 如何实现android播放视频的功能

在Android中,有三种方式来实现视频的播放:

1、使用其自带的播放器。指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型。

2、使用VideoView来播放。在布局文件中使用VideoView结合MediaController来实现对其控制。

3、使用MediaPlayer类和SurfaceView来实现,这种方式很灵活。

J. 怎样简单实现Android视频播放器倍速,清晰

除了BSplayer播放器、KMplayer播放器,还有Astro Player播放器、Vplayer播放器、DicePlayer播放器也可以变速播放!但是只有KMplayer才支持最高4倍速度播放,其他的最高都只是2倍。

热点内容
数据库查看表命令 发布:2025-05-15 09:52:27 浏览:913
p30是不是自带方舟编译器 发布:2025-05-15 09:51:48 浏览:598
追击世界房间密码是多少 发布:2025-05-15 09:51:46 浏览:994
cjavabyte 发布:2025-05-15 09:51:36 浏览:462
visa存储卡 发布:2025-05-15 09:35:07 浏览:619
js调用php的方法 发布:2025-05-15 09:29:13 浏览:496
android添加sdk 发布:2025-05-15 08:59:20 浏览:6
oracle数据导入sql 发布:2025-05-15 08:55:00 浏览:50
最适合做的脚本 发布:2025-05-15 08:54:27 浏览:381
太原php培训班 发布:2025-05-15 08:41:38 浏览:938