本文介绍一个自己做的FFPLAY移植到VC下的开源工程:ffplayfor MFC。本工程将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下。并且使用MFC做了一套简单的界面。它可以完成一个播放器播放视频的基本流程:解协议,解封装,视频/音频解码,视音频同步,视音频输出。此外还包含一些控制功能:播放,暂停/继续,前进,后退,停止,逐帧播放,全屏等;以及一些简单的视频码流分析功能:视频解码分析和音频解码分析。通过本程序可以学习视频播放器原理,以及SDL和Windows消息机制。
平台:VC2010
类库:FFmpeg,MFC
项目下载:
ffplay for MFC1.0.0(stable)——本版本采用FFmpeg的2012年的类库,稳定
http://download.csdn.net/detail/leixiaohua1020/7452437
ffplay for MFC1.0.1——本版本采用FFmpeg的2014年5月的类库,支持HEVC和VP9,Debug下稳定,Release下目前还有问题。
http://download.csdn.net/detail/leixiaohua1020/7452493
注:Release下的问题已经得到网友建议并且解决。解决方法如下:
VC工程属性里,linker->Optimization->References 选项,改成No(/OPT:NOREF)。
注:以上两个项目由于失误,少了一个SDL.dll文件,去SDL官网
http://www.libsdl.org/download-1.2.php
下载一个Runtime Libraries即可
SourceForge项目主页:
https://sourceforge.net/projects/ffplayformfc/
补充:
该项目原代码简介可以参考:ffplay for mfc 代码备忘
更新记录==============================
1.1版(2014.7.10)
* 更换了部分界面
* 原工程支持Unicode编码
* 修复了Release下的Bug
* 添加了两个宏定义"INT64_MIN INT64_MAX",在没有安装 Win7SDK的情况下,可能会出现找不到定义的情况。
CSDN上又上传了一份:
ffplay for MFC1.1
http://download.csdn.net/detail/leixiaohua1020/7764509
一. 主界面
程序的主界面如图所示。最上方是输入的URL。中间是视频的参数列表。下方是视频的控制按钮。
1.1输入URL
输入URL框用于输入视频的URL。视频源可以是本地视频或者是网络流。单击输入框右侧的“文件”按钮可以方便地选择本地的文件并获取他们的URL(在这里是路径信息)。此外,也可以将本地视频文件直接拖拽到对话框中,也可以获取到该视频的URL。
1.2参数列表
封装格式参数
输入类型:输入视音频采用的传输协议。举例:RTP,FILE(文件),HTTP,RTMP。
封装格式:视音频采用的封装格式。举例:AVI,FLV,MKV,RMVB。
比特率:视音频的码率。举例1Mbps。
时长:视音频的时间长度。
MetaData:视音频元数据信息。
视频参数
输出像素格式:解码后像素数据格式。举例:YUV420P,RGB24,UYVY。
编码方式:视频采用的压缩编码标准。举例:H.264,MPEG2。
帧率:每秒钟视频画面数。举例:25fps。
画面大小:画面的分辨率。举例:1920x1080,720x576。
解码分析:以列表的形式显示每个视频帧的详细信息。
音频参数
采样率:每秒钟采样点个数。举例:44.1kHz,48kHz。
编码方式:音频采用的压缩编码标准。举例:AAC,MP3,WMA。
声道数:声道数量。
解码分析:以列表的形式显示每个音频帧的详细信息。
1.3控制按钮
控制按钮包含了:开始,后退,暂停/继续,前进,停止,逐帧播放,全屏。
此外,这一排控制按钮的上方,包含了视频播放的进度条。可以通过拖动进度条控制视频的播放。
二. 视频播放窗口
视频播放采用SDL显示。
三. 视频解码分析窗口
视频解码分析窗口列表显示了每一个视频帧的一些信息:序号,帧类型,关键帧,码流序号,PTS。其中不同的帧类型使用不同的背景色标识出来:I帧使用红色,P帧使用蓝色,B帧使用绿色。如图所示。
四. 音频解码分析窗口
音频解码分析窗口列表显示了每个音频帧的一些信息:序号,大小,PTS等。如图所示。
五. 系统支持信息窗口
系统支持信息窗口列表显示了系统的支持信息。包括系统支持的:协议,封装格式,视频解码器,音频解码器,以及其他解码器(字幕解码器)。例如协议列表如图所示,从中可以看出本程序支持的协议类型包含http,file,mms,rtp等等。
例如从封装格式列表中,可以看出系统支持flv等封装格式。每个列表包含了序号,简称,全称,扩展名,私有数据大小等信息。
六. 菜单
程序上端的菜单中包含了更丰富的选项。一共分成6部分的功能:文件,播放控制,播放窗口,视图,语言,帮助。下面分别介绍。
文件:文件的打开。
播放控制:视频播放过程中的控制功能。包含:播放,暂停/继续,停止,逐帧播放,全屏。此外包含了多种快进快退操作:快进10秒,1分,10分;快退10秒,1分,10分。
播放窗口:与播放窗口有关的各种选项。可以设置播放窗口显示的内容,以及窗口的大小,纵横比。播放窗口默认是显示视频画面。此外还可以图形化的显示音频的信息,包括音频的波形图,以及音频的RDFT变换图。
音频波形图显示效果如图所示:
音频的RDFT变换图显示效果如图所示:
视图:包含程序中的几个窗口。包含视频解码分析窗口,音频解码分析窗口,系统支持信息窗口。
语言:包含程序支持的几种语言。
帮助:包含程序的支持信息。
七. 英文界面
系统的英文界面如图所示。以后有机会可以增加其他语言。
主界面
视频解码分析窗口
音频解码分析窗口
系统支持信息窗口
相关推荐
自己做的FFPLAY移植到VC下的开源工程:ffplay for MFC。 本工程将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下。并且使用MFC做了一套简单的界面。它可以完成一个播放器播放视频的基本流程:解协议,解...
ffplay播放器移植到vs2017 mfc工程,引用SDL2、ffmpeg库文件,将cmdutils.c、ffplay.c 、opt_common.c源码增加到mfc工程 将SDL2播放器嵌入到mfc窗口上
自己做的FFPLAY移植到VC下的开源工程:ffplay for MFC。 本工程将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下。并且使用MFC做了一套简单的界面。它可以完成一个播放器播放视频的基本流程:解协议,...
ffplay播放器移植到vs2017 win32工程,引用SDL2、ffmpeg库文件,将cmdutils.c、ffplay.c 、opt_common.c源码增加到win32工程,输出win32版本ffplay.exe
在本工程中,"ffplaymfc"是FFmpeg的ffplay播放器被移植到Microsoft Visual Studio 2008(MFC)环境下的实现。FFplay是一个简单的播放器,基于FFmpeg库,用于演示FFmpeg的基本使用方法。MFC(Microsoft Foundation ...
ffmpeg 中的 ffplay 播放器,算是万能播放器了,可以直接使用,参照 https://blog.csdn.net/w13511069150/article/details/87880945
3. **SDL集成**:FFplay依赖于Simple DirectMedia Layer (SDL)库来处理图形和音频输出。在Windows环境下,需要正确配置SDL库的路径,确保编译时可以找到并链接SDL的相关库文件。 4. **调试与发布配置**:压缩包中的...
基于ffmpeg的精简版ffplay 音视频播放器 环境:Vs2010 参考网址:http://blog.csdn.net/cffishappy/article/details/7352898 鉴于ffplay的代码晦涩难懂 结合ffplay的代码 自己实现了一个ffplay 比较精简和通俗易懂 ...
3. **线程管理**:ffplay通常在一个单独的线程中读取和解码数据,另一个线程负责播放。在MFC中,可以使用CWinThread类创建线程,同时需要处理好线程间的通信和同步,确保数据正确无误地传输到UI线程。 4. **事件...
ffplay是FFmpeg项目中的一个简单播放器,用于演示如何使用FFmpeg库来播放音频和视频文件。这个压缩包提供的内容包括ffplay的源代码和相关的PDF说明文档,对于想要深入了解FFmpeg以及SDL应用的人来说,是一份宝贵的...
`ffplay` 是一个简单的媒体播放器,由 FFmpeg 项目开发,它利用 FFmpeg 库来解码和播放各种音频、视频格式。这个压缩包 "ffplay(ffmpeg).zip" 提供的是一个特别定制版的 `ffplay` 播放器,去除了 SDL(Simple ...
在本项目"ffmpeg3.4.2简单播放器(MFC_FFPlay)"中,开发者尝试将ffplay.exe与MFC(Microsoft Foundation Classes)框架相结合,以创建一个简单的视频播放器。 MFC是微软提供的一套C++类库,用于构建Windows应用程序...
提供了x86、x64dll、qt示例、C#封装对象代码及示例项目,不包含播放器c语言源码,请根据需要下载。版本v1.3.15。原文链接:https://blog.csdn.net/u013113678/article/details/124759757。 * 更新日志 * v1.3:支持...
描述中提到"基于雷神的ffplay vs工程修改",这意味着这个DLL是基于某个开发者(雷神)对原始ffplay项目的改编,这个改编版本是在Visual Studio 2013环境下构建的。"运行后直接点击play即可运行"意味着该DLL已经集成...
- 解码:ffplay 使用 libavcodec 来解码音频和视频流,支持众多编码格式,如 H.264、VP9、AAC、Opus 等。 - 视频渲染:ffplay 使用 SDL 库将解码后的视频帧渲染到屏幕上,提供流畅的播放体验。 - 音频回放:...
在Windows环境使用QT Creator 4.4.1编译ffplay(Ffmpeg3.3.3版本): (1)去掉了参数的解析,目前只支持内部写死文件路径; (2)支持按键事件,比如左右箭头seek,空格键暂停等; (3)在QT编译ffplay的目的是为了...
FFmpeg 是一个强大的开源多媒体处理框架,而 `ffplay` 是 FFmpeg 工具集中的一员,是一个简单但功能齐全的视频播放器。它基于 SDL 库实现,支持硬件加速,适用于实时视频流播放。在本篇文章中,我们将深入探讨 `...
"ffplay精简版VC6.0平台c源码"是一个基于FFmpeg的简单播放器项目,特别针对Visual C++ 6.0这个古老的开发环境进行了优化和简化。 ffplay 是 FFmpeg 项目中的一个小型命令行播放器,它用C语言编写,展示了如何直接...
在这个名为 "ffplayformfc-code.zip_ffmpeg_ffmpeg MFC_ffmpeg vc_ffmpeg播放器mfc_f" 的压缩包中,开发者已经将 FFmpeg 的原生命令行播放器 `ffplay` 移植到了 Microsoft Visual C++ (VC++) 的环境中,并结合了 MFC...
ffplay播放器音视频同步基础 在音视频同步中,音频和视频的同步是一个非常重要的问题。在ffplay中,音频和视频的同步策略有三种:以音频为基准,同步视频到音频(AV_SYNC_AUDIO_MASTER);以视频为基准,同步音频到...