回 帖 发 新 帖 刷新版面

主题:[原创]把FLV视频文件一分为二的代码

    有时候,我们需要把FLV文件分割为两个小文件,那么,步骤及注意事项如下:
    1.确定一个分割点(ms为单位),这个时间点可以在播放进行时,从FLV控件的PlayProgress事件
中的CurrentTime参数获得。
    2.根据这个分割点,查询FLV文件各标签的时间戳,并据此将文件分割为两部分。分割点前面的数
据,修改了脚本标签的持续时间(持续时间=分割点时间)后保存为FLV1;后面的数据,经过下面的处
理后再保存为FLV2。
    3.在FLV2的数据前面添加文件头和脚本标签(脚本标签可以使用原文件的),再添加原文件的第一
个视频标签和第一个音频标签(必须原封不动地添加,这两个标签不是可播放的标签,而是含有FLV的
重要参数的标签。笔者编写代码时,起初不知道这两个标签的重要性,没有添加这两个标签,结果分割
出来的FLV2文件播放时一团漆黑,后来用HEX编辑器仔细研究了其它软件分割出来的FLV2,才得到了这
样的结论,并在实验中获得了证实)。
    4.FLV2的脚本标签的持续时间=原文件的持续-分割点时间,并且FLV2所有的视频标签和音频标签
中的时间戳都必须减去分割点时间(添加的原文件的第一个视频标签和第一个音频标签不要修改)。

    附件中的程序代码已经做了适当的注释,不过,想要完全弄明白,请参阅笔者写的《FLV文件数据结
构》一文。注意程序的 Form_Load 事件中,timeBreak = 16718 这是笔者实验时使用的分割点时间,
在实际应用中,要删除这一句。

    由于本网站不能上传附件,请到以下地址去下载

地址:http://email.163.com
用户名:vb62013
密码:vb620132013

回复列表 (共2个回复)

沙发

额,我以前都是直接暴力切开,中间丢的部分就不管了。。。。

板凳

[quote]额,我以前都是直接暴力切开,中间丢的部分就不管了。。。。[/quote]
饿,你这样做,播放的时候,就只能指望播放器足够智能。

我来回复

您尚未登录,请登录后再回复。点此登录或注册