尝试使用 avconv 将 MKV 转换为 MP4,失败

尝试使用 avconv 将 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

该文件是 h264 视频和 ac3 音频。

答案1

获取所需软件

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%

将音频和视频合并到 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无法正确检测视频 fps。根据使用情况,AC3音轨应在多路复用之前重新编码为其他内容。

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

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

答案2

我相信

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

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

答案3

我正在寻找将 mp4 与 m4a 混合的方法。通常ffmpeg 命令编码不起作用。试过 MP4Box 并且它非常有效。:-)

答案4

您可以使用winff-gtk2它解决了我的问题!安装:

安装 winff-gtk2

相关内容