FFmpeg MKV in MP4 remux durante la conversione di tutte le tracce audio in AAC


3

Avevo un comando ffmpeg che avrebbe corretto con successo un mkv su un mp4 compatibile con iTunes. Tuttavia, è stato necessario solo il primo flusso audio indipendentemente dalla lingua. Voglio ricondurre tutti i flussi audio, o per lo meno il flusso inglese. Devo anche mantenere 5.1.

Ecco cosa ho finora:

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

Che genera il seguente errore:

Errore durante l'apertura dell'encoder per il flusso di output # 0: 1 - parametri forse errati come bit_rate, rate, width o height

Ecco l'output completo:

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

Sì, prova libfaac invece di libvo_aacenc e vedi se funziona. In caso contrario, per favore modificare la tua domanda e aggiungi quel codice pure. Si prega di includere il codice qui in loco, se possibile. Non ti preoccupare se è un po 'lungo.
— slhck

Ciao, grazie per i suggerimenti. Qui puoi trovare il comando completo non tagliato pastebin.com/RAraHr7h . In realtà non ho un file di esempio con più stream, speravo solo di farlo funzionare fino a che non succedesse su uno con cui testarlo.
— Simon Stevens

Hai provato libfaac anziché? Per quanto riguarda la mappatura di più stream su un output, FFmpeg dovrebbe farlo automaticamente, se non prova ad aggiungere -map 0 alle opzioni.
— slhck

Risposte:


4

[libvo_aacenc @ 037dfb00] Unable to set encoding parameters

libvo_aacenc probabilmente non può codificare i canali 5.1 ed è un codificatore scadente in generale. Puoi usare aac (con -strict experimental ), libfaac, o libfdk_aac (se il tuo ffmpeg è stato configurato per supportarlo) per preservare i tuoi canali. Se devi usare libvo_aacenc Puoi aggiungere -ac 2 oppure utilizzare un filtro audio per cambiare l'uscita su due canali.

Dichiarare una "qualità" per il tuo audio è probabilmente più semplice, ad esempio -q:a 100 per libfaac o -vbr 5 per libfdk_aac, altrimenti puoi scegliere il bitrate audio con -b:a, ma si noti che il bitrate sarà condiviso tra tutti i canali, quindi dargli un valore più alto di quello che si otterrebbe per un'uscita stereo. libvo_aacenc accetta solo -b:a.

Di default ffmpeg sceglierà il "migliore" flusso video, audio e sottotitoli dal tuo input, risultando in un output con potenzialmente un video, un flusso audio e un flusso sottotitoli. Inserisci -map 0, come menzionato da slhck, per sovrascrivere questo valore predefinito e includere tutti gli stream dall'input 0 (il primo input). Vedere selezione del flusso nella documentazione di ffmpeg per maggiori informazioni e una spiegazione del "migliore".

Vedi anche:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.