ffmpeg不用dvd格式调整视频大小

时间:2016-03-11 15:16:20

标签: audio video ffmpeg

我有一个视频和一个音频文件。我正在尝试加入它们并剪切一段视频,它正在运行:

ffmpeg -ss 0:0:1.950 -i "video.avi" -ss 0:0:1.950 -i "audio.mp3" -target pal-dvd -bufsize 9175040 -muxrate 50400000 -acodec ac3 -ac 2 -ab 128k -ar 44100 -t 0:0:5.997 -y "output.mpg"

问题是当我尝试使用-vf过滤器调整视频大小时,例如:

ffmpeg -ss 0:0:1.950 -i "video.avi" -ss 0:0:1.950 -i "audio.mp3" -vf scale="1024:420" -target pal-dvd -bufsize 9175040 -muxrate 50400000 -acodec ac3 -ac 2 -ab 128k -ar 44100 -t 0:0:5.997 -y "output.mpg"

由于参数-target pal-dvd,它不起作用。如果我删除此参数,视频会调整大小但不保持我想要的质量。

2 个答案:

答案 0 :(得分:1)

-target pal-dvd等于-c:v mpeg2video -c:a ac3 -f dvd -s 720x576 -r 25 -pix_fmt yuv420p -g 15 -b:v 6000000 -maxrate:v 9000000 -minrate:v 0 -bufsize:v 1835008 -packetsize 2048 -muxrate 10080000 -b:a 448000 -ar 48000。您的其他选项会覆盖这些默认值,因此您可以直接使用这些选项并删除-s 720x576并使用您自己的大小。

答案 1 :(得分:0)

我不确定您为什么要调整大小到1024x420,然后使用-target pal-dvd,但此选项意味着其他选项。来自ffmpeg_opt.c

} else if (!strcmp(arg, "dvd")) {

    opt_video_codec(o, "c:v", "mpeg2video");
    opt_audio_codec(o, "c:a", "ac3");
    parse_option(o, "f", "dvd", options);

    parse_option(o, "s", norm == PAL ? "720x576" : "720x480", options);
    parse_option(o, "r", frame_rates[norm], options);
    parse_option(o, "pix_fmt", "yuv420p", options);
    opt_default(NULL, "g", norm == PAL ? "15" : "18");

    opt_default(NULL, "b:v", "6000000");
    opt_default(NULL, "maxrate:v", "9000000");
    opt_default(NULL, "minrate:v", "0"); // 1500000;
    opt_default(NULL, "bufsize:v", "1835008"); // 224*1024*8;

    opt_default(NULL, "packetsize", "2048");  // from www.mpucoder.com: DVD sectors contain 2048 bytes of data, this is also the size of one pack.
    opt_default(NULL, "muxrate", "10080000"); // from mplex project: data_rate = 1260000. mux_rate = data_rate * 8

    opt_default(NULL, "b:a", "448000");
    parse_option(o, "ar", "48000", options);

此外,期权安排很重要。如果您要调整的大小,请使用-target,然后在-target之后放置过滤。请注意,这可能会重新调整两次。

或省略-target并手动声明每个选项并将其修改为所需的规格。