二、控件属性
1.控件属性
<chuangyuan.ycj.videolibrary.widget.VideoPlayerView
android:id="@+id/exo_play_context_id"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
app:controller_layout_id="@layout/simple_exo_playback_control_view"
app:player_layout_id="@layout/simple_exo_view"
app:player_replay_layout_id="@layout/custom_play_replay"
app:player_error_layout_id="@layout/custom_play_error"
app:player_hint_layout_id="@layout/custom_play_btn_hint"
app:player_load_layout_id="@layout/custom_exo_play_load"
app:player_gesture_audio_layout_id="@layout/custom_gesture_audio"
app:player_gesture_bright_layout_id="@layout/custom_gesture_brightness"
app:player_gesture_progress_layout_id="@layout/custom_gesture_pro"
app:resize_mode="fit"
app:show_timeout="3000"
app:surface_type="texture_view"
app:fastforward_increment="0"
app:rewind_increment="0"
app:user_watermark="@mipmap/watermark_big"
app:player_list="true"
app:use_controller="true"
app:player_fullscreen_image_selector="@drawable/custom_full_selector"
app:player_back_image="@drawable/ic_back_custom"
/>
基本使用如下
<chuangyuan.ycj.videolibrary.widget.VideoPlayerView
android:id="@+id/exo_play_context_id"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
/>
三、JAVA 代码
1、 播放控制类
- 1.ExoUserPlayer 基本播放父类,实现基本播放,设置setPlayUri();
- 2.GestureVideoPlayer 具有手势操作播放(调节亮度和视频进度,和音量)
- 3.ManualPlayer 点击开始按钮播放,具有手势功能,和列表播放
2、 播放代码
//实例化播放控制类
ManualPlayer exoPlayerManager = new ManualPlayer(this,R.id.exo_play_context_id);
//自定义你的数据源,后面详细介绍如何自定义数据源类
//ManualPlayer exoPlayerManager = new ManualPlayer(this,R.id.exo_play_context_id,new DataSource(this));
//加载m3u8 exoPlayerManager.setPlayUri("http://dlhls.cdn.zhanqi.tv/zqlive/35180_KUDhx.m3u8");
//加载ts.文件
exoPlayerManager.setPlayUri("http://185.73.239.15:25461/live/1/1/924.ts");
//播放本地视频
exoPlayerManager.setPlayUri("/storage/emulated/0/DCIM/Camera/VID_20170717_011150.mp4");
//下面开启多线路播放
exoPlayerManager.setShowVideoSwitch(true); //开启切换按钮,默认关闭
String [] test={"http://120.25.246.21/vrMobile/travelVideo/zhejiang_xuanchuanpian.mp4","http://120.25.246.21/vrMobile/travelVideo/zhejiang_xuanchuanpian.mp4","http://120.25.246.21/vrMobile/travelVideo/zhejiang_xuanchuanpian.mp4"};
String[] name={"超清","高清","标清"};
exoPlayerManager.setPlaySwitchUri(test,name);
//开始启动播放视频
exoPlayerManager.startPlayer();
1.实例化播放控制类
ManualPlayer exoPlayerManager = new ManualPlayer(this,R.id.exo_play_context_id);
ManualPlayer exoPlayerManager = new ManualPlayer(this,videoPlayerView);
2.自定义你的数据源,后面详细介绍如何自定义数据源类
ManualPlayer exoPlayerManager = new ManualPlayer(this,R.id.exo_play_context_id,new DataSource(this));
ManualPlayer exoPlayerManager = new ManualPlayer(this,videoPlayerView,new DataSource(this));
//定义多媒体
MediaSourceBuilder mediaSourceBuilder=new MediaSourceBuilder(this,new DataSource(getApplication()));
//集成smoothstreaming,dash,hls
WholeMediaSource mediaSourceBuilder=new MediaSourceBuilder(this,new DataSource(getApplication()));
ManualPlayer exoPlayerManager = new ManualPlayer(this,mediaSourceBuilder, videoPlayerView);
3.设置视频标题
exoPlayerManager.setTitles("视频标题");
4.添加水印图片
exoPlayerManager.setExoPlayWatermarkImg(R.mipmap.watermark_big);
5.设置开始播放进度
exoPlayerManager.setPosition(1000)
6.设置封面图
videoPlayerView.setPreviewImage(bimtap);
videoPlayerView.getPreviewImage())
7.设置视频路径
exoPlayerManager.setPlayUri("http://dlhls.cdn.zhanqi.tv/zqlive/35180_KUDhx.m3u8"); exoPlayerManager.setPlayUri(Uri.parse("http://dlhls.cdn.zhanqi.tv/zqlive/35180_KUDhx.m3u8"));
exoPlayerManager.setPlayUri(Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.h264"); //本地视频
8.设置多线路播放
//开启多线路设置,默认关闭
exoPlayerManager.setShowVideoSwitch(true);
//支持List列表
String [] test={"http://120.25.246.21/vrMobile/travelVideo/zhejiang_xuanchuanpian.mp4", "http://120.25.246.21/vrMobile/travelVideo/zhejiang_xuanchuanpian.mp4", http://120.25.246.21/vrMobile/travelVideo/zhejiang_xuanchuanpian.mp4"};
String[] name={"超清","高清","标清"};
exoPlayerManager.setPlaySwitchUri(test,name);
9.设置视频加载提示显示模式(默认LoadModelType.SPEED (网速模式))
/**设置加载百分比显示模式**/
exoPlayerManager.setLoadModel(LoadModelType.PERCENR);
10.设置视频倍数播放
//设置播放视频倍数 快放和慢放播放 小于1 慢放 大于1 快放
exoPlayerManager.setPlaybackParameters(2f,2f);
11.广告视频预览(轻松实现)
/**需要添加参数就行**/
//第一个参数代表是广告视频位置索引
exoPlayerManager.setPlayUri(0, "http://mp4.vjshi.com/2013-07-25/2013072519392517096.mp4", "http://mp4.vjshi.com/2013-11-11/1384169050648_274.mp4");
//如果自己在播放视频时特出处理。实现该接口回调
//视频切换回调处理,进行布局处理,控制布局显示
exoPlayerManager.setOnWindowListener(new VideoWindowListener() {
@Override
public void onCurrentIndex(int currentIndex, int windowCount) {
if (currentIndex == 0) {
//屏蔽控制布局
exoPlayerManager.hideControllerView();
//如果屏蔽控制布局 但是需要显示全屏按钮。手动显示,播放正常时自动还原。无需里出
videoPlayerView.getExoFullscreen().setVisibility(View.VISIBLE);
} else {
//恢复控制布局
exoPlayerManager.showControllerView();
}
}
});
//跳过广告视频操作
exoPlayerManager.next();
12.设置点击播放按钮需要处理业务
exoPlayerManager.setOnPlayClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainCustomActivity.this,"定义点击播放事件",Toast.LENGTH_LONG).show();
//处理业务操作 完成后
exoPlayerManager.startPlayer();//开始播放
}
});
13.设置监听回调VideoInfoListener
exoPlayerManager.setVideoInfoListener(new VideoInfoListener() {
@Override
public void onLoadingChanged() {
//加载变化
}
@Override
public void onPlayerError(ExoPlaybackException e) {
//加载错误
}
@Override
public void onPlayEnd() {
//播放结束
}
@Override
public void onRepeatModeChanged(int repeatMode) {
//模式变化
}
});
14.覆写Activity和Fragment周期方法
Override
public void onResume() {
super.onResume();
exoPlayerManager.onResume();
}
@Override
public void onPause() {
super.onPause();
exoPlayerManager.onPause();
}
@Override
protected void onDestroy() {
exoPlayerManager.onDestroy();
super.onDestroy();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
exoPlayerManager.onConfigurationChanged(newConfig);//横竖屏切换
super.onConfigurationChanged(newConfig);
}
@Override
public void onBackPressed() {
//使用播放返回键监听
if(exoPlayerManager.onBackPressed()){
finish();
}
}
优质内容筛选与推荐>>
1、11-C#笔记-函数-方法2、mongodb集群搭建3、python基础语法四4、jQuery效果--停止动画5、Cocos2d-x数据篇04:plist文件操作