最近耗费了些时间捣鼓ffmpeg影像播放,个人是Linux和开源运动的忠实追随者,但却很少在linux下编程,因为实在讨厌那个命令行的make编译,操作繁琐,我又经常打错字,要花大量时间捣鼓那些./configure,实在不适合我这种懒人.
Linux下的make都是又臭又长,而且搞不懂为什么编译出的东西关联都那么多,目标文件又大,ffmpeg默认编译生成8M多的dll,使用如下./configure,支持各种MPEG4格式.
./configure --disable-static --enable-shared --enable-memalign-hack --disable-encoders --disable-debug --disable-audio-oss --disable-audio-beos --disable-v4l --disable-v4l2 --disable-bktr --disable-dv1394 --disable-network --disable-lzo --disable-zlib --disable-simple_idct --disable-vhook --disable-muxers --disable-mpegaudio-hp --disable-ffserver --disable-ffplay --disable-decoders --enable-small --enable-decoder=MPEG4 --enable-decoder=SNOW --enable-decoder=MSMPEG4V1 --enable-decoder=MSMPEG4V2 --enable-decoder=MSMPEG4V3
编译完avcodec.dll仍然有1.06M(不知有谁能编译出支持MPEG4的更小的版本),只支持MPEG4格式,用Aspack压缩一下354k,这样的DLL才可以用,虽然结果简单,但没有文档,捣鼓这些参数浪费了大量时间,真是不值得.另外,很烦别人问我程序的编译问题,繁琐而没有多少技术含量,纯粹的体力活.最后为了找一个影片开始播放时会出现马赛克的Bug,修改ffplay.c,做了个VC下可以调试编译的版本,和我的程序做对比,最后调试发现av_read_packet的解码有问题,改成av_read_frame了事,结果是就只改了几个字母解决了Bug,过程却相当的痛苦.
研究的副产品是发现TortoiseCVS这个CVS工具很好用,集成入Windows Shell,而WinCVS表面是Windows GUI,骨子里仍然是Linux的繁琐,状态栏那几条死鱼说明了一切.又发现了Fraps这个游戏视频捕捉工具,直接截获游戏目标画面,显示游戏帧数,直接捕捉显卡内容录制avi,cool!
Linux下的东西就比Windows有技术含量么,我看未必.