【问题标题】:ffmpeg not resize video with dvd formatffmpeg 无法调整 dvd 格式的视频大小
【发布时间】:2023-03-11 14:17:01
【问题描述】:

我有一个视频和一个音频文件。我正在尝试加入他们并切片一段视频,它正在工作:

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,它不起作用。如果我删除此参数,视频会调整大小但不会保持我想要的质量。

【问题讨论】:

    标签: audio video ffmpeg


    【解决方案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 并改用您自己的尺寸。

    【讨论】:

      【解决方案2】:

      我不确定您为什么要将大小调整为 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 并手动声明每个选项并将它们修改为您想要的规范。

      【讨论】:

        猜你喜欢
        • 2015-07-03
        • 2021-11-10
        • 1970-01-01
        • 2019-09-04
        • 2021-03-04
        • 1970-01-01
        • 2019-04-28
        • 1970-01-01
        • 2018-10-04
        相关资源
        最近更新 更多