Win平台简单编译FFPlay播放器,顺便纪念下雷霄骅,一年前刚学FFMPEG时还看过他的博客,昨晚再次搜FFMPEG文章时才知道人已经走了...
做成了视频放到B站
http://www.bilibili.com/video/av8644322/
C++版本也是可以编译的,只是要修改非常多的C语言转C++的强制类型转换,这个例子是C语言写的,改扩展名为cpp后,有不少cpp关键字的参数要修正,不过基本上花点时间就能解决,没什么难度。
现在主要问题是网上能找到的例子,包括FFPlay都是基于SDL的,新版FFPlay基于SDL2,但是始终找不到脱离SDL版本的音视频的例子,网上虽然有单帧解码的例子,从是缺少音视频同步,google都没找到,自己又没写过什么并行的程序,
SDL中的mutex,cond,signal转成C++11失败了,根本不知道怎么写能正确。
所以目前没办法,还是得暂时依赖SDL,好像SDL有OpenGL接口,改改应该还是能用OpenGL的。
于是今年打算花点时间把这个libav库整合进自己的代码中,争取让自己写的简单引擎也能播放常见视频。
有趣的是除了商业引擎,开源的C++游戏引擎几乎看不到任何支持视频播放的,Ogre,Urho3D,还有什么的全都不行,国内外一些旧贴子零星的提到过一点Ogre里使用FFMPEG播放视频的,但是也没什么工程或者解决方案。
还有蓝星第一XX引擎Klayge也只是有个简单视频,没什么音视频同步,这种其实我感觉不能算是完全支持视频的,因为视频这东西一般不是放OP就是在游戏中放画中画用的,没声音那基本和图像序列没区别...
也可能是FFMPEG协议问题导致没有游戏引擎使用他。不过其实也有些其他的,如ogg那个库,还有什么bik也没看有什么引擎支持。
扯得太远也没意义,反正自己用,方便自己又不商用,花点时间整合一下FFMPEG还是值得的。
更有意思的是,FFMPEG这协议好像是要部分开源的,而有些项目,好像是KMPlayer吧,没开源居然上了FFMPEG的耻辱柱黑名单,还有国内的一堆XX影音,虽然一个也没用过...不过渣渣如我估计也写不出啥出名的程序,基本也没啥能上人家黑名单的机会了...