在MFC环境中打开并播放一个YUV格式的视频文件 怎么实现这个问题
1个回答
展开全部
程序是不给了,既然路过,就给个提示吧。可以分以下几步实现代码:
第一,了解视频格式,知道怎么样从文件中把一帧帧视频数据读取出来。比如可以读取文件头信息,根据头信息来确认所需的各个参数。如果是没规范的视频裸数据,就根据事由定义的分辩率和YUV格式来确认如果读取帧数据,比如是320*240,YUV422,那一帧的数据是320*240*2,每隔这么多数据,就是一帧了。
第二,使用转换公式把YUV转换成RGB。具体代码百度一下即有。
第三,会使用directdraw,不会的话先百度一下学会使用。搞视频显示的,都要使用这个低层的画图库。效率高
第四,开一个40MS的定时器(因为帧率为25Hz,所以每40MS显示画一帧)。每隔40MS操作一次:从文件中准确读取出一帧YUV图像数据,把YUV视频数据转换成RGB图像数据,使用directdraw把RGB图像数据画到窗口。一直循环,把文件中数据全部显示完毕。
(把问题这样区分后,各个百度一下,基本可以得到代码,这个是搞开发的基本技能)
注:路人是搞视频监控产品开发的,本来是想百度一下有什么润侯汤,不小心看到这个问题,就助人为乐一下。以上回答信不信由你,满不满意由你,不用给分的!
第一,了解视频格式,知道怎么样从文件中把一帧帧视频数据读取出来。比如可以读取文件头信息,根据头信息来确认所需的各个参数。如果是没规范的视频裸数据,就根据事由定义的分辩率和YUV格式来确认如果读取帧数据,比如是320*240,YUV422,那一帧的数据是320*240*2,每隔这么多数据,就是一帧了。
第二,使用转换公式把YUV转换成RGB。具体代码百度一下即有。
第三,会使用directdraw,不会的话先百度一下学会使用。搞视频显示的,都要使用这个低层的画图库。效率高
第四,开一个40MS的定时器(因为帧率为25Hz,所以每40MS显示画一帧)。每隔40MS操作一次:从文件中准确读取出一帧YUV图像数据,把YUV视频数据转换成RGB图像数据,使用directdraw把RGB图像数据画到窗口。一直循环,把文件中数据全部显示完毕。
(把问题这样区分后,各个百度一下,基本可以得到代码,这个是搞开发的基本技能)
注:路人是搞视频监控产品开发的,本来是想百度一下有什么润侯汤,不小心看到这个问题,就助人为乐一下。以上回答信不信由你,满不满意由你,不用给分的!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询