终于把FFMPEG嵌到wxwidgets里面的
wxwidgets吧
全部回复
仅看楼主
level 9
稍后给出解释方法
2015年09月04日 01点09分 1
level 9
首先,需要声明的是我也是到处抄,到处找,最后走到了这一步
参考:http://blog点csdn点net/leixiaohua1020/article/details/15811977,雷霄骅的基础教程
http://blog.sina.com.cn/s/blog_51396f890100nd91.html教程,两个要相互参照使用。
这两个资料看完之后其实已经基本没什么问题,需要的知识和函数我们都已经具备了,剩下的只是组合。
下面的属于我个人的补充:
2015年09月05日 04点09分 2
level 9
我们暂时抛开字幕流不论:以最一般的视频为研究对象,那么一个视频文件里面包含一个视频流,一个音频流,需要先解复用,也就是demux,然后再调用各自的解码器解码,decode。这一步很容易做到,上面的两个教程最开始的部分都是这样的。然后是就要对文件进行读取了,问题是文件编码存储的是压缩编码的数据包。问题是编码的时候是音频、视频数据包混合顺序存放的,并不是分成规整的两部分。假如视频文件是一个住宅小区,存放的时候不是说1-100栋全是音频,100-200栋全是视频,而是1-2可能是音频,3可能是视频,4又可能是音频,所以我们读取的时候需要判断这个包存的是什么类型数据。
下面我要分开谈了:
2015年09月05日 04点09分 3
level 9
以上是逻辑。视频解码后的一桢数据是存储在AVFRAME结构的data数组里面,解码后的数据类型一般都YUV,而构造位图需要的是RGB,所以有了教程里面的数据转换,转换为RGB24,RGB24类型的数据是存储在data数组的data【0】里面,所以对于我们有用的就是data[0]这里的数据。直接构造为wxbitmap我是没成功,鉴于wxbitmap是利用与设备无关的位图实现的,所以我先将data[0]的数据构造成了wxImage,然后在构造为wxBitmap,然后初始化wxBufferedPaintDC,当释放时会自动重绘窗口客户区。
2015年09月05日 04点09分 5
level 9
视频基本就是这样了,我现在正在尝试音频,完成后我会贴上代码
2015年09月05日 04点09分 6
level 9
楼主腻害
2015年09月16日 23点09分 7
1