您的位置:首页 > 其它

手机影音9--视频播放器的高级功能(2)

2016-11-15 23:30 302 查看

1.监听播放出错

class MyOnErrorListener implements MediaPlayer.OnErrorListener {

@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
//            Toast.makeText(SystemVideoPlayer.this, "播放出错了哦", Toast.LENGTH_SHORT).show();
//1.播放的视频格式不支持--跳转到万能播放器继续播放
startVitamioPlayer();
//2.播放网络视频的时候,网络中断---1.如果网络确实断了,可以提示用于网络断了;2.网络断断续续的,重新播放
//3.播放的时候本地文件中间有空白---下载做完成
return true;
}
}


2.万能解码框架简介

1.ffmpeg 

2.VLC

3.Vitamio 万能解码框架,在Android和IOS平台上直接使用。
Vitamio 能够流畅播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常见格式的视频,还可以在 Android 与 iOS 上跨平台支持 MMS, RTSP, RTMP, HLS(m3u8) 等常见的多种视频流媒体协议,包括点播与直播。

里面封装了ffmpeg

3.Vitamio的集成

1.关联Vitamio库

compile project(':vitamio')


2.把功能清单文件对应的配置拷贝过去 权限

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />


配置

<!-- Don't forgot InitActivity -->
<activity
android:name="io.vov.vitamio.activity.InitActivity"
android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
android:launchMode="singleTop"
android:theme="@android:style/Theme.NoTitleBar"
android:windowSoftInputMode="stateAlwaysHidden" />


3.把系统SystemVideoPlayer复制一份,改名VitamioVideoPlayer 导入的包全部换成是Vitamio的包,MediaPlayer,VideoView

自定义VitamioVideoView 继承Vitamio的VideoView

4.布局文件activitysystemvideoplayer.xml复制一份改名activityvitamiovideoplayer.xml,并且把里面的VideoView替换成Vitamio的VitamioVideoView

5.初始化Vitamio库,在布局文件加载之前

Vitamio.isInitialized(this);  


6.当系统播放器播放出错的时候跳转到VitamioVideoPlayer播放 疑问:能否直接用Vitamio播放器播放呢?

注意:a,把数据传入VtaimoVideoPlayer播放器 b,关闭系统播放器

让Activity在桌面显示图标,并且点击图标的时候进入软件

<category android:name="android.intent.category.LAUNCHER" />


  

3.当万能播放器播放失败的提示

class MyOnErrorListener implements MediaPlayer.OnErrorListener {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
//什么情况下会出错
//1.播放的格式不支持-跳转到万能播放器继续播放
//Toast.makeText(VitamioVideoPlayerActivity.this,"播放视频出错了="+extra,Toast.LENGTH_SHORT).show();
showErrorDialog();
//2.播放视频的过程中网络中断--播放重试
//3.播放的文件中间缺省--把下载模块解决好,不要用空白
return true;
}
}


  

private void showErrorDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示");
builder.setMessage("播放视频出错了");
builder.setPositiveButton("退出播放", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.show();
}


4.系统播放器和万能播放器手动切换  

case R.id.btn_switch:
new AlertDialog.Builder(VideoPlayerActivity.this)
.setMessage("当前是系统播放器,是否要切换万能播放器播放")
.setNegativeButton("下次再说", null)
.setPositiveButton("立刻切换",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//退出播放器
startVitamioPlyer();
}
})

.setCancelable(false)
.show();
break;


  

  

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: