前面匆忙写了很多篇文章,虽然都很简单,但着实花了不少时间去研究的。几年前写了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




完成一个YUV文件播放器相关推荐

  1. 修改了一个YUV/RGB播放器

    最近在学习过程中查看YUV/RGB像素数据的时候,发现找不到一个合适的播放器.主流的YUV播放器大多只支持YUV格式播放,却不支持RGB格式数据播放.而我正好需要查看RGB像素数据.在Sourcefo ...

  2. python播放wav文件_python3 写一个WAV音频文件播放器的代码

    环境:ubuntu 16.04 python3.5 pycharm 包 : wave pyaudio sys 上代码:AudioPlayer.py # coding:utf-8 # author:ki ...

  3. 利用MFC调用libvlc.dll作一个简单的播放器

    简单介绍MFC调用libvlc.dll作一个简单的播放器,抛砖引玉,各位VC++达人继续深入研究,Jeremiah对VC++确实不太感兴趣,所以就不做太深入的研究了. 2009.10.29修改:加入c ...

  4. 利用DirectShow开发C#版的音频文件播放器(三)

    前面曾经讲到了利用利用DirectShow开发C#版的MP3播放器,这篇文章是对前面两篇文章的补充与升华. 首先,大家不难发现,这篇文章的标题已经修改为音频文件播放器,而不仅仅是针对MP3一种格式,支 ...

  5. 利用DirectShow开发C#版的音频文件播放器(补充完善)

    继今年三月份利用DirectShow开发C#版的音频文件播放器(三)文章之后,一直希望对这个音频文件播放器所存在的一些问题做修改完善,可惜一直忙于工作而无暇顾及这个事情.近日,有读者朋友提到了这个问题 ...

  6. java计算机毕业设计vue开发一个简单音乐播放器(附源码、数据库)

    java计算机毕业设计vue开发一个简单音乐播放器(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...

  7. 如何快速做一个HTML5移动播放器

    这段时间公司一直在做一个PC的教育类单页应用,庞大复杂,涉及非常多H5的知识,音频就是其中的一部分.前些天偷台风的闲暇时写了一个移动音乐播放器,作为练手项目(存放在码云).若你觉得该文章对你有帮助,别 ...

  8. Python实现一个小小的图片播放器,就是这么简单!

    python实现图片播放器 零.小序 一.图片播放器介绍 1.功能介绍 2.用到的技术 3.图片播放效果 二.主要代码 1.Python代码 2.代码下载地址 零.小序 Python是一个语法简单的语 ...

  9. C语言里的out函数,c语言 vc 用waveout函数写wave文件播放器

    用WaveOut函数写wave文件播放器 要炒菜的话,就得先准备工具,如锅.铲子.炉灶等.对程序来说,就是各种函数的应用.WaveOut函数在windowsAPI中属于低阶接口,用来播放的话需要用到下 ...

最新文章

  1. Dictionary解析json,里面的数组放进list,并绑定到DataGridView指定列
  2. 山东计算机基础模拟题及答案,2016山东农信社考试模拟题--计算机基础知识答案(1)...
  3. Linux文件系统简介及常用命令
  4. 私有属性和方法-应用场景、定义方式和演练
  5. 每天一道CTF---BUUCTF---练习场----EasySQL1---
  6. 康力电梯开门不关门 服务器显示开门键动作,康力电梯门机故障代码
  7. 云计算-从基础到应用架构系列-云计算的演进
  8. vscodepython使用教程_技术教程_如何用vscode写python程序- 中国it教程网
  9. 分享20佳移动应用程序开发框架
  10. 在MacOS Big Sur中使用Safari 翻译功能的方法
  11. Cisco路由器DHCP服务器基本配置
  12. 基于ENVI的Landsat 7影像处理与多种大气校正方法对比
  13. qq服务器只保留7天文件吗,qq离线文件服务器上的离线文件能保留几天(一般7天)?...
  14. pycharm运行python程序没有解释器怎么办
  15. Python 四舍六入五成双
  16. 实现相册功能 java_javaWEB实现相册管理的简单功能
  17. 60种数据可视化图表总结
  18. 【Note】二十四节气英文表达(solar term)
  19. 用Java求质数(素数)等问题
  20. 为穷苦大众发布的Linux内核新版本

热门文章

  1. python 执行shell_python中执行shell的两种方法总结
  2. “.中国”域名!小米有新网址了:纯汉字 输网址更方便了
  3. 微信公布10月朋友圈十大谣言 包括牙膏能杀灭幽门螺杆菌等
  4. 首发骁龙898!小米12系列屏幕方案曝光:双曲面屏+全新封装工艺
  5. 全国唯一高校!武汉大学首开鸿蒙系统课程
  6. iPhone工厂骚乱损失至多712万美元?纬创资讯回应...
  7. 李想:欣赏特斯拉 但更喜欢苹果、乔布斯
  8. 阿里云建成全国最大数据中心集群 全面应用自研硬核技术
  9. 持续狂奔的拼多多快追上阿里了
  10. GitHub或正式登陆中国!拟在中国设立分公司