如何从终端加入视频文件?


9

我尝试过avidemux2_cli,mencoder,ffmpeg,cat.。但这并不总是有效(大多数情况下,错误是音频编解码器不相同),也许我在命令中输入了错误的选项。

所以命令:

cat Sample.avi rrr.avi > complete.avi
ffmpeg -i Sample.avi -i output.avi -vcodec copy -acodec copy complete.avi
mencoder -ovc lavc -oac copy Sample.avi rrr.avi -o complete.avi
avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi -append output.avi --save video.avi

令人毛骨悚然的问题是,它不会显示错误,但并不总是能正常工作。就像complete.avi与Sample.avi完全一样

Fmmpeg不执行任何操作。complete.avi与Sample.avi始终相同

Mencoder错误:-oac复制的所有文件都必须具有相同的音频编解码器和格式。所以complete.avi与Sample.avi相同

avidemux2_cli没有错误,但complete.avi与Sample.avi相同。

因此,总而言之,所有complete.avi与Sample.avi都是相同的。问题是它们没有相同的音频编解码器(我问了)。有什么想法吗?


1
我想,如果您想安全地合并两个视频,则需要将输入文件的视频编解码器和音频编解码器更改为相同的编解码器,
vine_user 2012年

我该怎么办?
Leon Vitanos

您可以将mencoder-ovc选项和-oac选项一起使用。请参阅:mplayerhq.hu/DOCS/HTML/en/menc-feat-selecting-codec.html
vine_user 2012年

Answers:


10

如果要安全地合并两个视频,则需要将输入文件的视频编解码器和音频编解码器更改为相同的编解码器。

例如,使用xvid(视频编解码器)和mp3lame(音频编解码器):

sudo apt-get install mencoder libxvidcore4 libmp3lame0

您可以通过以下命令对输入视频进行编码:

mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 first.avi -o video1.avi
mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 second.avi -o video2.avi

要与您的视频匹配,您可以更改“比特率”等选项(以及编解码器)。

如果编码的视频名称是“ video1.avi”和“ video2.avi”,并且输出的视频名称是“ joined-video.avi”,

mencoder -ovc copy -oac mp3lame video1.avi video2.avi -o joined-video.avi 

使用此命令,可以制作加入的视频文件。


2
只是以为我会强调该mencoder实用程序的名称是(即Media ENcoder)。很多人因不小心输入而陷入困境memcoder
2013年

框架尺寸也不必匹配吗?
极客老人2015年

4

我不得不用相同的编解码器加入三段视频。阅读以前的答案,我设法做到这一点:

mencoder -ovc copy -oac faac 01.mp4 02.mp4 03.mp4 -o output.mp4

比Openshot更快,更简单!

首先,我尝试了“ -oac复制”选项,但似乎视频中的音频编解码器不允许使用它。我收到一条错误消息,建议使用“ -oac pcm”。但是,pcm编解码器不是一个好的选择:生成的文件非常大,其中的2/3是未压缩的音频。

希望这可以帮助


2
使用gcc-4.7(C)2000-2012 MPlayer Team MPlayer构建的MEncoder svn r34540(Ubuntu)不使用libfaac进行编译。请参阅自述文件或DOCS。
Philippe Gachoud 2014年

1

我在这里找到的解决方案帮助我无损地加入了两个mp4文件:

sudo apt-get install gpac
MP4Box -cat part1.mp4 -cat part2.mp4 -new joinedfile.mp4

我尝试使用Avidemux,但合并的视频中出现声音问题。


1

您的文件无法正确加入,因为某些内容不匹配。

与其他许多人一样,我在合并视频中正确同步声音时遇到问题。而且,如果片段具有相同的规格,则MP4Box可以正常工作,但在某些情况下,我会被“找不到合适的目标音轨-创建新音轨”所困扰,在这种情况下,图腾(又称视频)将无法在加入的文件中播放该片段经过反复试验和进一步研究,我开发了以下方法来处理加入视频,到目前为止,这种方法每次都能以可接受的质量(对我而言)工作。

如果帧大小不匹配(与视频轨道有关的合并错误):

通过为不匹配的段设置约束(可被8整除,以获得最大的编解码器兼容性)来规范视频而不会破坏音频(-c:副本)

示例命令

width=856

height=480

avconv -i input.mp4 -filter:v "scale=iw*min($width/iw\,$height/ih):ih*min($width/iw\,$height/ih), pad=$width:$height:($width-iw*min($width/iw\,$height/ih))/2:($height-ih*min($width/iw\,$height/ih))/2" -c:a copy output.mp4

如果音频不匹配(与音轨有关的合并错误):

规范化音频

在不中断视频的情况下处理音频(c:v复制),以使所有剪辑均与所需的编解码器,频率和比特率匹配,其中c:a编解码器-ar频率(如-ar 48000),b-bit速率与立体声128k(每64k)渠道似乎是一个不错的目标)或任何匹配项。

示例:(avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4请注意,libmp3lame是mp3音频的编解码器)您可以通过发出命令avconv -codecs或将内容缩小为特定的编码avconv -codecs|grep *codecname*来获得avconv支持的编码器的列表。avconv -codecs|grep mp3

现在我们已经标准化了文件,我们可以加入它们了。在此示例中,我将使用MP4Box合并文件。如果没有它,可以通过发出以下命令来获取它sudo apt-get install gpac

使用命令将文件连接MP4Box file1.mp4 -cat file2.mp4 -cat file3.mp4 -cat file4.mp4 -out joinedfile.mp4(请注意,第一个文件之前没有cat,并且每个其他文件都以-cat开头,而目标文件以-out开头)

如果使用MP4Box(推荐用于MP4)加入,则可能会发现您必须使用avconv处理所有片段,无论规格是否匹配,以避免出现错误“找不到合适的目标音轨-创建新的音轨(视频类型)”。

注意:由于B帧作为参考,我发现Avidemux在使用H.264 / AVC(按图腾)文件编码的视频中存在问题。即使选择复制音频和视频而不进行复用,这似乎也会导致音频在加入时不同步。不选择安全模式时崩溃,使用安全模式时不同步

资料来源:

/superuser/547296/resizing-videos-with-ffmpeg-avconv-to-fit-into-static-sized-player

/programming/20703160/problems-with-setting-constant-bitrate-by-using-avconv

https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr

注意:据我所知,其他格式(容器)在匹配帧大小和音频速率方面也有类似的限制,因此,如果您在对video和audio进行规范化之后尝试通过cat或mencoder 进行加入,则这对于avi也适用。

可选:如果需要,可以使用Handbrake对合并的文件重新编码,以较小的大小,可变帧率和25的恒定质量设置(建议的设置–根据材料和质量期望进行调整)


1

您应该这样输入:

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output.avi --save video.avi

如果要附加更多文件:

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output1.avi --append output2.avi --append output3.avi --save video.avi

1

我能够使用VLC Media Player来加入/合并多个视频文件。可以从Ubuntu软件下载VLC,也可以通过按Ctrl+ Alt+ T并键入以下内容从终端安装VLC :

sudo apt update
sudo apt install vlc

安装VLC后,在包含视频文件的文件夹中打开一个终端,然后键入:

vlc InFile1.mp4 InFile2.mp4 --sout "#gather:std{access=file,dst=OutFile.mp4}" --sout-keep

这将打开VLC GUI,一旦文件被加入/合并,您就可以关闭它。您可以在此处找到更多信息。

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.