是否可以使用cat合并视频文件?


Answers:


21

对的,这是可能的。但并非所有格式都支持它。

ffmpeg常见问题解答

一些多媒体容器(MPEG-1,MPEG-2 PS,DV)仅通过连接视频文件就可以加入视频文件。

当转换为RAW格式时,您也很有可能可以串联文件。

ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi

但是cat以这种方式使用创建的中间文件是不必要的。这是避免创建这些中间文件的更好方法:

ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi

1
您还在第二版本中创建中间文件吗?
John Gowers

6

媒体文件有两种

  • 可流式

  • 不可流动

主要区别在于两种文件格式如何嵌入元信息。对于不可流式格式,元信息c(“标头”)通常存储在文件中的特定位置,通常存储在开头,有时存储在结尾。您不能简单地串联这些文件,因为来自文件文件之一的元信息将位于非标准位置,因此将被忽略。

OTOH,格式需要能够处理将在“中间某处”开始播放文件的侦听器。因此,这些格式会继续重新发送元信息,甚至允许在文件/流中更新它。这些格式可以简单地连接在一起。



1

正如BЈовић所说,一般而言,每个文件都有自己的标头。从Ubuntu How To's尝试以下示例:

mencoder -ovc copy -oac copy video1.avi video2.avi -o completevideos.avi 

0

不,这是不可能的,因为每个视频文件都有一个标头。要合并视频,您需要使用工具(例如ffmpegmencoder)。


9
不太正确。有些视频格式没有标题,例如rawvideo或yuv4mpegpipe输出原始数据。这就是为什么在读取这些格式时必须提供帧大小的原因,因为由于缺少标头,所以大小未知。
Marco

2
那我怎么成功地用DV文件呢?
Pithikos

1
@Pithikos不知道。也许你修炼法宝:)
BЈовић
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.