Android平台FFmpeg双视频并排拼接时长问题求助
解决FFmpeg双视频并排拼接时长取较短值的问题
我懂你现在的困扰——两个时长不一的视频并排拼接后,输出总是跟着长视频的时长走,而你想要对齐较短那个的时长。其实这个问题很好解决,只需要在你的滤镜链里加个小参数就行。
问题根源
FFmpeg默认会以输入流中最长的时长作为输出时长,所以35秒的视频会把整个输出拉到它的长度。我们需要明确告诉FFmpeg:当任意一个输入视频结束时,就停止输出。
修改后的命令片段
只需要在hstack滤镜中添加shortest=1参数,让它自动以较短的输入视频时长为准:
"-i","firsth.mp4","-i","second.mp4","-filter_complex","[0:v]scale=480:640,setsar=1[l];[1:v]scale=480:640,setsar=1[r];[l][r]hstack=shortest=1","-c:v","libx264","-crf","23","output.mp4"
补充说明
shortest=1是hstack的可选参数,作用是当任意一个输入视频流结束时,立即终止整个滤镜链的输出,这样输出时长就会自动匹配两个输入中较短的那个(也就是你的20秒)。- 如果你的视频包含音频,别忘了同步处理音频部分——比如对音频使用
amix滤镜并同样加上shortest=1参数,避免出现音频时长和视频不匹配的情况。
内容的提问来源于stack exchange,提问作者Nouh LC
相关产品推荐
相关产品推荐

