您的位置:首页 > 其它

ffmpeg 合并视频文件

2013-09-08 04:23 253 查看
嗯,这方面资源真是一个少,方法倒是多样化

copy -b 合并的方式为主流

 首先得说这种方法是不可行的,除单流的裸流外,凡是有格式的文件,像AVI/MKV/FLV/MP4 之类流中都是打了时间戳的,简单的把两文件合并在一起是看不了后一个文件的,他应该播放到第一段后就结束了.

格式的文件

一般组成是 文件MetaData(一些描述)+交织流主体,交织流里有可能有音频/视频/字幕,当然...它们是交织在一起的,单每帧的出现时间和持续时间是不同的,因此为了同步播放,每个流带时间戳是必要的,而不同文件的时间戳都是从0开始计的这也是copy
合并不能用的原因,这些不必过多解释,看合并文件的办法

合并文件

 当然...需要对时间戳进行重编,这点
ffmpeg 可以做到

 方式1

  ffmpeg -i "concat:intermediate1.ts|intermediate2.ts" -c copy output.mkv
-i 指明输入文件 "concat 文件1|文件2"
-c copy 编码格式直接复制,如果2个文件的编码格式不同,去掉这句,ffmpeg 会用输出文件格式的默认编码格式转译,不过,结果会惨不忍睹啊,2次的有损压缩
output.mkv 这里的扩展名确定了文件格式,mkv 格式是最建全的一种

[b] 方式2[/b]

  出于某些原因方式1可能不正确,有时他只生成了第一个文件后就结束了[b],[/b]跟ffmpeg编译版本有关,那就试试方式2

建一个文件 file.txt 内容为:



# 这是注释,windows 文件名中包括路径的注意 \ 应改为 /
file 'file1'
file 'file2'
file 'file3'


ffmpeg -f concat -i mylist.txt -c copy output.mkv
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐