FFmpeg MKV zu MP4 remuxen und dabei alle Audiospuren in AAC konvertieren

FFmpeg MKV zu MP4 remuxen und dabei alle Audiospuren in AAC konvertieren

Ich hatte einen ffmpeg-Befehl, der eine MKV-Datei erfolgreich in eine iTunes-kompatible MP4-Datei remuxte. Allerdings hat er unabhängig von der Sprache nur den ersten Audiostream remuxen können. Ich möchte alle Audiostreams remuxen, oder zumindest den englischen Stream. Außerdem muss ich 5.1 beibehalten.

Folgendes habe ich bisher:

ffmpeg -i "input.mkv" -y -f mp4 -vcodec copy -acodec libvo_aacenc -ac 6 "output.mp4"

Das führt zu folgendem Fehler:

Fehler beim Öffnen des Encoders für Ausgabestream #0:1 – möglicherweise falsche Parameter wie Bitrate, Rate, Breite oder Höhe

Hier ist die vollständige Ausgabe:

C:\Program Files\ffmpeg\bin>"C:\Program Files\ffmpeg\bin\ffmpeg.exe" -i "E:\movies\A film.mkv" -y -f mp4 -vcodec copy -acodec libvo_aacenc -ac 6 "E:\iTunes\Automatically Add to iTunes\A film.mp4"
ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
  built on Nov 25 2012 12:21:26 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-pthreads --enable-runtime-cpudetect --enab
le-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libop
encore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libop
enjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheo
ra --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-lib
vpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52.  9.100 / 52.  9.100
  libavcodec     54. 77.100 / 54. 77.100
  libavformat    54. 37.100 / 54. 37.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 23.102 /  3. 23.102
  libswscale      2.  1.102 /  2.  1.102
  libswresample   0. 17.101 /  0. 17.101
  libpostproc    52.  2.100 / 52.  2.100
Input #0, matroska,webm, from 'E:\movies\Pitch Perfect.mkv':
  Duration: 01:52:07.11, start: 0.000000, bitrate: 9765 kb/s
    Stream #0:0(eng): Video: h264 (High), yuv420p, 1920x1040, SAR 1:1 DAR 24:13, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Stream #0:1(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
    Stream #0:2(eng): Subtitle: subrip
[libvo_aacenc @ 037dfb00] Unable to set encoding parameters
Output #0, mp4, to 'E:\iTunes\Automatically Add to iTunes\Pitch Perfect.mp4':
    Stream #0:0(eng): Video: h264, yuv420p, 1920x1040 [SAR 1:1 DAR 24:13], q=2-31, 23.98fps, 90k tbn, 1k tbc (default)
    Stream #0:1(eng): Audio: aac, 48000 Hz, 5.1, s16, 128 kb/s (default)
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (dca -> libvo_aacenc)
Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height

Antwort1

[libvo_aacenc @ 037dfb00] Unable to set encoding parameters

libvo_aacenckann wahrscheinlich keine 5.1-Kanäle kodieren und ist im Allgemeinen ein schlechter Kodierer. Sie können aac(mit -strict experimental), libfaacoder libfdk_aac(wenn Ihr ffmpeg so konfiguriert wurde, dass es dies unterstützt) verwenden, um Ihre Kanäle beizubehalten. Wenn Sie verwenden müssen, können Sie einen Audiofilter libvo_aacenchinzufügen oder verwenden, um die Ausgabe auf zwei Kanäle zu ändern.-ac 2

Am einfachsten ist es wahrscheinlich, eine „Qualität“ für Ihr Audio anzugeben, z. B. -q:a 100für libfaacoder -vbr 5für libfdk_aac. Andernfalls können Sie die Audio-Bitrate mit auswählen -b:a. Beachten Sie jedoch, dass die Bitrate von allen Kanälen gemeinsam genutzt wird. Geben Sie daher einen höheren Wert ein, als Sie es für eine Stereoausgabe tun würden. libvo_aacencAkzeptiert nur -b:a.

Standardmäßig wählt ffmpeg den „besten“ Video-, Audio- und Untertitel-Stream aus Ihrem Input, was zu einem Output mit potenziell einem Video-, einem Audio- und einem Untertitel-Stream führt. Fügen Sie hinzu -map 0, wie slhck erwähnte, um diese Vorgabe zu überschreiben und alle Streams vom Input 0(dem ersten Input) einzuschließen. SieheStreamauswahlWeitere Informationen und eine Erklärung von „am besten“ finden Sie in der ffmpeg-Dokumentation.

Siehe auch:

verwandte Informationen