请问在线视频播放的原理和实现方式
在线视频播放,其实就是把网络视频作为一个流读取到本地,然后在本地播放。为了使得在线视频播放的流畅性,一般会采用许多措施,比如多线程同时下载视频流等。而且,为了能够实现边下载边播放的功能,会把原始的视频文件截成一段一段的小数据流,只要某一段小数据流下载完毕,就可以播放了。上述大概讲了下原理。至于android平台的实现方式,可以直接使用控件VideoView。VideoView继承SurfaceView和实现MediaPlayerControl。继承SurfaceView用于使用单独线程绘制UI,这样可以实时改变和绘制界面,能够适应视频播放的需求。实现MediaPlayerControl用于预定义一些辅助接口,包括各种对视频播放的控制,比如开始、结束、暂停、播放位置、拖动播放等。
使用VideoView播放的基本控制代码大致如下:
mVideoView = (VideoView)findViewById(R.id.main_videoView);
//设置videoView播放的视频的urimVideoView.setVideoURI(Uri.parse("http://static.youku.com/v1.0.0288/v/swf/loader.swf"));
//设置videoView的视频播放控制器mVideoView.setMediaController(new MediaController(MainActivity.this) {@Overridepublic void hide() {// TODO Auto-generated method stub//super.hide();//设置控制条不自动隐藏this.show();}});
//设置videoView准备完毕监听器,用于触发播放操作mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Overridepublic void onPrepared(MediaPlayer mp) {// TODO Auto-generated method stub//开始播放mVideoView.start();}});
//其他相关的控制操作...
其实现在的在线播放视频都不是真正的在线播放,其实是相当于把原来的视频分成很多的小段,按顺序一段一段得下载下来,然后在本地播放,在表面看起来像是在线播放,其实是边下边播放,其实也不算是边下边播放,只是把视频分段下载,分段播放。你可以看看优酷视频的缓存,就是把视频分成很多的小段的,每一段都是可以直接播放的,不过也有一些软件会把这些小段的视频转成其它格式,只有用他自己的播放器才能播放,但是原理是一样的。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(2)
在线视频播放,其实就是把网络视频作为一个流读取到本地,然后在本地播放。为了使得在线视频播放的流畅性,一般会采用许多措施,比如多线程同时下载视频流等。而且,为了能够实现边下载边播放的功能,会把原始的视频文件截成一段一段的小数据流,只要某一段小数据流下载完毕,就可以播放了。
上述大概讲了下原理。至于android平台的实现方式,可以直接使用控件VideoView。VideoView继承SurfaceView和实现MediaPlayerControl。继承SurfaceView用于使用单独线程绘制UI,这样可以实时改变和绘制界面,能够适应视频播放的需求。实现MediaPlayerControl用于预定义一些辅助接口,包括各种对视频播放的控制,比如开始、结束、暂停、播放位置、拖动播放等。
使用VideoView播放的基本控制代码大致如下:
mVideoView = (VideoView)findViewById(R.id.main_videoView);
//设置videoView播放的视频的uri
mVideoView.setVideoURI(Uri.parse("http://static.youku.com/v1.0.0288/v/swf/loader.swf"));
//设置videoView的视频播放控制器
mVideoView.setMediaController(new MediaController(MainActivity.this) {
@Override
public void hide() {
// TODO Auto-generated method stub
//super.hide();
//设置控制条不自动隐藏
this.show();
}
});
//设置videoView准备完毕监听器,用于触发播放操作
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
//开始播放
mVideoView.start();
}
});
//其他相关的控制操作
...
其实现在的在线播放视频都不是真正的在线播放,其实是相当于把原来的视频分成很多的小段,按顺序一段一段得下载下来,然后在本地播放,在表面看起来像是在线播放,其实是边下边播放,其实也不算是边下边播放,只是把视频分段下载,分段播放。
你可以看看优酷视频的缓存,就是把视频分成很多的小段的,每一段都是可以直接播放的,不过也有一些软件会把这些小段的视频转成其它格式,只有用他自己的播放器才能播放,但是原理是一样的。