尝试使用av​​conv将MKV转换为MP4,失败

我正在尝试将MKV文件转换为MP4以与我的PS3兼容。 我正在使用: avconv -i file.mkv -c copy file.mp4

它失败了,我收到以下错误:

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

该文件是h264video和ac3音频。

我相信

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

是正确的命令。 您需要为要单独复制的流指定编解码器复制属性。

获得所需的软件

 sudo apt-get install gpac mkvtoolnix 

从matroska文件中提取video和音频

首先,您需要检查matroska文件包含的跟踪内容

mkvmerge --identify video.mkv

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

然后根据他们的曲目提取video和音频:

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音频和video转换成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选项,因为MP4Box没有正确检测videofps。 根据使用情况, AC3音频轨道应在多路复用之前重新编码为其他内容。

现在,您已经将matroska容器中的流重新混合到mp4容器中,而不会丢失任何质量。

编辑:MP4不正式支持AC3音频,因此如果您希望文件可以使用除VLC以外的其他内容,则应将音轨转换为支持的格式(例如AAC,MP3)。

我一直在寻找muxing mp4和m4a。 通常用于编码的ffmpeg 命令没有用.Tried MP4Box&它就像一个魅力。 🙂