织梦CMS - 轻松建站从此开始!

罗索

编程实现avi文件的流播放

落鹤生 发布于 2011-03-02 09:27 点击:次 
有时候会碰到一些比较BT的需求,比如说想要实现avi的在线播放。有时候会发现一些工具能实现,但是发现总是不够稳定。原因在于协议,如果播放器写得好,可以一边下载,一边分析下载的流,来实现播放。但是想要实现快进,或是拖动这些的就不容易了。
TAG:

有时候会碰到一些比较BT的需求,比如说想要实现avi的在线播放。有时候会发现一些工具能实现,但是发现总是不够稳定。原因在于协议,如果播放器写得好,可以一边下载,一边分析下载的流,来实现播放。但是想要实现快进,或是拖动这些的就不容易了。

要解决这些问题,只有一点,那就是自己来实现这套流协议,然后作播放器来播放。为了实现这些东西,偶作一下分析,可以简单地把技术点分为三个:

1.流服务器的实现

2.流播放器的实现

3.注册客户端,来实现播放器的关联(这样点击网页上的链接时,可以自动弹出我们的播放器来播放)

接下来让我们详细地看看具体的实现分析吧。

一、流服务器的实现

我们可以通过分析AVI的文件格格式,以及播放时的需要,可以弄出来一个很简单的流协议。并且为了方便使用,我还是基于标准的HTTP协议上来扩展实现。在这里,我把这个协议分成了两大块:媒体摘要和媒体块。

媒体的摘要:根据我们在播放AVI的时候的要求,我们的摘要里面要含有这些信息:宽,高,帧率,解码器类型,流的数量(音频和视频),推荐的缓冲大小,总帧数,如果有音频流,那还得指定音频的采样频率,位数等信息,以及每一帧的索引。

媒体块:在这里面,我们就是真正的下载数据了,每次请求的帧数,这个可以根据我们的应用环境综合考虑了,主要要考虑以下几点:下载尽量快,请求数尽量少。

有了服务器的这些支持,我们就可以实现我们的客户端了。

二、流播放器的实现

具体的播放实现我在这里就不多写了,对于媒体播放器来说,无非就是拿到一帧数据,然后调用对应的解码器解成位图数据,然后把它画在界面上。

在这里主要讲流播放器数据的请求和快进的实现:

我把程序划成两个线程:一个线程负责下载数据,另一个线程负责把内容绘在界面上。

第一步获得媒体的摘要。得到这个摘要后,我们就可以得到媒体的大概信息了。然后再顺序地把索引表发送到服务器上去请求数据。为了更好的播放性能,我 们可以把下载下面的媒体块保存在临时文件里面,然后再加一个索引位置来标明每一帧的起始位,以及长度。当播放时,如果发现该帧还未下载。就给那个下载线程 发个请求,让它下次下载的时候,就从这个位置开始。所以快进这些的实现就变得很简单了,如果没有下载,只要很短时间的buffer就可以继续播放了。

三、注册客户端

为了更好的体验,偶们可以注册新的协议,这样用户在点击浏览器上的链接的时候,就可以自动打开我们的播放器来播放,偶暂把这个协议定 为:ivp(Ironsoft Video Protrol).注册协议很简单,只要把以下的注册导入就可以了,当然我们也可以编程实现生成这些注册表:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\IVP]
@="IVPProtocol"
"URL Protocol"="\"C:\\Program Files\\IronSoftPlayer\\player.exe\""

[HKEY_CLASSES_ROOT\IVP\DefaultIcon]
@="\"C:\\Program Files\\IronSoftPlayer\\player.exe\",1"

[HKEY_CLASSES_ROOT\IVP\shell]

[HKEY_CLASSES_ROOT\IVP\shell\open]

[HKEY_CLASSES_ROOT\IVP\shell\open\command]
@="\"C:\\Program Files\\IronSoftPlayer\\player.exe\" \"%1\""

?

好了,avi的在线流播放就可以很轻松地实现了。嘿嘿,偶一共是用三个工作日左右就全部实现了。

(markman101)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201103/10992.html]
本文出处:CSDN博客 作者:markman101
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容