我可以以某种方式将这两个命令合并为一个命令吗?

我可以以某种方式将这两个命令合并为一个命令吗?

我有 MP4 格式的视频文件。我需要将它们转换为 MP2。但是,当它们超过 MP2 格式的某个文件大小时,我还需要将它们分割成较小的文件。

为此,我目前有两个命令:

转换命令

ffmpeg -i INPUTfile -codec:v mpeg2video -qscale:v 0 OUTPUTfile

切割命令(时间值仅供参考)

ffmpeg -ss 00:00:00.00 -i INPUTfile -to 00:10:00.00 -c copy -copyts OUTPUTfile

目前,我会转换视频文件,检查文件大小。如果太大,我会先将原始视频文件剪切,然后将“部分”转换为 MP2。

我是 ffmpeg 的新手,想知道是否可以将这两个命令合二为一。同样,我需要做的是转换 MP4 文件并将其剪切。如果我先转换然后再剪切,或者反过来,对我来说其实并不重要。

我需要多次运行剪切命令,因为我将以编程方式决定将文件剪切成多少个“部分”。但最终结果必须是 MP2,无论我最终得到多少个“部分”。

答案1

由于您的第二个命令正在进行时间分割,因此这是“合并”这些命令的最佳起点。

您应该能够简单地用-c copy -copyts第一个命令中的适当编解码器转换参数替换。这些参数基本上意味着“按原样复制流”,而其他时间参数则设置开始和停止点。因此,我们可以将第一个命令中的“复制流”更改为“转换视频”。

第一个命令中与 mp4 到 mp2 的转换相关的参数是-codec:v mpeg2video -qscale:v 0codec:v mpeg2video表示ffmpeg使用 mpeg2video 编码器,qscale0 表示“最佳质量”。

无论如何,快速换位可以让你

ffmpeg -ss 00:00:00.00 -i INPUTfile -to 00:10:00.00 -codec:v mpeg2video -qscale:v 0 OUTPUTfile

相关内容