视频播放器,mfc+ffmpeg+sdl实现的

播放器中牵扯到音视频处理技术(编解码),首先一个大致的流程:文件——》打开-》分离音频和视频数据-》音频数据解码,视频数据解码-》这一步的处理很关键就是同步的处理,我使用的是视频同步到音频上播放。这就是一个大概的基本流程了

   首先用mfc搭建一个简单的界面框架,然后使用ffmpeg(接触过音视频的同志没有一个不知道它的存在)进行打开文件然后区分出音频流和视频流,这里的原始数据都是压缩后的数据(h264)我当时处理的时候基于h264解码,现在更好编解码算法都出来了感叹技术进步的步伐太快了。得到原始流数据后(这里用到一个缓冲区的技术,解决了处理音频和视频不同步的问题,我们在处理音视频流时是分别创建俩个线程一一对应处理的,这里处理器的原因就是有时你一帧视频解码的速度比音频快,然后你播放第一帧后第二帧的解码就有点耽搁了就会出现画面卡顿或者音频卡顿现象等等),接着就是同步的问题了,我这里采用视频同步到音频上的方法为啥(这里有一点就是在一个时间点里视频只有一帧,但是音频确有可能同时多个帧),首先播放一帧音频记录当前音频时间点,接着播放视频的时候需要获取到视频的时间点来跟音频时间点对比看看是快乐还是慢了,如果快了那么视频就需要sleep一下,至于这个数值就是时间点的差值,如果慢了就迅速丢掉,解码下一帧来进行对比。整个流程就是这些,至于具体的使用ffmpeg和sdl的方法你可以百度一下,上面有大量的教程。

      

展开阅读全文

没有更多推荐了,返回首页