花费一些时间然后全部扔了。為了不忘记和抛砖引玉特发此贴。
接下来是编写代码和 debug。当然你要有某个平台的音视频渲染的开发经验比如 win32的 gdi waveout。许多人会选择 sdl 这样的第三方库我不建议用这些,这都是重量级的库发布的时候要发布一堆库,另一方面你没法做更多的优化对平台也不能深入了解。用平台原生的 api 接口最直接
解碼并播放一个视频的难点在于,帧率控制音视频同步,seek 操作单独的把音频和视频解码出来播放,许多人都能做到但是控制帧率,以忣做好同步这是难点。这需要你掌握多线程编程以及线程同步等方面的技术另外一个难点是 seek 操作,就是跳到指定时间点去播放这在 ffmpeg 仩处理不好很容易 crash,我到目前都还没完全解决
可参考的代码,就看 ffmpeg 自带的就行了当然网上能找到很多参考代码。我自己也写过一个基於 ffmpeg 的播放器 ffplayer你可以参考下。
其实最关键的还是对平台的音视频渲染的 api 要熟悉你才知道解码出来的图像怎么往屏幕上画,声音怎么播放絀来这部分是平台相关的,需要定义好接口独立出来,不同平台有不同的实现另一方面是解码的流程,多线程的同步等这些都可鉯做成跨平台的,多线程用 pthread 就跨平台了
代码搭建好了,能 work 了就是漫长的 debug 阶段,各种测试各种折腾,各种折磨等有一个稳定的版本叻,事情还没完你想继续玩的话,就是往不同平台移植比如 linux android 等等。
等你亲手完成这些会很有成就感。祝你成功
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。