Come convertire i video MKV in video MP4 lossless compatibili con dispositivi iOS su Windows?


10

Sono nuovo di FFmpeg (Windows) e ho bisogno di aiuto.

Voglio convertire i miei MKV in MP4 con la minima perdita di qualità possibile. I MKV sono realizzati con MakeMKV e contengono, tra gli altri, la colonna sonora DTS. Sono senza perdita di dati. Il motivo per cui voglio convertire è che ho intenzione di trasmetterlo in streaming su iPad e Apple TV. Gli iPad non supportano DTS e MKV. I MKV sono sia DVD che Blu-Ray. I MKV contengono video, colonne sonore e sottotitoli.

Ho provato questo, ma non ottengo alcun suono grazie alla colonna sonora DTS:

ffmpeg -i input.mkv -c:v copy -c:a copy output.mp4

Qualcuno può aiutarmi?

Quali codec dovrei usare? MP4 è il migliore per Apple?


1
Ci sono versioni specifiche di iPad e Apple TV che stai prendendo di mira o vuoi supportarle tutte?
Llogan,

2
Nota: MP4 non è un codec. È solo un formato di file (un "contenitore").
Slhck,

Ho l'ultimo iPod Air. Ho la nuovissima Apple TV. So che MP4 è un contenitore e non un codec :)
Striky

Includi alcune informazioni su uno dei tuoi input tipici. L'output completo della console di ffmpeg -i input.mkvsarà sufficiente.
llogan,

Ho provato ffmpeg -i input.mkv -c: v copy -c: a copy output.mp4 Questo ha funzionato ma non ha suono poiché apple non riproduce DTS. Ho anche provato ffmpeg -i input.mkv -strict sperimentale -c: v copy -c: a aac -b: a 192k -q: a 6 output.mp4 ma il film (sia video che audio) non stava andando liscio sul mio iPad Air (sia in streaming che scaricato).
Striky

Risposte:


22

MP4 è davvero il miglior formato per dispositivi e software Apple. DTS non è inoltre supportato, molti file video MP4 contengono due tracce audio, un DTS e un AAC.

Sono disponibili più codificatori, tutti documentati sul wiki di ffmpeg . Quale codec è disponibile dipende da come è stato compilato ffmpeg. libfdk_aac ti darà i migliori risultati, ma poiché questo codec non è gratuito non è sempre disponibile.

Cose che puoi provare (le metto nell'ordine della mia qualità percepita, la migliore prima)

ffmpeg -i input.mkv -c:v copy -c:a libfdk_aac -b:a 128k output.mp4
ffmpeg -i input.mkv -strict experimental -c:v copy -c:a aac -b:a 192k output.mp4
ffmpeg -i input.mkv -c:v copy -c:a libfaac -b:a 192k output.mp4

Se vuoi conservare anche la traccia DTS, usa il -mapflag.

Non direttamente utile per OP, ma il subler del programma OS X rende questo processo molto semplice.

EDIT: Commenti tl; dr? OP risolto problema con il seguente comando

ffmpeg -i input.mkv -strict experimental -map 0:0 -map 0:1 -map 0:2 -map 0:3 -c:v copy -c:a aac -b:a 384 -c:s copy output.mp4

SUGGERIMENTO: se -c:s copyper i sottotitoli non funziona, provare -c:s mov_text.
Mi ha salvato in più occasioni.


Non credo che la modalità VBR dell'encoder AAC interno funzioni come previsto. L'ultima volta che ho controllato era rotto. Meglio andare con CBR e usare VBR per gli altri codificatori ( libfdke libfaac)
slhck

Ho anche letto che libfdk_aac darà il miglior risultato. Ho scaricato la versione statica a 32 bit per Windows (git-9722a6a (2014-05-24)). Come posso verificare se ho il codec libfdk? Modifica: ottengo l'encoder sconosciuto 'libfdk_aac'. Dove posso scaricarlo o esiste un codec audio altrettanto buono?
Striky

Ho provato sia ffmpeg -i input.mkv -c: v copy -c: a libfdk_aac -b: un output 128k.mp4 e ffmpeg -i input.mkv -c: v copy -c: a libfaac -b: un output 192k .mp4 No go :(
Striky

@Striky "No go :(" Ho provato l'ultimo comando con una nuova ffmpeg di Homebrew, funziona per me. Puoi fornire maggiori dettagli sul perché non funziona per te?
jornane,

@slhck: ho appena provato le -c:a aac -q:a 6impostazioni e ho confrontato il risultato con -c:a libfaac -b:a 192k, a mio avviso, il codec aac offre risultati migliori rispetto a libfaac , ma poiché i codec sono in fase di sviluppo, questo potrebbe cambiare. libfdk_aac probabilmente darà risultati ancora migliori, ma non l'ho disponibile al momento.
jornane,

0

So che questa è una vecchia domanda - e ha già una risposta - ma volevo condividere alcuni comandi che sto usando con FFmpeg su macOS.

Un video MP4 codificato x264 con audio AAC da un MKV

Conversione di base di un MKV con un MP4 al suo interno ma conversione dell'audio in CAA a 128k. Nota le mappature: -map 0:0indica la prima 0traccia ( ) dall'input sorgente ( 0) e -map 0:1la seconda 1traccia ( ) dallo stesso input sorgente ( 0). Mi piace farlo nei casi in cui ci sono più tracce audio in modo da poter fare qualcosa come selezionare -map 0:3per ottenere la terza traccia.

ffmpeg -i input.mkv \
       -c:v copy \
       -c:a aac -b:a 128k \
       -map 0:0 -map 0:1 \
       output.mp4 \
       ;

Un video MP4 codificato HEVC / x265 con audio AAC da un MKV

Questo è simile al precedente comando x264, ma utilizza invece HEVC / x265 per ottenere una dimensione di file più piccola con lo stesso - se non migliore qualità - video dal MKV di origine. Si noti che preferisco ridimensionare i video iOS su 720 quando si utilizza HEVC / x265; la qualità per la riproduzione senza troppo rumore è solida sul mio MacBook, iPad e iPhone. Assicurati solo che l'hardware e il sistema operativo supportino la riproduzione HEVC / x265. E attenzione: HEVC / x265 richiede molta CPU, quindi se la tua macchina non ha molta potenza della CPU può richiedere fino a un giorno circa per codificare 90 minuti di video.

ffmpeg -i input.mkv \
       -vf scale=-1:720 \
       -c:v libx265 -crf 20 \
       -c:a aac -b:a 128k \
       -threads 4 \
       -tag:v hvc1 \
       -map 0:0 -map 0:1 \
       output.mp4 \
       ;

Ecco una ripartizione di ciascuno dei parametri principali diversi dai file di input e output.

  • -vf scale=-1:720: Ridimensiona il video all'altezza di 720 e calcola automaticamente la larghezza. Si noti che FFmpeg potrebbe soffocare alcuni MKV per ragioni che non sono al 100% chiaro su così si dovrebbe impostare in modo esplicito la larghezza con qualcosa di simile: -vf scale=1280:720. Sperimenta e vedi cosa funziona per te.
  • -c:v libx265 -crf 20: libx265È il codec di codifica video. Il -crf 20è il CRF (fattore di velocità costante) . Il CRF predefinito se non lo specifichi è 28, ma - per ora - trova la qualità praticamente ... Meh. Preferisco 20 poiché è un ottimo equilibrio tra qualità e dimensione del file.
  • -threads 4: Mi piace specificare il numero di thread. 4 è ciò che il mio sistema può gestire ora, ma a volte lo crollo fino a 2 o 3. Il numero più alto è più veloce se hai abbastanza CPU per gestirlo.
  • -tag:v hvc1: Le impostazioni dei metadati magici da mettere in atto per i dispositivi iOS per riprodurre correttamente i video HEVC / x265.

E questo è tutto!

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.