ffmpeg 在进行 2 遍编码时提示“ratecontrol_init:无法打开统计文件”

ffmpeg 在进行 2 遍编码时提示“ratecontrol_init:无法打开统计文件”

我正在运行以下命令,使用 ffmpeg 和 x264 进行两遍编码:

ffmpeg -t 5 -i Meridian.avi -filter:v scale=-2:240 -b:v 0.20M -passlogfile Meridian-240 -pass 1 -f null /dev/null
ffmpeg -t 5 -i Meridian.avi -filter:v scale=-2:240 -b:v 0.20M -passlogfile Meridian-240 -pass 2 Meridian-240.mp4

但是,当我运行第二条命令时,出现此错误:

ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 5.5.0 (Homebrew gcc 5.5.0_4)
  configuration: --prefix=/home/linuxbrew/.linuxbrew/Cellar/ffmpeg/4.1.3-with-options --enable-shared --enable-hardcoded-tables --cc=gcc-5 --host-cflags= --host-ldflags= --enable-gpl --enable-libaom --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --disable-libjack --disable-indev=jack --disable-htmlpages --enable-libvmaf --enable-version3
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Input #0, avi, from 'Meridian.avi':
  Metadata:
    encoder         : Lavf58.26.101
    timecode        : 00:00:17;12
  Duration: 00:01:00.00, start: 0.000000, bitrate: 887782 kb/s
    Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv420p, 3840x2160, 888395 kb/s, SAR 1:1 DAR 16:9, 24 fps, 24 tbr, 24 tbn, 24 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (ffv1 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x202f180] using SAR=640/639
[libx264 @ 0x202f180] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x202f180] ratecontrol_init: can't open stats file
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

因此基本上它的意思是:

ratecontrol_init:无法打开统计文件

这是为什么?

答案1

在第一次(和第二次,以确保安全)传递中指定编码器。

ffmpeg -t 5 -i Meridian.avi -filter:v scale=-2:240 -c:v libx264 -b:v 0.20M -passlogfile Meridian-240 -pass 1 -f null /dev/null

当未指定编码器时,ffmpeg 将选择输出格式的默认编码器。对于 null,它不是 x264 或任何实际编码器。因此不会进行第一遍。

没有必要指定高效的多路复用器,因为那些 CPU 周期都被浪费了。

相关内容