完成一个YUV文件播放器

前面匆忙写了很多篇文章,虽然都很简单,但着实花了不少时间去研究的。几年前写了YUV转换RGB的代码,当时只限于转换成BMP来测试正确性。后来一直使用YUV Player Deluxe来看YUV文件,但其支持格式不够多。前段时间下定决定,将以前写的YUV转换代码完善一下,尽自己能力转换各种YUV格式。一来好久没练练MFC了(我在考虑要不要学C#),二来也写个工具自己使用。

说话的,你不是在做项目吗?你不是经常加班加点吗?怎么还有时间做?看官有所不知,小子能力有限,项目包罗万象,小子无法通晓所有模块,有的时候要等其它人完成,小子爱莫能助。二来,小子所用都是中午别人休息时间,或晚上深夜时间,或周末别人喝咖啡、玩桌游的时间。作为技术人,靠写代码打发时间,其何哀耶。

目前该工具已经完成了。估计以后可能不再更新了。

一、功能

1、支持目前本人所了解、研究过的YUV格式,包括:

YUV400,界面中表示为Y。

YUV420平面格式:YUV420(I420);YV12;

YUV422平面格式:YUV422(I422);YV16;

YUV444格式:YUV444;

YUV422交织格式:YUY2(YUYV);YVYU;UYVY;VYUY;

半平面格式:NV12(也叫YUV420SP);NV21;NV16(也叫YUV422SP);NV61

2、系统预留部分分辨率,同时支持自定义高宽,但无法保存。

3、支持不同帧率播放,支持循环播放。

4、支持向前向后逐帧跳转,支持第一帧、最后一帧跳转。

5、支持窗口缩放。

6、支持保存YUV文件或BMP图片文件。

7、自动解析文件名,得到分辨率、YUV格式。示例:yuv_qcif_yuv420sp.yuv,将解析到qcif分辨率,即176x144,格式为NV 12。yuv_25x250.yuyv,得到分辨率为25x250,格式为YUYV。


二、使用

直接将YUV文件拖到播放器里即可。


三、参考

1、参考yuvview源码的播放、暂停线程部分代码。(注:最新版本使用timer实现播放,不再使用线程)

2、界面风格设计参考YUV Player Duxe。

3、其它MFC有关的用法、技巧,由本人通过网络搜索而得。

 

四、设计

1、YUV转换RGB独立成接口函数,方便使用,不与任何平台、工具有关联。

2、设置界面使用非模态对话框,通过不同窗口类传递参数。所有参数均在设置对话框类中实现。

3、独立文件打开、内存分配、读取文件函数,使用帧索引值来定位每一帧,实现逐帧定位,同时也是播放的主要判断依据。

4、使用不同的内存存储YUV数据及转换后的RGB数据,可保存成YUV文件或BMP图片。

5、播放、暂停、停止,使用Timer来控制。

6、使用picture控件显示图片,GDI+实现。


v2.0版本界面如下:


2015.8.18 v4.0发布

工程源码使用github仓库,欢迎下载使用:https://github.com/latelee/YUVPlayer


李迟 2015.8.21 



  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值