我能以某种方式将这两个命令组合成一个吗?


1

我有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中,无论我最终有多少'部分'。


如果使用常量或平均比特率编码器,则文件大小是时间的函数,因此您可以设置比特率上限然后根据时间进行分割。如果您使用基于质量的可变比特率,则很难准确定义特定文件大小的时间长度。
Mokubai

对不起,如果不清楚,但我事先知道时间。我知道我想在0到30分钟内切割。我想知道的是切割和转换一次命令中的切割文件,如果这是一个选项。
罗宾

1
怎么样ffmpeg -ss 00:00:00.00 -i INPUTfile -to 00:10:00.00 -codec:v mpeg2video -qscale:v 0 OUTPUTfile?只是一个猜测,而不是我现在可以检查的电脑。
Mokubai

这似乎工作!如果你不介意我问,你能解释一下为什么它有效吗?
罗宾

Answers:


1

当你的第二个命令正在进行时间分割时,这是开始“合并”这些命令的最佳位置。

您应该只需使用-c copy -copyts第一个命令中的相应编解码器转换参数替换它。这些参数基本上意味着“只是按原样复制流”,而其他时间参数设置起点和终点。因此,我们可以从您的第一个命令更改“复制流”以“转换视频”。

第一个命令中与mp4到mp2的转换相关的参数是-codec:v mpeg2video -qscale:v 0。该codec:v mpeg2video告诉ffmpeg使用mpeg2video编码器和qscale为0是指“质量最好”。

无论如何,快速换位给你

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


谢谢!这完美地工作,我理解为什么现在也好:)
罗宾
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.