Wie konvertiert man .mkv-Dateien verlustfrei in .mp4-Dateien?

102

Ich muss eine Videodatei vom Matroska-Container in einen mp4-Container konvertieren. Matroska-Datei enthält eine h.264-Videospur und eine AC3-Tonspur. Es sollte möglich sein, dies verlustfrei zu machen, aber wie macht man das mit nativen Ubuntu-Tools?

Transcodierung ist keine Option.

    
Seppo Erviälä 25.06.2011, 01:22
quelle

6 Antworten

134

Das vielleicht einfachste Tool dafür ist ffmpeg oder avconv aus dem libav-tools -Paket. Libav ist eine Gabel von FFmpeg, auf die Ubuntu für ein paar Jahre bis Ubuntu 15.04 wechselte. Es ist eines der Backends für viele der in anderen Antworten erwähnten GUI-Tools.

Das Ändern des Containers ohne erneutes Verbinden des Inhalts könnte nicht einfacher sein:

ffmpeg -i input.mkv -codec copy output.mp4
  • Es erkennt automatisch eine Umwandlung von Matroska in MP4-Container basierend auf Eingabe- / Ausgabedateinamen.

  • -codec copy stream kopiert oder re-muxt die Streams von der Eingabe zur Ausgabe ohne Neucodierung. Stellen Sie sich das wie ein Kopieren und Einfügen vor.

  • Das Standard-Stream-Auswahlverhalten besteht darin, nur einen Stream pro Stream-Typ auszuwählen. Wenn Ihre Eingabe beispielsweise zwei Videostreams und einen Audiostream enthält, wird nur der Videostream mit der größten Framegröße ausgewählt. Fügen Sie -map 0 hinzu, wenn Sie alle Streams von der Eingabe auswählen möchten.

  • Einige Container unterstützen möglicherweise einige Formate nicht. Überprüfen Sie also, ob Ihr gewähltes Container Format, sei es mkv , mp4 oder sogar avi , Unterstützung für alle Inhalte in Ihren Dateien (Video, Audio, Untertitel, Daten usw.). Zum Beispiel unterstützt mp4 keine SubRip-Untertitel ( .srt files).

MestreLion 02.10.2012, 01:59
quelle
24

Benötige Software

sudo apt-get install gpac mkvtoolnix

Extrahiere Video und Audio aus der Matroska-Datei

Zuerst müssen Sie überprüfen, welche Spuren die Matroska-Datei enthält mit

mkvmerge --identify video.mkv

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

Entpacken Sie dann Video und Audio entsprechend ihren Spuren mit:

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 und Video in mp4 container

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

Ich musste die Option -fps 24 hinzufügen, weil MP4Box Video-fps nicht korrekt erkannt hat. Abhängig von der Verwendung AC3 Audiospur sollte vor dem Muxing erneut in etwas anderes codiert werden.

Nun haben Sie Streams aus dem Matroska-Container in den mp4-Container remuxiert, ohne dabei an Qualität zu verlieren.

BEARBEITEN: MP4 unterstützt offiziell kein AC3-Audio, daher sollte die Audiospur in ein unterstütztes Format konvertiert werden (zB AAC, MP3), wenn die Datei mit etwas anderem als VLC abgespielt werden soll.

    
Seppo Erviälä 25.06.2011 13:03
quelle
12

Sie können Avidemux

verwenden

Es hat eine gute GUI-Schnittstelle.

Beim Konvertieren von mkv in mp4 wird es nicht neu codiert.

Die Umwandlung erfolgt innerhalb einer Minute (für ein 60-minütiges Video).

  1. sudo apt-get install avidemux

  2. Öffnen Sie die mkv-Datei in avidemux.

  3. Wählen Sie den abgesicherten Modus, wenn Sie dazu aufgefordert werden.

  4. Belassen Sie das Video als Kopie.

  5. Wählen Sie Datei- & gt; Eigenschaften. Überprüfen Sie, ob der Audiocodec aac ist.

    1. Wenn der Audio-Codec NICHT aac ist, wählen Sie aac(faac) .
    2. Ansonsten belassen Sie es als copy . (Manchmal verwendet diese Option das Audio nicht synchron oder verzerrt sein, wählen Sie in diesem Fall stattdessen aac(faac) .)
  6. Wählen Sie mp4 für das Format.

  7. Wählen Sie Speichern, wählen Sie einen Speicherort und geben Sie einen Dateinamen mit .mp4 als Erweiterung ein.

Hinweis: Manchmal (~ 10% Chance) kann es fehlschlagen. Dann benutze handbrake(re-encode) .

Anmerkung2: Es gibt zwei Links, die Ihnen helfen:

Pfandrecht

Pfandrecht

    
loksena 03.08.2012 18:43
quelle
2

Sie können meine Anwendung dmMediaConverter verwenden. Lassen Sie einfach " copy " für beide geprüften Streams (keine Transcodierung) und setzen Sie .mp4 auf den Namen der Ausgabedatei. Das ist es. Sehr einfach. Pfandrecht

    
mdalacu 21.06.2017 08:17
quelle
-2

Da MPEG Part 14 nativ h.264 und AC3 ohne Transcodierung unterstützt, können Sie die Datei einfach so umbenennen, dass sie eine .mp4 Erweiterung anstelle einer .mkv Erweiterung hat.

    
Richard 26.12.2013 16:21
quelle
-2

Sie können HANDBRAKE versuchen, indem Sie seinen PPA hinzufügen, indem Sie diesen Code in das Terminal eingeben:

sudo add-apt-repository ppa:stebbins/handbrake-releases
    
13east 25.06.2011 05:13
quelle