FFmpeg - Erro ao abrir o codificador para o fluxo de saída # 0: 0

0

O que há de errado com esse comando?
Quero converter um vídeo em formato .avi para "video = h.264 / .mp4, áudio = .mp3" vídeo.

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

Saída:

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
    
por Happy Face 26.10.2015 / 09:36

1 resposta

2

Error while opening encoder

Esta mensagem indica qual fluxo de saída está tendo um problema. No seu caso, é #0:0 que, de acordo com a saída do console, é o vídeo.

Além disso, quando você recebe essa mensagem, normalmente você pode rolar para cima para ver outra mensagem de erro mais específica. Na sua saída é:

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

A causa

Seu comando está usando dois métodos de controle de taxa: -qp e -b:v . Estes são mutuamente exclusivos, e -qp não é compatível com 2pass.

Como corrigir

  • Não use 2pass ou
  • Não use -qp ou -crf com 2pass (a menos que você saiba o que está fazendo)

2pass não significa melhor qualidade. 2pass é usado principalmente quando você está tentando produzir dentro de uma limitação específica de tamanho de arquivo.

O que você pediu

  1. "What I want is to re-encode the video that keep the original quality"

Você não pode manter a "qualidade original" com um codificador com perdas. Você terá que usar configurações sem perdas:

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

O arquivo de saída será enorme, mas sem perdas.

  1. "Could you make changes on the command to re-encode the video that keep quality as much as possible"

Um valor de -crf de cerca de 18 é considerado aproximadamente "visualmente sem perdas". Não é tecnicamente sem perdas, mas provavelmente parecerá ser assim dependendo de sua entrada e de como você vê a qualidade.

ffmpeg -i input -c:v libx264 -crf 18 output.mp4
  1. "and convert the audio stream to 192k .mp3"

Isso pode ser interpretado de duas maneiras. Você quer o áudio e o vídeo juntos em uma saída?

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

Ou separado?

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. "Anyway, could you pls add a aac example together?"
ffmpeg -i input -c:v libx264 -crf 18 -c:a aac -strict experimental -b:a 192k output.mp4

Mais informações

por 26.10.2015 / 18:18