Что плохого в этой команде?
Я хочу преобразовать видео формата .avi в видео "video = h.264/.mp4, audio = .mp3" .

ffmpeg -i "C:\video.avi" -c:v libx264 -preset slow -qp 0 -pass 2 -c:a mp3 -b:a 192k "C:\video.mp4"

Выход :

ffmpeg version N-75550-g23acb98 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.3 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib
  libavutil      55.  2.100 / 55.  2.100
  libavcodec     57.  3.100 / 57.  3.100
  libavformat    57.  2.100 / 57.  2.100
  libavdevice    57.  0.100 / 57.  0.100
  libavfilter     6.  8.100 /  6.  8.100
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.100 /  2.  0.100
  libpostproc    54.  0.100 / 54.  0.100
Input #0, avi, from 'video.avi':
  Metadata:
    encoder         : VirtualDubMod 1.5.10.2 (build 2540/release)
  Duration: 00:24:39.31, start: 0.000000, bitrate: 1757 kb/s
    Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p, 1280x960 [SAR 1:1 DAR 4:3], 1491 kb/s, 23.98 fps, 23.98 tbr, 23.98 tbn, 47.95 tbc
    Stream #0:1: Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 256 kb/s
[libx264 @ 00000000050647a0] using SAR=1/1
[libx264 @ 00000000050647a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 00000000050647a0] constant rate-factor is incompatible with 2pass.
Output #0, mp4, to 'video.mp4':
  Metadata:
    encoder         : VirtualDubMod 1.5.10.2 (build 2540/release)
    Stream #0:0: Video: h264, none, q=2-31, 128 kb/s, SAR 1:1 DAR 0:0, 23.98 fps
    Metadata:
      encoder         : Lavc57.3.100 libx264
    Stream #0:1: Audio: mp3, 0 channels, 128 kb/s
    Metadata:
      encoder         : Lavc57.3.100 libmp3lame
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (ac3 (native) -> mp3 (libmp3lame))
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

1 ответ1

2

Error while opening encoder

Это сообщение указывает, какой выходной поток имеет проблему. В вашем случае это #0:0 которое, согласно выводу консоли, является видео.

Кроме того, когда вы получаете это сообщение, вы обычно можете прокрутить вверх, чтобы увидеть другое более конкретное сообщение об ошибке. В вашем выводе это:

[libx264 @ 00000000050647a0] constant rate-factor is incompatible with 2pass.

Причина

Ваша команда использует два метода управления скоростью: -qp и -b:v . Они являются взаимоисключающими, и -qp не совместим с 2pass.

Как исправить

  • Не используйте 2pass, или
  • Не используйте -qp или -crf с 2pass (если вы не знаете, что делаете)

2pass не означает лучшее качество. 2pass в основном используется, когда вы пытаетесь выводить данные с определенным ограничением размера файла.

Что вы просили

  1. «Я хочу перекодировать видео, сохраняя оригинальное качество»

Вы не можете сохранить "оригинальное качество" с кодером с потерями. Вам придется использовать настройки без потерь:

ffmpeg -i input -c:v libx264 -qp 0 output.mp4

Выходной файл будет огромным, но без потерь.

  1. «Не могли бы вы внести изменения в команду, чтобы перекодировать видео, чтобы максимально сохранить качество»

Значение -crf около 18 считается примерно "визуально без потерь". Это не технически без потерь, но, вероятно, будет зависеть от вашего вклада и того, как вы оцениваете качество.

ffmpeg -i input -c:v libx264 -crf 18 output.mp4
  1. "и конвертировать аудио поток в 192k .mp3"

Это можно интерпретировать двумя способами. Вы хотите аудио и видео вместе в одном выходе?

ffmpeg -i input -c:v libx264 -crf 18 -c:a libmp3lame -b:a 192k output.mp4

Или отдельно?

ffmpeg -i input -map 0:v -c:v libx264 -crf 18 video.mp4 -map 0:a -c:a libmp3lame -b:a 192k audio.mp3
  1. "В любом случае, не могли бы вы добавить пример aac вместе?"
ffmpeg -i input -c:v libx264 -crf 18 -c:a aac -strict experimental -b:a 192k output.mp4

Больше информации

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .