Come convertire file .mkv in file .mp4 senza perdita di dati?

106

Ho bisogno di convertire un file video dal contenitore Matroska nel contenitore mp4. Il file Matroska contiene una traccia video h.264 e una traccia audio AC3. Dovrebbe essere possibile farlo senza perdita di dati, ma come farlo con gli strumenti nativi di Ubuntu?

La transcodifica non è un'opzione.

    
posta Seppo Erviälä 25.06.2011 - 01:22
fonte

6 risposte

139

Forse lo strumento più semplice è ffmpeg o avconv dal pacchetto libav-tools . Libav è un fork di FFmpeg, su cui Ubuntu è passato per alcuni anni fino a Ubuntu 15.04. È uno dei backend per molti degli strumenti della GUI citati in altre risposte.

Cambiare contenitore senza ricodificare il contenuto non potrebbe essere più semplice:

ffmpeg -i input.mkv -codec copy output.mp4
  • Rileva automaticamente una conversione del contenitore da Matroska a MP4 in base ai nomi dei file di input / output.

  • -codec copy copie di stream, o "re-muxes", i flussi dall'input all'output senza ricodifica. Pensala come una copia e incolla.

  • Il comportamento di selezione del flusso predefinito consiste nel selezionare un solo flusso per tipo di stream. Ad esempio, se l'input ha due stream video e un flusso audio, verrà selezionato solo lo stream video con la dimensione massima del frame. Aggiungi -map 0 se desideri selezionare tutti i flussi dall'input.

  • Alcuni contenitori potrebbero non supportare alcuni formati. Verifica quindi se il formato contenitore scelto, sia mkv , mp4 o anche avi ha il supporto per tutti i contenuti nei tuoi file (video, audio, sottotitoli, dati, ecc.). Ad esempio, mp4 non supporta i sottotitoli SubRit (file .srt ).

risposta data MestreLion 02.10.2012 - 01:59
fonte
24

Ottieni il software necessario

sudo apt-get install gpac mkvtoolnix

Estrai video e audio dal file matroska

Per prima cosa devi controllare quali tracce contiene il file matroska con

mkvmerge --identify video.mkv

File 'video.mkv': container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_AC3)

Quindi estrai video e audio in base alle loro tracce con:

mkvextract tracks video.mkv 1:video.h264 2:audio.ac3

Extracting track 1 with the CodecID 'V_MPEG4/ISO/AVC' to the file 'video.h264'. Container format: AVC/h.264 elementary stream
Extracting track 2 with the CodecID 'A_AC3' to the file 'audio.ac3'. Container format: Dolby Digital (AC3)
Progress: 100%

Mux audio e video in mp4 containter

MP4Box -fps 24 -add video.h264 -add audio.ac3 video.mp4

AVC-H264 import - frame size 1280 x 720 at 24.000 FPS
Import results: 31671 samples - Slices: 5672 I 125048 P 122648 B - 32288 SEI - 4936 IDR
AC3 import - sample rate 48000 - 6 channels
Saving to video.mp4: 0.500 secs Interleaving

Ho dovuto aggiungere l'opzione -fps 24 perché MP4Box non ha rilevato correttamente i video fps. A seconda dell'utilizzo, la traccia audio AC3 deve essere ricodificata in qualcos'altro prima del muxing.

Ora hai recuperato flussi da contenitore matroska in contenitore mp4 senza perdere qualità.

EDIT: MP4 non supporta ufficialmente l'audio AC3, quindi la traccia audio deve essere convertita in un formato supportato (ad esempio AAC, MP3) se si desidera che il file sia riproducibile con qualcos'altro oltre a VLC.

    
risposta data Seppo Erviälä 25.06.2011 - 13:03
fonte
12

Puoi usare Avidemux

Ha una buona interfaccia grafica.

Durante la conversione da mkv a mp4 non viene ricodificato.

La conversione avviene entro un minuto (per un video di 60 minuti).

  1. sudo apt-get install avidemux

  2. Apri il file mkv in avidemux.

  3. Seleziona la modalità provvisoria, se richiesta.

  4. Lascia il video come copia.

  5. Scegli File- & gt; Proprietà. Verifica se il codec audio è aac .

    1. Se il codec audio NON è aac, seleziona aac(faac) .
    2. Altrimenti, lascia come copy . (A volte usando questa opzione l'audio potrebbe essere fuori sincrono o distorto, in tal caso selezionare aac(faac) invece.)
  6. Seleziona mp4 per il formato.

  7. Seleziona salva, scegli posizione e digita un nome file con .mp4 come estensione.

Nota: a volte (~ 10% di probabilità) potrebbe non riuscire. Quindi usa handbrake(re-encode) .

Nota2: ci sono due link che ti aiutano:

link

link

    
risposta data loksena 03.08.2012 - 18:43
fonte
2

Puoiusarelamiaapplicazione, dmMediaConverter . Lascia " copia " per entrambi gli stream selezionati (senza transcodifica) e metti .mp4 sul nome del file di output. Questo è tutto. Molto semplice. link

    
risposta data mdalacu 21.06.2017 - 08:17
fonte
-2

Poiché MPEG Part 14 supporta h.264 e AC3 in modo nativo senza transcodifica, puoi semplicemente rinominare il file in modo che abbia un'estensione .mp4 invece di un'estensione .mkv .

    
risposta data Richard 26.12.2013 - 16:21
fonte
-2

Puoi provare HANDBRAKE aggiungendo il suo PPA digitando questo codice nel terminale:

sudo add-apt-repository ppa:stebbins/handbrake-releases
    
risposta data 13east 25.06.2011 - 05:13
fonte

Leggi altre domande sui tag