用Delphi编程实现H.264视频文件的播放

2013-12-23 04:50张立平
武汉船舶职业技术学院学报 2013年1期
关键词:视频文件窗体播放器

张立平

(武汉铁路职业技术学院电子电气工程系,湖北武汉 430205)

随着流媒体播放、视频监控等应用程序的开发被普遍应用,H.264被认为是最有影响力的流媒体视频压缩标准。它既保留了以往压缩技术的优点和精华,又在编码质量和压缩比上比原有的视频编码标准都有了明显的提高。在相同的视觉感知质量上,H.264 的数据压缩比比当前DVD系统中使用的MPEG-2高2~3倍,比MPEG-4高1.5~2倍。由于H.264/AVC 采取了大量的先进算法,在编码效果和实现复杂度之间取得了良好的平衡[1-4]。正因为如此,目前网上大部分视频是基于H.264视频标准的。

传统的影音播放器没有播放H.264文件的功能,即使通过升级实现该功能,但使用时需安装,用户不方便。针对此问题,作者利用FFOCX控件在Delphi中实现了H.264视频的解码。

1 使用FFOCX 控件制作简单的H264播放器

1.1 FFOCX简介

FFmpeg是一套用于录制、转换和流化音频、视频的完整解决方案,而FFOCX 是对FFmpeg库的完美封装和扩展后的ActiveX OCX 版,支持目前所有的音视频格式。FFOCX 能够充分发挥FFmpeg库的强大功能,并且比FFmpeg官方所提供的命令行程序更灵活、强大,比如支持转换预览,支持视频合并,支持帧输入、帧输出,还支持同时转换多个文件,可以充分利用现在越来越普及的多核CPU 资源[5]。FFOCX 控件名为ActiveFFmpegControls.ocx,可以从www.ccavc.com 网站下载。

1.2 H264播放器简介

普通的H264播放器一般具有播放、暂停、停止、音量调节等功能。一个简单的H264播放器包含以下3个部分:

(1)播放窗口:用于播放H264视频文件。

(2)播放控制:包括播放、暂停、停止以及音量控制等。

(3)显示播放信息:如视频格式、帧格式、播放时间、目前播放时间等。

在用户界面中,包含视频播放窗口、水平滑块(调节视频播放位置)、列表(设置视频播放比率以及控制视频播放的按钮。在播放视频时,显示播放时间等信息。

1.3 Delphi2010中添加FFOCX控件

FFOCX 控件在Delphi中不能直接使用,必须先注册(使用Regsvr32命令)并安装后才能使用。Delphi2010中安装ActiveX 控件的方法如下[6]:

(1)注册FFOCX 控件。

执行regsvr32 ActiveFFmpegControls.ocx命令,可完成注册。

(2)启动Delphi2010。

(3)选择File→New→Package-Delphi for Win32菜单命令,新建一个包。

(4)选择Component菜单下的Import Component命令,打开Import Component对话框。

(5)选择Import ActiveX Control单选项,单击“Next”按钮,弹出“Registered ActiveX Controls”。

(6)在对话框中选择“ActiveX FFmpeg Control 3.0”。

(7)单击“Next”按钮,弹出控件的Unit等存放位置对话框,选中“Generate component wrappers”复选框。

(8)单击“Next”按钮,弹出“Create Unit”对话框。

(9)选择“Add Unit to package”单选项,单击“Finish”按钮,完成安装。

(10)在项目管理器中用鼠标右击Package,从弹出的快捷菜单中选择“Install”命令,完成Package的安装。

(11)Delphi2010 中添加FFOCX 控件成功后就可以在Delphi2010窗口中添加该控件了,该控件位于组件面板的ActiveX 控件类中,包括FFEncoder、FFPlayer、FFDecoder、FFLogger、FFLoader。* FFEncoder用于音频和视频格式的转换。

*FFPlayer用于播放音频和视频文件。

*FFDecoder用于获得媒体文件信息以及解码视频帧画面或音频采样数据.

*FFLogger捕获其他组件输出的日志。

*FFLoader用于运行时期加载动态库。

文中是使用FFPlayer控件开发的简单音视频播放器。

1.4 建立用户界面、设置对象属性

(1)新建一个基于对话框的VCL Form Application 名为Player_H264 的应用程序,窗体Caption属性设为“简单音视频播放器”,其项目名称为playerh264。调整窗体至合适大小。

(2)添加控件。

①将组件面板ActiveX控件类中的FFPlayer控件添加到窗体中,该控件用于播放视频文件。

②在窗体上添加1个打开文件对话框控件(Opendialog)。

③在窗体上添加1个面板控件(Panel)、1个ScrollBar控件、1个TrackBar控件、1个ListBox控件、4个按钮控件、5个Label控件和1个Com-BoBox控件,控件名取默认值。Panel控件窗口用于播放视频,ScrollBar控件用于控制视频播放进度,TrackBar控件用于控制播放声音。

(3)调整各控件至合适大小,效果如图1所示。

图1 添加控件效果

1.5 主要代码

(1)主窗口代码

(2)音视频文件播放窗口代码

1.6 执行代码

运行程序,结果如图2所示。

图2 运行结果

2结 语

FFOCX 控件具有丰富的功能,能实现目前所有音视频格式文件的播放。www.ccvac.com网站提供了两种格式的组件,一种是OCX 控件,其最高版本为3.0,适用于目前所有开发环境;另一种是针对Delphi 开发平台的,控件名为FFVCL,并提供了丰富的事例程序。本文开发的简单音视频播放器使用的是OCX 控件,读者可以使用此控件设计出属于自己的功能强大的媒体播放器。

1 刘辉,魏玉琛,蒲布.基于Directshow 的H.264解码器的设计与实现[J].电子技术应用,2011,37(9):139-141,148.

2 程少炼,陈林.基于Directshow 的H.264流媒体播放器设计[J].山西电子技术,2010,6:65-67.

3 吴杰,吴宁,周阳等.基于H.264的网络流媒体播放控件的设计与实现[J].南京师范大学学报(工程技术版),2011,11(4):53-56.

4 张前进.基于RTP 的H264实时传输系统的设计与实现[J].企业技术开发,2011,30(23):1-2.

5 www.ccvac.com.

6 向隅.基于Delphi的PDF文档显示的实现[J].长江大学学报(自然科学版),2009,6(2):252-254.

猜你喜欢
视频文件窗体播放器
流媒体视频文件相似性识别的方法
随心定制视频文件的缩略图
Walkman诞生40周年 索尼适时发布NW-ZX500和NW-A100系列播放器
试谈Access 2007数据库在林业档案管理中的应用
基于STM32的MP3播放器设计
Moon ACE播放器/放大器一体机
播放器背板注塑模具设计
巧设WPS窗体控件让表格填写更规范
视频文件,看过来
WinCE.net下图形用户界面的开发