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.