1
在请求网络时 要记得设置权限
调用系统播放器
Uri uri =
Uri.parse(Environment.getExternalStorageDirectory().getPath()+"/Test_Movie.m4v");
//调用系统自带的播放器
Intent intent = new Intent(Intent.ACTION_VIEW);
Log.v("URI:::::::::", uri.toString());
intent.setDataAndType(uri, "file://video/mp4");
startActivity(intent);
2
MediaController+VideoView
VideoView继承了SurfaceView同时实现了MediaPlayerControl接口,MediaController则是安卓封装的辅助控制器,带有暂停,播放,停止,进度条等控件。通过VideoView+MediaController可以很轻松的实现视频播放、停止、快进、快退等功能。
public class VideoViewTestActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_view_test);
VideoView videoView = (VideoView)findViewById(R.id.videoView);
//加载指定的视频文件
String path = Environment.getExternalStorageDirectory().getPath()+"/20180730.mp4";
videoView.setVideoPath(path);
//创建MediaController对象
MediaController mediaController = new MediaController(this);
//VideoView与MediaController建立关联
videoView.setMediaController(mediaController);
//让VideoView获取焦点
videoView.requestFocus();
}
}
3
MediaPlayer+SurfaceView+自定义控制器
创建MediaPlayer对象,并让它加载指定的视频文件。可以是应用的资源文件、本地文件路径、或者URL。
在界面布局文件中定义SurfaceView组件,并为SurfaceView的SurfaceHolder添加Callback监听器。
调用MediaPlayer对象的setDisplay(SurfaceHolder sh)将所播放的视频图像输出到指定的SurfaceView组件。
调用MediaPlayer对象的prepareAsync()或prepare()方法装载流媒体文件
调用MediaPlayer对象的start()、stop()和pause()方法来控制视频的播放。
4
webview网络播放视频
webView = (WebView) this.findViewById(R.id.webView1);
// 设置加载进来的页面自适应手机屏幕
WebSettings settings = webView.getSettings();
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
webView.loadUrl("http://www.baidu.com");
}
也可以使用VideoView 组件直接播放视频,但是效果不怎么样,容易卡顿,不能完整的适应于屏幕
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
init();
initVideoView();
}
private void initVideoView() {
videoView.setVideoPath("http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8");
}
private void init() {
videoView = (VideoView) findViewById(R.id.videoView);
start = (Button) findViewById(R.id.start);
pause = (Button) findViewById(R.id.pause);
start.setOnClickListener(this);
pause.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
if (!videoView.isPlaying()) {
videoView.start();
}
break;
case R.id.pause:
if (videoView.isPlaying()) {
videoView.pause();
}
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (videoView != null) {
videoView.suspend();
}
}
附上央视直播地址方便测试
香港卫视:http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8
CCTV1高清:http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8
CCTV3高清:http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8
CCTV5高清:http://ivi.bupt.edu.cn/hls/cctv5hd.m3u8
CCTV5+高清:http://ivi.bupt.edu.cn/hls/cctv5phd.m3u8
CCTV6高清:http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8