转换AVCHD的m2ts文件到avi

Sony的硬盘录像机是好东西,高清晰、宽屏幕录像,大容量存储,可录的时候爽了,后期浏览和加工转换实在是不方便(这位仁兄也有同样感受:[ Jeff Cai的流水账 – Play with AVCHD](http://www.jeffcai.com/2007/05/play-with-avchd.html),机型都是Sony HDR-SR1),无论想在哪台电脑上浏览录像,都要装一个Sony Handycam Application Software软件(安装盘仅400M),这个软件也相当霸道,不让选择安装位置、安装哪些组件,甚至不允许单独安装其中的某一个程序,安装完成后居然还提示要重启xp,当然不重启我试了也能使用。注册媒体库位置的时候不让选择网上邻居资源或者映射的网络驱动器。

如果这些都不是问题的话,录像文件拷出来能用其他工具浏览或加工也行啊,可偏偏他的录像格式m2ts(扩展名MTS)目前支持的工具还相当少,不过还是在网上找到了一些文章,能够用开源工具进行转换。Sony自带软件也能转换成通用格式,不过我的印象是会损失一些清晰度,用肉眼就能轻易的分辨出来的差异。参考文章:

  • [AVCHD .m2ts conversion for Linux](http://www.avsforum.com/avs-vb/archive/index.php/t-789775.html), [view style 1](http://www.avsforum.com/avs-vb/printthread.php?t=789775&pp=60), [view style 2](http://www.avsforum.com/avs-vb/showthread.php?t=789775)
  • [Computer freezes: AVCHD (.mts from Sony HDR-SR1)](http://www.highdefforum.com/showthread.php?t=47653)

基本思路都是这样的:

  • 用xporthdmv把m2ts转换为mpv和mpa格式
  • 用ldecod把mpv转换为yuv格式
  • 用yuv4mpeg把yuv转换为y4m格式
  • mpa直接当ac3格式的音频使用
  • 用ffmpeg合成视频和音频部分为avi格式(avi就是一个容器)

讨论中还有一些其他的提示:

  • ffmpeg可以用mencoder替代
  • ldecod生成的yuv文件大小可以达到4G/分钟,不过可以用命名管道(named pipe)来省去使用中间文件
  • 视频和音频的同步,pal格式录像可以设定fps为25,ntsc格式录像可以使用参数-r 29.97。

参考文章中的第一篇给了一个[附件](http://www.olmosconsulting.com/m2ts.tar.gz)(我还在[这里](http://www.archive.org/details/ScriptWhichCanConvertAvchdM2tsToAviFormat)存了一份解压、编译好的版本),这个很好用,下载下来解包,里面的readme.txt和Makefile解释了使用方法,不过在ubuntu下使用的话,建议先作以下几步准备工作:

  • 安装svn客户端
  • 用apt安装x264-bin和ffmpeg以及mplayer
  • 在’src/JM/ldecod’目录下创建一个空的子目录’obj’
  • 脚本运行之后会自动转换samplevideo.avi,会用去一些时间,想省略的话把这个文件删除或改名即可
  • download文件中有一句set version=12.2,现在的jm版本已经是12.4了,更新之,不然下载不到(404错误)

然后就简单了:

  • ./download
  • ./compile
  • ./install

或者再用installasroot安装,你就可以使用m2tstoavi了:

$ m2tstoavi 
usage: /usr/local/bin/m2tstoavi filename.m2ts ...

我也转了一个自己录的文件,完成后发现视频、音频不同步,并且播放速度很慢,可能是一些设置参数的问题,转换方式肯定是没有问题的,并且好像是目前最好的方式了。(修改/usr/local/bin/m2tstoavi,注意上面说的pal和ntsc制式的区别)mplayer播放最终生成的avi文件,信息如下:

Playing samplevideo.avi.
AVI file format detected.
VIDEO:  [h264]  1440x1080  24bpp  29.970 fps  13323.1 kbps (1626.4 kbyte/s)
Clip info:
 Software: MEncoder 2:1.0~rc1-0ubuntu9.1
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
[VO_TDFXFB] Can't open /dev/fb0: No such file or directory.
[VO_3DFX] Unable to open /dev/3dfx.
It seems there is no Xvideo support for your video card available.
Run 'xvinfo' to verify its Xv support and read DOCS/HTML/en/video.html#xv!
See 'mplayer -vo help' for other (non-xv) video out drivers. Try -vo x11
Opening video filter: [screenshot]
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
==========================================================================
Forced audio codec: mad
Opening audio decoder: [liba52] AC3 decoding with liba52
Using SSE optimized IMDCT transform
Using MMX optimized resampler
AUDIO: 48000 Hz, 2 ch, s16le, 448.0 kbit/29.17% (ratio: 56000->192000)
Selected audio codec: [a52] afm: liba52 (AC3-liba52)
==========================================================================
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...
VDec: vo config request - 1440 x 1080 (preferred colorspace: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
SwScaler: reducing / aligning filtersize 5 -> 4
SwScaler: reducing / aligning filtersize 5 -> 4
SwScaler: reducing / aligning filtersize 1 -> 1
SwScaler: reducing / aligning filtersize 5 -> 4

SwScaler: BICUBIC scaler, from yuv420p to bgr24 using MMX2
SwScaler: using 4-tap MMX scaler for horizontal luminance scaling
SwScaler: using 4-tap MMX scaler for horizontal chrominance scaling
SwScaler: using n-tap MMX scaler for vertical scaling (BGR)
SwScaler: using MMX2 YV12->BGR24 Converter
SwScaler: 1440x1080 -> 1920x1080
VO: [x11] 1440x1080 => 1920x1080 Planar YV12 
A:4358.2 V:   2.9 A-V:4355.240 ct:  0.297  89/ 89 148%  0%  1.1% 37 0 

有时间了再仔细研究视频、音频不同步和播放速度很慢的问题。不过还是那句话,技术都是好东西,可对商业利益的无止境追求使他们变成了恶魔。

软件环境:Ubuntu 7.04 Feisty

Update @ 2008-02-14

发现视频、音频不同步的原因了,我的机器太慢!精度太高了,3.2双核都跑不动!对结果再此进行降频转换之后,播放还是很流畅的,但感觉人物动作略微有一点点快呢?帧率不对?

mencoder -oac copy -ovc xvid -xvidencopts bitrate=5000 $file.avi -o $output.avi

9 thoughts on “转换AVCHD的m2ts文件到avi”

  1. 一直对硬盘形式的摄像机不感冒,主要也是因为文件格式,还有硬盘大小的问题。看了你的文章,我会 stay away from sony!!!

  2. 我也是,更倾向于照相机,格式通用,后期存储、加工方便, 简单录像的任务也能完成, 摄像机,还是偏“专业化”一些。

  3. 哇塞,兄台比我认真好多哦。你的参考资料我也看到过,但是看到步骤这么多就放弃了。哈哈。 今天无意中看看Analytics,才发现你的网站,过来踩一脚。

  4. @Jeff Cai 我也是没办法啊,需求驱动嘛,但对视频这块实在是懂得太少,转出来的结果帧数极低,根本就没法用,只能暂时搁浅在这里,把m2ts文件连同sony的驱动光盘一起刻在dvd上给别人。。。

  5. HDR-SR E系列摄像机最好能向JVC那样随机付带一张摄像后期的编辑光盘(近似”会声会影”的编辑器).目前HDR-SR E所摄的视频M2TS好多编辑器不能导入,编辑不了.摄回的视频不能编辑有什么用呢!从HDR-SR E目前付带的光盘看,对所摄的视频只能简单的剪辑,而不能编辑,真是太不完美了!

    1. 随机带的软件功能一般的比较弱, 大家都希望能用自己更顺手的工具来编辑, 这就要求厂商提供更兼容的格式, 但这也是厂商为了商业利益所最不愿意作的事情了。

  6. 使用edius4.6配合ediusNX +高清扩展卡 能够编辑m2ts格式文件,机器配置稍高一些,速度不慢

    1. 终于有了么?真不错,不过查了一下,好像是软件+硬件卡的东西,稍微专业化了一点,软件是windows平台下的,系统要求不低,最低要求为:

      • 奔腾D 3.0G或更高的CPU
      • 1G内存
      • 两个空闲的PCI Express x1槽,估计是一块卡要占两个槽
      • 800M剩余硬盘空间,DVD光驱,估计是为安装软件准备的,处理视频800M远不够
      • ATA100 7200转以上的硬盘,至少要达到20M/s的传输率,多HD流输出还需要RAID
      • 显存在128M以上,支持PixelShader Model 2.0,1024×768的32位显示分辨率应该更是没问题的了
      • 一个空闲的5英寸托架(又要装啥劳什子?)
      • Windows XP Home或Pro(SP2)
      • DirectX 9.0
      • 一个USB插口,用来接加密狗
      • 声卡(集成的应该也可以吧?)

Leave a Reply to Fwolf Cancel reply

Your email address will not be published. Required fields are marked *