mkv 转 mp4

说明

1. 两种都是容器格式,mkv 常见于 0Day 各种高清视频资源的封装,之所以要转是因为 iOS 原生不支持 mkv(话说也没什么操作系统会原生支持吧),这样除了可以直接用 iOS 直接播放(当然,容器内的音视频编码格式也要是 iOS 能支持的),还能在用第三方的播放器应用比如 AVPlayerHD 播放的时候,利用到设备的硬件解码能力。
2. 高清 mkv 中的视频流一般是用 h.264 编码的(开源的应该叫 x264 吧),后者在 iOS 上原生支持,所以最好能在转移过程中不对其重新编码,也就是说主要是封装格式的转换(remux),不然耗费的时间就不值得了。而音频流很可能是 ac3,需要转换成 aac 才能放到 mp4 里头,还好,这个操作需要的时间相对比较短。

步骤

1. 分离 mkv 内的音视频流(demux),两种方法都可以:
1) mkvextract,命令格式类似:mkvextract.exe tracks src.mkv 1:v.264 2:a.ac3
2) tsMuxeR,有 GUI 就不需要解释了。

2. ac3 转 aac,也尝试了两种方法:
1) ffmpeg,命令行有点麻烦,而且一直没试验成功,各种看不太懂的错误信息。。。
2) eac3to + NeroAACCodec
将后者解压后得到的 neroAacEnc.exe 复制到 eac3to 的目录下,到时候要用这个来编码。
命令格式类似:eac3to.exe a.ac3 a.mp4
我在笔记本上转移了一个 50M 的 ac3 文件,大约耗时 2 分钟。

3. 合成 mp4(mux),继续尝试:
1) ffmpeg,继续失败。。。
2) mp4box,命令格式类似:MP4Box.exe -add v.264 -add a.mp4 -new final.mp4
3) My MP4Box GUI,又有 GUI 了。

后记

1. 大概是因为 iPad2 的双核处理器比较强悍,AVPlayerHD 直接就可以流畅播放较高码率的 720p mkv 视频,那看来前面都白搞了。。。拿了一集 TBBT 做样本,转换前后的差别仅在两倍速播放的时候才能看出来:)
2. 之前一直用 Handbrake 将相机拍摄的视频从 .mov 格式转换成 1/3-1/4 大小的 .mkv 格式,但在 Win7/Vista 上需要借助第三方软件才能实现 .mkv 格式文件的预览,如果转成 .mp4 格式应该可以直接预览,反正这些 .mkv 里头都已经是标准的 h.264 和 aac,转换起来也快,只是需要写一个小工具来批量处理,不然上千个文件。。。:)
3. 从网上看到,Mac 平台可以用 QuickTime Pro 配合 Perian 来完成这个转换,不过更方便省钱应该是用 MKVTools:)

后记 @111205

1.  MP4Box 可以在 -add 参数中指定 fps,例如:mp4box.exe -add v.264:fps=30 -add a.aac -new final.mp4,像我的 IXUS 870 IS 录制的 .mov 文件的 fps 是 30,然后用 Handbrake 转成 .mkv 后的 fps 还是 30,如果不指定这个参数的话,最终合成的 .mp4 文件就会音画不同步了。
2. 才发现 Handbrake 的输出就是标准的 mp4 格式,只是在文件扩展名上使用了对 iPod/iTunes 友好的 .m4v,而且这个可以在软件菜单的 Options 里进行设置,那看来以后都没必要再转 mkv 了,一步到位才好。

This entry was posted in 软件应用 and tagged , , , . Bookmark the permalink.

1 条 mkv 转 mp4 的回复

  1. pbbbb说道:

    Mac下测试成功,mkvextract命令行提取,ac3用自带QuickTime转成m4a,最后mp4box合成,感谢博主!

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s