您的文件无法正确加入,因为某些内容不匹配。
与其他许多人一样,我在合并视频中正确同步声音时遇到问题。而且,如果片段具有相同的规格,则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的恒定质量设置(建议的设置–根据材料和质量期望进行调整)