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


119

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

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


この質問をご覧ください。
Binarylife

2
これは特にそれと互換性のあるファイルに、サムスンのテレビで再生されませんのMatroskaファイルを変換するためのソリューションです
knocte

長年にわたり、私はこの非常に有用であることがわかりましたChromecastサポートH.264AACたりMP3してMP4コンテナ。ChromecastGoogle Cast拡張機能を備えたChromeを使用している場合は、コンピューターからビデオを簡単にストリーミングできます。MP4正しいストリームエンコーディングでブラウザウィンドウにドラッグアンドドロップして、ストリーミングを開始します。
セッポErviälä

回答:


164

おそらくそれのための最も簡単なツールはffmpeg、またはパッケージavconvからlibav-toolsです。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入力からすべてのストリームを選択する場合に追加します。

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


6
オーディオをAACにトランスコードし、ビデオをAVCのままにしますavconv -i input.mkv -c:v copy -c:a libfaac output.mp4((ffmpegを使用し、ここではavconvに同じコマンドライン引数があると仮定します)
-camh

@camh:あなたが言ったことは機能しますが、2つのことに注意してください:1)AVCか他のものかに関係なく、ビデオをそのままにします。2)オーディオをAACに変換するだけでなく、コンテナ形式をmkvからmp4に変換します
MestreLion

1
@AquariusPower:OPはストリームを再マップしたくないことに注意してください。彼はコンテナのみを変換し、すべてのストリームを保持したいのです。
メストレリオン

2
@AquariusPower:-map 0両方のオーディオストリームを簡単に取得しようとしましたか?私が答えで言ったように:「デフォルトのストリーム選択動作は、ストリームタイプごとに1つのストリームのみを選択することです」
-MestreLion

1
-c:s mov_textあなたが維持する必要がある場合などのオプションを使用します。srt字幕トラック。
セッポErviälä

25

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

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

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

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


1
これは字幕トラックで動作しますか?
Cyber​​Skull

11

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


魅力のように働いた。受け入れられた回答の後に同期の問題がありましたが、これにはありません。
モラ

非常にうまく動作します
-psychok7


-2

MPEG Part 14は、トランスコーディングなしでh.264とAC3をネイティブでサポートしているため、ファイルの名前を変更するだけで、.mp4拡張子ではなく.mkv拡張子が付けられます。


3
内部のコーデックをサポートするかもしれませんが、それはMatroskaを理解しないアプリケーションで動作するという意味ではありません。これは、アプリケーションがMatroskaをサポートし、拡張子ではなくマジックナンバーを調べる場合にのみ機能します。
アルダシー

ファイルの名前を変更してもコンテナ形式は変換されず、アプリケーション(およびユーザー)を混乱させる可能性があります。@ArdaXiが言ったように、アプリケーションはMatroskaをサポートする必要があります。
メストレリオン

-2

次のコードを端末に入力してPPAを追加することにより、HANDBRAKEを試すことができます。

sudo add-apt-repository ppa:stebbins/handbrake-releases

これはビデオトランスコーダーのようです。ビデオトラックは既にh.264形式であるため、再度圧縮したくありません。
セッポErviälä

1
Handbrakeは優れたトランスコーダーですが、ファイル形式の変換には使用しません。
サイバースカル

1
私は絶対にHandbreakが大好きですが、残念なことにオーディオ(および字幕)でのみロスレスに機能します。トランスコードせずにビデオをコピーする方法を見つけることができなかったため、OPはロスレスフォーマットの変換を具体的に要求しました。
メストレリオン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.