如何从终端加入video文件?

我已经尝试了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 

猫问题是它没有显示错误但它总是不起作用。就像Sample.avi一样,complete.avi也是如此

Fmmpeg什么都不做。 complete.avi与Sample.avi始终相同

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

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

总而言之,所有complete.avi都与Sample.avi相同..而问题是他们没有相同的音频编解码器(我问)。任何想法?

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

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

 sudo apt-get install mencoder libxvidcore4 libmp3lame0 

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

 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 

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

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

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

使用此命令,您可以制作已加入的video文件。

我必须使用相同的编解码器加入三段video。 阅读以前的答案我设法做到了这一点:

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

比Openshot更快更简单!

首先我尝试了’-oac copy’选项,但似乎我的video中的音频编解码器不允许它。 我收到一条错误消息,建议’-oac pcm’。 pcm编解码器不是一个好的选择:结果文件非常大,其中2/3是未压缩的音频。

希望这可以帮助

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

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

我尝试使用Avidemux,但合并video中的声音有问题。

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

像许多其他人一样,我在合并video中正确同步声音时遇到了问题。 虽然如果剪辑具有相同的规格,MP4Box工作正常,在某些情况下我会被“找不到合适的目标轨道 – 创建新的目标轨道”打扰,在这种情况下Totem(akavideo)不会在连接文件中播放该段经过一些试验和错误以及进一步的研究后,我开发了以下方法来处理加入video的方法,这些方法迄今为止每次都以可接受(对我而言)的质量工作。

如果帧大小不匹配(加入与video轨道有关的错误):

通过为不匹配的段设置约束(可被8整除以实现最大编解码器兼容性)来标准化video而不中断音频(-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

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

规范化音频

处理音频而不中断video(c:v copy),以便所有剪辑与所需的编解码器,频率和比特率匹配c:a编解码器 – 频率如-ar 48000和比特率b:128k用于立体声(64K /频道似乎是一个很好的目标)或任何匹配。

示例: avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4 (注意libmp3lame是mp3音频的编解码器)您可以通过发出一个avconv支持的编码器列表命令avconv -codecs或缩小到特定的编码avconv -codecs|grep *codecname*例如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处理所有剪辑,无论规格是否匹配,以避免错误“找不到合适的目标轨道 – 创建新的目录轨道(键入video)”

注意:由于B帧作为参考,我发现Avidemux使用H.264 / AVC(每个图腾)文件编码的video存在问题。 即使选择在没有remux的情况下复制音频和video,这似乎也会导致音频在加入时不同步。 使用安全模式时,如果不选择安全模式并且不同步,则会崩溃

资料来源:

https://superuser.com/questions/547296/resizing-videos-with-ffmpeg-avconv-to-fit-into-static-sized-player

https://stackoverflow.com/questions/20703160/problems-with-setting-constant-bitrate-by-using-avconv

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

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

可选:如果需要,使用Handbrake将连接文件重新编码为较小尺寸,可变帧速率和25的恒定质量设置(建议设置 – 根据材料和质量要求进行调整)

你应该这样输入:

 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 

我能够使用VLC媒体播放器加入/合并多个video文件。 可以从Ubuntu软件下载VLC,也可以通过按Ctrl + Alt + T并键入以下内容从终端安装:

 sudo apt update sudo apt install vlc 

安装VLC后,打开包含video文件的文件夹中的终端,然后键入:

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

这将打开VLC GUI,您可以在文件加入/合并后关闭它。 你可以在这里找到更多信息。