web-dev-qa-db-ja.com

avconvでMKVをMP4に変換しようとして失敗しました

PS3と互換性があるように、MKVファイルをMP4に変換しようとしています。私は使用しています:avconv -i file.mkv -c copy file.mp4

失敗し、次のエラーが表示されます。

[mp4 @ 0x8a17c00] pts < dts in stream 0 av_interleaved_write_frame(): Invalid argument

ファイルは、h264ビデオとac3オーディオです。

私は信じている

avconv -i file.mkv -c:v copy -c:a copy file.mp4

正しいコマンドです。個別にコピーするストリームのコーデックコピープロパティを指定する必要があります。

2
ixtmixilix

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

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など)に変換する必要があります。

4
stampede

私はm4aと一緒にmp4を多重化することを探していました。エンコードのための通常のffmpegcommands は機能しませんでした。 :-)

0
kkdeep