web-dev-qa-db-ja.com

.mkvファイルを.mp4ファイルに無損失に変換する方法

ビデオファイルをMatroskaコンテナからmp4コンテナに変換する必要があります。 Matroskaファイルには、1つのh.264ビデオトラックと1つのAC3サウンドトラックが含まれています。これをロスレスで実行することは可能ですが、ネイティブのUbuntuツールでそれを行う方法は?

トランスコーディングはオプションではありません。

120
Seppo Erviälä

そのための最も簡単なツールは、おそらくffmpeg、またはlibav-toolsパッケージのavconvです。 LibavはFFmpegのフォークであり、UbuntuはUbuntu 15.04まで数年間切り替えました。他の回答に記載されている多くのGUIツールのバックエンドの1つです。

コンテンツを再エンコードせずにコンテナを変更するのは簡単ではありません。

ffmpeg -i input.mkv -codec copy output.mp4
  • 入力/出力ファイル名に基づいて、MatroskaからMP4コンテナへの変換を自動検出します。

  • -codec copyストリームは、再エンコードせずに、入力から出力へのストリームをコピーまたは「再多重化」します。コピーアンドペーストのように考えてください。

  • デフォルトのストリーム選択動作では、ストリームタイプごとに1つのストリームのみが選択されます。たとえば、入力に2つのビデオストリームと1つのオーディオストリームがある場合、最大フレームサイズのビデオストリームのみが選択されます。入力からすべてのストリームを選択する場合は、-map 0を追加します。

  • 一部のコンテナは一部の形式をサポートしていない場合があります。したがって、選択したcontainer形式かどうかを確認してください。mkvmp4、またはaviでも、すべてのcontentがサポートされています。ファイル(ビデオ、オーディオ、字幕、データなど)。たとえば、mp4はSubRip字幕(.srtファイル)をサポートしていません。

163
MestreLion

必要なソフトウェアを入手する

Sudo apt-get install gpac mkvtoolnix

Matroskaファイルからビデオとオーディオを抽出する

まず、matroskaファイルに含まれるトラックを確認する必要があります

mkvmerge --identify video.mkv

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

次に、以下に従ってトラックに従ってビデオとオーディオを抽出します。

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オーディオとビデオをmp4コンテナーに

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

-fps 24がビデオfpsを正しく検出しなかったため、MP4Boxオプションを追加する必要がありました。使用状況に応じて、AC3オーディオトラックは、多重化する前に別の何かに再エンコードする必要があります。

これで、品質を損なうことなく、matroskaコンテナからmp4コンテナにストリームを再構成できました。

編集:MP4はAC3オーディオを公式にサポートしていないため、ファイルをVLC以外で再生できるようにするには、オーディオトラックをサポートされている形式(AAC、MP3など)に変換する必要があります。

25
Seppo Erviälä

Avidemuxを使用できます

GUIインターフェースが優れています。

Mkvからmp4に変換する場合、再エンコードされません。

変換は1分以内に行われます(60分のビデオの場合)。

  1. Sudo apt-get install avidemux

  2. Avidemuxでmkvファイルを開きます。

  3. プロンプトが表示されたらセーフモードを選択します。

  4. ビデオをコピーのままにします。

  5. [ファイル]-> [プロパティ]を選択します。オーディオコーデックがaacかどうかを確認します。

    1. オーディオコーデックがaacでない場合は、aac(faac)を選択します。
    2. それ以外の場合は、copyのままにします。 (このオプションを使用すると、オーディオが同期しなくなったり歪んだりする場合があります。その場合は、代わりにaac(faac)を選択してください。)
  6. 形式としてmp4を選択します。

  7. 保存を選択し、場所を選択して、拡張子として.mp4を使用してファイル名を入力します。

注:時々(〜10%の確率)失敗することがあります。次に、handbrake(re-encode)を使用します。

注2:役立つ2つのリンクがあります。

http://www.ubuntugeek.com/avidemux-free-video-editor-designed-for-simple-cutting-filtering-and-encoding-tasks.html

http://www.ubuntugeek.com/how-to-convert-mkv-file-into-mp4-file-using-avidemux.html

11
loksena

enter image description here

私のアプリケーション dmMediaConverter を使用できます。両方のストリームに対して「copy」をチェックし(トランスコードなし)、出力ファイル名に。mp4を置くだけです。それでおしまい。とても簡単です。 http://dmsimpleapps.blogspot.ro/2014/04/dmmediaconverter.html

2
mdalacu