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_aacenc
kann wahrscheinlich keine 5.1-Kanäle kodieren und ist im Allgemeinen ein schlechter Kodierer. Sie können aac
(mit -strict experimental
), libfaac
oder 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_aacenc
hinzufü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 100
für libfaac
oder -vbr 5
fü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_aacenc
Akzeptiert 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: