视频流片断文件的合并方法

FFMPEG是个好工具,使用可以参考: 

 

在很多视频网站,比如需要以会员制购买的视频网站,其视频资源已经不是一个可链接的视频文件,而是一个流地址,播放时实时下载,但是很多是通过下载视频片断缓存在你的浏览器的某个文件夹下。

比如我登录了混沌网站,用朋友的账号进去观看。使用的是Chrome,它在Application目录下,找到同级有一个User Data目录,进入到Default下的Cache目录,在网页中播放视频之前,先清空所有文件,然后开始播放。之后会源源不断地生成一些视频片断,你可以将这些1-3M左右的文件拷到另一个文件夹下(因为可能有时长限制会被定时删除了)。视频播放完成之后,这些片断文件基本上都拷出来了,就可以对其进行组合处理。一个700M的文件,可能会生成600个文件左右,这就需要写代码来拼接语句。

在网上找到一个MediaInfo这个动态库,建议用32位的,然后找出刚才那个目录中不是视频文件的,删除之。 

MediaInfoDLL_Load('MediaInfo.dll');

FHandle := MediaInfo_New();

MediaInfo_Open(FHandle, PWideChar('f_00128'));

MediaInfo_Get(FHandle, Stream_General, 0, 'Format', Info_Text, Info_Name) = 'MPEG-TS'

MediaInfo_Close(FHandle);

基本上通过以上5句就可以完成动态库的功能调用。

然后要进行片断文件的组合,开始用copy /b 1+2+3+...+600 all.ts,这个是用代码拼接成一个cmd命令行。

但是用这个生成的目标视频文件,放在播放器里一播,时长不对了,只有7分钟。

最后下载了ffmpeg这个工具,用程序先生成一个filelist.txt: 

file '1'
file '2'
...

 然后调用ffmpeg的dos命令行:

ffmpeg -f concat -i filelist.txt -c copy output.mp4

经过这个处理,生成的视频文件,应该是正确的了。

后来用同样的办法去观看另一个视频,发现缓存的视频片断是加密了的,不能单个播放,这个情况暂时不知如何入手。

如果是单纯的m3u8文件,据说用ffmpeg就可以下载合并到一个文件: 

ffmpeg -i http://...m3u8 -c copy out.mkv

 

 

转载于:https://www.cnblogs.com/bigsong/p/9723952.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值