如何将这两个 ffmpeg 命令合并为一个具有两个输出的命令?

如何将这两个 ffmpeg 命令合并为一个具有两个输出的命令?

我录制了一些电视连续剧,现在我想剪掉剧集前后的部分,删除角落标志并将其以原始大小保存为 mkv,并以缩小尺寸保存,以供我们的移动车载媒体播放器使用。

目前我使用这些命令来完成这项工作(并且这些命令工作得很好):

ComplexFilter="[0:v]trim=start=221.040:end=1660.800,setpts=PTS-STARTPTS[outv];[0:a]atrim=start=221.040:end=1660.800,asetpts=PTS-STARTPTS[outa];[outv]removelogo=mask_corner_logo.png[outv_delogo]"

ffmpeg -y -stats -loglevel warning -i "${SourceFile}" -filter_complex "${ComplexFilter}" -map "[outv_delogo]" -map "[outa]" -c:a libmp3lame -b:a "${AudioBitrate}" "${TargetFile}" </dev/null

ffmpeg -y -stats -loglevel warning -i "${SourceFile}" -filter_complex "${ComplexFilter};[outv_delogo]scale=480:270[outv_scaled]" -map "[outv_scaled]" -map "[outa]" -c:a libmp3lame -b:a 128k -vcodec mpeg4 -vtag xvid -qscale:v 5 "${AVITargetFile}" </dev/null

我非常确信可以用一个命令完成这两项工作。

有人可以帮我弄这个吗?

提前致谢,安迪

答案1

使用

ffmpeg -y -stats -loglevel warning -i "${SourceFile}" -filter_complex "${ComplexFilter};[outv_delogo]split=2[outv_delogo][outv_scaled];[outv_scaled]scale=480:270[outv_scaled];[outa]asplit=2[outa1][outa2]" -map "[outv_delogo]" -map "[outa1]" -c:a libmp3lame -b:a "${AudioBitrate}" "${TargetFile}" -map "[outv_scaled]" -map "[outa2]" -c:a libmp3lame -b:a 128k -vcodec mpeg4 -vtag xvid -qscale:v 5 "${AVITargetFile}" </dev/null

相关内容