新闻中心

EEPW首页 > 模拟技术 > 设计应用 > 基于Directshow的H.264流媒体播放器设计

基于Directshow的H.264流媒体播放器设计

作者: 时间:2011-04-24 来源:网络 收藏
4解码的C++类来实现。

  利用ffmpeg库进行H.264解码时,需要自定义两个关键函数:open_net_file()和read_buffer_frame()。其中,open_net_file()函数完成与流媒体服务器的连接,接收指定流媒体文件的流相关信息,并返回类型为AVFormatContext结构体的值。read_buffer_frame()函数从bu-ffer缓冲中读取一帧数据,并交由库函数avcodec_decode_video()解码。

  (4)自定义接口的实现

  将Filter类从自定义接口类派生,并声明自定义接口的所有接口方法;然后在Filter类的实现文件中实现这些接口法,其实大都是调用应用逻辑控制类的相应函数;最后在函数NonDelegatingQueryInteRFace中暴露我们的自定义接口。

  3.4播放器的设计

  播放器采用DirectsHow应用框架,采取界面、控制逻辑和数据分离的三层程序设计方法。界面类直接从标准的对话框类CDialog派生,在界面类中定义两个自定义类:数据封装类和逻辑控制类。界面类表达一种用户操作逻辑;数据封装类集中管理各种参数;逻辑控制类具体实现业务应用逻辑。采取Directshow应用框架,不必关心数据如何输入和输出,这些问题都由Filter框架负责,只需更多的关注数据处理的算法实现、效率优化等问题。采取界面、控制逻辑和数据分离的设计结构,不仅使程序框架清晰、容易被人理解,而且具有良好的移植性和扩展性。

  播放器基于FilterGraphManager构建包含网络源Filter和H.264解码Filter的FilterGraph,即可实现网络流媒体的播放。界面类实现视频显示界面与用户的操作交互,控制逻辑可以控制视频的播放、暂停、停止、解码参数设置等,数据类实现对数据的操作管理。

  4结束语

  本流媒体播放器系统采用了Directshow应用框架和H.264视频编解码标准,能很好的实现网络流媒体视频的播放,具有结构清晰、良好的可扩展性与可移植性。由于WINCE系统是微软提供的嵌入式实时操作系统,提供了对Directshow的应用支持,故本系统也可以很好的移植到win-ce的嵌入式应用平台,实现嵌入式端的流媒体视频播放。同时,本流媒体播放系统也可很好地移植到视频点播系统中,因其采用高压缩比、低码率的H.264视频编解码标准。能有效减少网络负载、减小带宽,从而减轻网络对流媒体传输中所存在的丢包、抖动、延时等影响。

c++相关文章:c++教程


p2p机相关文章:p2p原理



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭