H_264 在directshow中的设计与实作
- 格式:pdf
- 大小:303.60 KB
- 文档页数:6
基于DirectShow的H.264视频流过滤器的设计与实现
鲁漫红;段益群
【期刊名称】《科学技术与工程》
【年(卷),期】2009(009)009
【摘要】H.264是最新的视频压缩标准,而DirectShow则是多媒体设计的一个非常好的框架.用DirectShow设计并且实现了有自主版权的H.264视频流编解码过滤器.利用这两个过滤器,可以将视频压缩成H.264格式,然后将H.264视频文件转为AVI文件,使用Windows Media Player等普通播放器就能播放.
【总页数】5页(P2347-2350,2355)
【作者】鲁漫红;段益群
【作者单位】湖南生物机电职业技术学院,长沙,410126;湖南生物机电职业技术学院,长沙,410126
【正文语种】中文
【中图分类】TP311.11
【相关文献】
1.基于DirectShow和RTP的网络视频流研究与应用 [J], 徐国峰;汪理虎
2.基于DirectShow的MPEG4网络视频流处理系统 [J], 刘尉悦;郁专;武杰;谢明璞;张俊杰;王砚方
3.基于Directshow的H.264解码器的设计与实现 [J], 刘辉;魏玉琛;蒲布
4.基于DirectShow的视频流媒体存储系统的设计与实现 [J], 胡春华;曹元大;张磊
5.基于DirectShow的客户端实时视频流回放技术 [J], 刘琼;周慧灿
因版权原因,仅展示原文概要,查看原文内容请购买。
基于Directshow的H.264流媒体播放器设计
程少炼;陈林
【期刊名称】《山西电子技术》
【年(卷),期】2010(000)006
【摘要】基于目前最新的视频压缩编解码标准H.264,采用Directshow应用框架,设计了网络流媒体播放器系统;Directshow是微软提供的基于windows平台的优秀的流媒体应用架构,H.264标准具有高压缩比和优良的网络亲和性,基于Directshow和H.264设计的网络流媒体播放器不仅具有优良的系统架构,同时具有更好的灵活性和可扩展性,可以很方便地应用于视频点播系统(Video On Demand System)中和移植到嵌入式WINCE平台.基于Directshow分析和设计了网络源Filter和H.264解码Filter,同时阐述了网络流媒体播放器系统的整体框架.
【总页数】3页(P65-67)
【作者】程少炼;陈林
【作者单位】武汉科技大学信息科学与工程学院,湖北,武汉,430081;武汉科技大学信息科学与工程学院,湖北,武汉,430081;华中科技大学数字制造设备与技术国家重点实验室,湖北,武汉,430074
【正文语种】中文
【中图分类】TP311.11
【相关文献】
1.基于Directshow的H.264解码器的设计与实现 [J], 刘辉;魏玉琛;蒲布
2.基于DirectShow的p2p流媒体播放器的实现 [J], 刘若愚
3.基于DirectShow的流媒体播放器的设计实现 [J], 林大华
4.基于DirectShow的H.264视频流过滤器的设计与实现 [J], 鲁漫红;段益群
5.基于directshow的视频播放器设计与实现 [J], 伍开胜;罗宇;刘斌
因版权原因,仅展示原文概要,查看原文内容请购买。
H.264高清TS文件剪切系统的设计与实现本课题的研究目的是对视频基本流遵循ISO/IEC14496-10协议的高清TS文件进行剪切,以得到剪切点之间的音视频基本流类型不发生变化的TS文件。
本文设计的H.264高清TS文件剪切系统属于视频切割类软件。
为了具有精确的剪切时间定位,本系统的实现采用了按帧剪切的剪切模式。
由于B图像和P图像需要对同一个视频序列中的其他图像进行参考来进行编解码,故按帧剪切模式要求系统采用转换实现的技术对某些图像数据进行处理。
因为H.264格式的NAL流视频序列中的第一个图像为立即刷新图像,所以一个完整的视频序列可以只依靠自身及参数集而不用参考其他视频序列的图像进行解码播放,因此对视频基本流的剪切可以按照“视频序列”为单位,来划分是使用直接切割技术还是转换实现技术来进行剪切操作的NAL流数据的范围。
由于转换实现技术需要对图像数据进行编解码操作,所以只采用转换实现技术而不采用直接切割技术会降低系统的性能。
本系统对视频的第一个切割点所在视频序列采用转换实现的切割技术,对其他被切割的视频数据采用直接切割的切割技术。
本文针对系统的设计与实现完成了如下的工作内容:1.根据系统的功能要求,将"H.264高清TS文件剪切系统”设计为TS流的解复用和剪切点寻找模块、H.264的解码模块、YUV文件的剪切模块、H.264的编码模块以及复用模块这五个模块,并对这五个模块进行了接口定义。
2.对TS流的解复用和剪切点寻找模块进行了设计与实现,重点介绍了解复用、音视频同步技术在对剪切点的位置确定上的应用。
3.对需要使用转换实现的NAL流采用了H.264的解码、YUV文件的剪切以及H.264的编码操作,对H.264的解码模块和H.264的编码模块的移植进行了介绍和实现,对YUV文件的剪切模块进行了设计和实现。
4.介绍了基于DirectShow技术的复用技术,对使用了直接切割技术得到的音频基本流和使用了直接切割技术与转换实现技术得到的H.264格式视频基本流进行了到单节目H.264高清TS文件的复用。
基于Directshow的H.264网络视频监控客户端实现彭锋;林和志;黄联芬【摘要】In order to realize the real-time broadcasting of H. 264 at video monitoring client, a method that combines Directshow with MFC is adopted. Directshow taken as a drive of the video player receives data from the network, performs cache, decoding and display, and provides the API for MFC, which is used to design UI to control the process of playing. After verification on PC, the player can smoothly play the H. 264 video stream received from network, and the packet loss rate islow. The innovation of this paper is to use Directshow to play smoothly real-time H. 264 stream received from network.%为了实现视频监控客户端对H.264实时播放,采用Directshow与MFC相结合的方法,用Directshow作为视频播放的驱动,从网络接收数据,完成缓存,解码显示及封装成MFC可调用的API,MFC用来设计户界面,对播放过程进行相应的控制,达到了播放从网络接收到的H.264视频的目的.经过PC机上验证,可以流畅地从网络上接收播放H.264视频流,并且丢包率很小.在此用Directshow来实时流畅的播放从网络上接收到的H.264视频流.【期刊名称】《现代电子技术》【年(卷),期】2011(034)008【总页数】3页(P118-120)【关键词】H.264;Directshow;MFC;网络视频监控【作者】彭锋;林和志;黄联芬【作者单位】厦门大学,福建,厦门,361005;厦门大学,福建,厦门,361005;厦门大学,福建,厦门,361005【正文语种】中文【中图分类】TN919-340 引言视频监控以其直观方便信息内容丰富而广泛应用于安保,监控等场合,成为商业,交通,住宅等领域防范的重要手段。
基于DirectShow的音/视频传输系统设计与实现摘要:在IP网络基础之上,应用DirecShow这种流媒体处理开发包搭建框架,进行音/视频相关数据的回放、解码、网络传输、编码、采集的处理方案设计,最后实现时采用VC++编程软件进行操作。
基于DirecShow的音/视频传输系统为远距离视频监控、诊断故障、技术支援等计算机系统,给予利用音/视频开展实时沟通、交流的可能。
关键词:DirecShow;音/视频传输系统;设计;实现在远距离视频监控、诊断故障、技术支援等计算机系统之中,利用音/视频传输系统开展实时沟通、交流是其中较为关键的功能。
音/视频传输系统为关键设备或系统的维护修理、诊断故障给予远距离技术保障,同时为获得“实时”帮助的效果提供了较为关键的策略。
为实现现场、实时音/视频沟通、交流的功能,需要先保证音/视频相关数据得以有效的远距离传输,因为基于DirecShow的音/视频传输系统的基础在于IP网络,所以音/视频相关数据的传输也是利用卫星通信的TP网络,且在Windows这个平台之上得以实现。
一、基于DirecShow的音/视频传输系统方案设计1.选择DirecShow架构我们从程序开发应用的视角来说,利用卫星通信的TP网络,达到音/视频相关数据远距离传输必须从总体上考量数据的网络接收、数据采集、数据编/解码、数据回放与传输的方案,进而将数据传输的效率与质量有效提升,与此同时还应当尽量降低系统开发投入的成本与难度。
所以第一件要做的就是选择一个适宜的开发平台。
一般来说有以下三种开发平台可以选择:①直接利用Windows中API函数,这种平台虽然有着较大的灵活性,然而却具有开发难度高,需要较长开发时间的缺点。
②直接应用成熟的如NetMeeting等满足本系统需求的组件。
这种开发平台虽然没有多大的灵活性,却具有开发难度低,不需要过多的开发时间的优势。
③选择介于第一种与第二种开发平台之间的开发方式,结合拟开发的音/视频传输系统特点进行二次开发,这种开发平台难度与第一种开发方式相比较有很大程度的降低,却有着比第二种开发方式更大的灵活性。
H.264编码关键算法的ASIC设计与实现的开题报告一、选题背景H.264是当前最广泛使用的视频编码标准之一,被广泛应用于数字视频广播、数字电视、互联网视频传输等领域。
H.264编码算法具有良好的压缩性能和适应性,能够在有效降低视频数据率的同时保证视频质量,这使得H.264编码在高清视频传输等应用场景下得到了广泛的应用。
目前,随着视频应用领域的不断扩大,对于H.264编码算法的实时性和效率要求越来越高,其中ASIC实现的H.264编码器已经成为当前视频应用领域中的热门研究方向之一。
基于ASIC实现的H.264编码器具有功耗低、效率高、可定制化等特点,可以满足高速视频传输和图像处理等应用场景的实时性和高效性要求。
二、选题目的和意义本课题旨在研究H.264编码关键算法的ASIC设计与实现,主要包括帧内预测、帧间预测、变换和量化等关键算法的设计和实现。
通过该课题的研究,可以实现高效、低功耗的H.264编码器硬件实现,满足高速视频传输和图像处理等应用场景的实时性和高效性要求。
三、选题内容和研究方法本课题主要研究内容包括以下几个方面:1. H.264编码关键算法的ASIC设计与实现:包括帧内预测、帧间预测、变换和量化等关键算法的设计与实现。
2. H.264编码器的系统级设计:包括系统架构设计、数据流调度、时序控制等方面的设计与实现。
3. 硬件加速优化算法的研究:通过针对特定场景的算法优化,提高编码器的编码效率和整体硬件系统的性能。
4. 仿真和实验验证:对所设计的H.264编码器进行仿真验证和实验验证,验证其性能和有效性。
研究方法主要包括理论研究、算法仿真、电路设计与实现等多种方法。
在设计实现过程中,将采用基于Verilog的硬件描述语言进行设计和实现。
四、预期成果本课题的预期成果包括:1. 完成H.264编码算法的ASIC设计与实现,实现高效、低功耗的H.264编码器硬件实现。
2. 实现针对特定场景的算法优化,提高编码器的编码效率和整体硬件系统的性能。
基于H.264的数字视频解码器设计随着数字视频技术的不断发展,人们对高清视频的需求也日益增长。
H.264是一种高度有效的视频压缩标准,被广泛应用于数字视频解码器的设计中。
本文将介绍基于H.264的数字视频解码器的设计原理和实现方法。
H.264是一种先进的视频编码标准,它能够提供更高的压缩比和更好的视频质量。
数字视频解码器的主要目标是将压缩后的视频数据恢复成原始的视频信号。
基于H.264的数字视频解码器主要包括以下几个模块:解析器、解码器和显示器。
解析器负责将压缩后的视频数据进行解析,提取出其中的视频帧和相关的参数信息。
在H.264标准中,视频数据被分割为多个宏块,解析器需要根据宏块的类型和运动矢量等信息对视频数据进行解析。
解析器还需要解析出视频的分辨率、帧率和色彩空间等参数,以便后续的解码和显示操作。
解码器是数字视频解码器的核心模块,它负责将压缩后的视频数据解码成原始的视频信号。
在H.264标准中,解码器需要进行熵编码解码、运动补偿和变换解码等操作。
熵编码解码是将经过熵编码的视频数据恢复成频域系数;运动补偿是根据运动矢量对图像进行补偿,以减少运动估计误差;变换解码是将频域系数恢复成空域系数。
解码器还需要对解码后的视频数据进行去块效应滤波和色彩空间转换等操作,以提高视频的质量。
显示器是数字视频解码器的输出模块,它负责将解码后的视频信号显示在屏幕上。
显示器需要根据视频的分辨率和帧率等参数进行图像缩放和帧率转换等操作,以适应不同的显示设备。
基于H.264的数字视频解码器的设计需要充分考虑到压缩算法的复杂性和解码过程的实时性。
为了提高解码器的性能和减少功耗,可以采用硬件加速和并行处理等技术。
此外,优化解码算法和减小数据传输带宽也是设计时需要考虑的问题。
综上所述,基于H.264的数字视频解码器是实现高清视频解码的关键技术之一。
通过合理设计解析器、解码器和显示器等模块,可以实现高效、实时的数字视频解码。
未来,随着新的视频编码标准的出现,数字视频解码器的设计也将进一步发展。
H.264码率控制算法的硬件设计和实现的开题报告一、研究背景及意义随着网络技术的飞速发展,视频数据已经成为网络中重要的应用数据。
H.264/AVC编码标准由于具有出色的视频压缩比和视频质量等众多优点,被广泛应用于在线视频传输、视频监控、视像电话等领域。
在H.264/AVC编码标准中,码率控制算法是一种非常重要的算法,其主要作用是提高图像质量、控制压缩后的数据大小以及保证视频媒体的稳定性。
目前,H.264码率控制算法的研究主要集中在软件层面,并没有深入探索硬件实现方案。
传统的编码器通常使用计算机等设备进行编码,但是对于低延迟、高性能等应用场合,需要使用专用的编码器,因此设计一种H.264码率控制算法的硬件实现方案是十分必要和重要的。
二、研究内容及研究方法研究内容:1. H.264码率控制算法的原理及流程分析。
2. 实现H.264码率控制算法的硬件方案设计。
3. 设计H.264码率控制算法的硬件实现评估与测试。
研究方法:1. 对于H.264码率控制算法的原理及流程分析,采用文献调研和实验分析的方法进行研究。
2. 对于实现H.264码率控制算法的硬件方案设计,采用FPGA(现场可编程门阵列)实现技术,结合Verilog HDL语言对算法进行实现。
3. 对于设计H.264码率控制算法的硬件实现评估与测试,采用量化分析和性能测试的方法进行研究和验证。
三、研究成果及预期目标1. 设计实现一种基于FPGA的H.264码率控制算法的硬件方案。
2. 验证该算法的性能及功能。
3. 提供一种低延迟、高性能的H.264编码器的硬件实现方案。
四、研究难点及解决方法1. 难点:H.264码率控制算法的复杂度较高,涉及到多种因素,如码率预测、码率估计、视频场景判断等。
解决方法:对于这些复杂的算法进行细致的分析和研究,采用适当的算法优化方法提高算法的执行效率和准确性。
2. 难点:硬件实现方案需要考虑系统的稳定性和实时性,同时需要保证系统的延迟可以达到比较低的水平。
H.264视频解码器在DirectShow中的设计与实现1穆翠英,刘莉媛,张刚太原理工大学信息工程学院,太原(030024)E-mail:yidifeng@摘 要:ISO/TEC和ITU-T联合制定的H.264/A VC是能够提供更高压缩率和友好网络接口的新一代视频编码标准,标志着视频压缩技术的最新发展。
DirectShow 应用程序编程接口是一个基于windows 平台的优秀流媒体架构,它为windows平台上处理各种格式的媒体文件播放、音视频采集等高性能要求的多媒体应用提供了完整的解决方案。
本文深入分析了DirectShow中的关键技术,在此基础上设计实现了H.264视频解码器在DirectShow中的实现方案。
这一实现在多媒体应用中具有实际的使用价值。
关键词:DirectShow; filter; H.264; 解码器1.引言Directshow应用程序编程接口作为Directx 9.0中的一员,为在Windows上处理各种格式的媒体文件的回放、音视频采集等高性能要求的多媒体应用,提供完整的解决方案。
为了满足视频存储、视频广播和视频流的需要,ITU2T和ISO / IECJTC1联合视频工作组( JVT) 共同开发制定了视频通信的新一代视频编码标准H.264/AVC。
该标准的主要目的是进一步提高压缩效率,并为视频信号提供一个适合网络传输的接口。
由于其相比以往标准的出色的性能,H.264标准在国际上受到了广泛地重视和欢迎[1]。
微软公司推出的DirectShow没有提供H.264的视频解码器。
本文用ffmpeg中提取出的经过优化的H.264解码器,研究如何在DirectShow 中实现H.264视频解码组件。
2. DirectShow Filter 组件技术2.1 Directshow简介Directshow位于应用层,使用Filter Graph的模型管理整个数据流的处理过程,参与数据处理的功能模块叫Filter,执行一些多媒体流的操作。
Filter接收输入并产生输出,一个Filter的输出作为另一个Filter的输入,按照一定顺序连接起来。
这一系列串在一起的Filter 称为Filter graph,就像一条“流水线”协同工作如图1所示。
图1 Drectshow系统模型2.2 filter原理1本课题得到国家自然科学基金(No.607721010)的资助。
Filter 由一个或多个Pin 组成。
Filter 之间通过Pin 相互连接。
大致课分为三类:1)Source Filter :仅有Output Pin ,主要负责获取数据,数据源可以是文件、因特网计算机里的采集卡、数字摄像机等,然后数据往下传。
2)Transform Filter :同时具有Input Pin 和Output Pin ,主要负责数据的格式转换,如数据流分离合成、解码/编码等。
3)Rendering Filter :仅有Input Pin ,主要负责数据的最终去向:将数据送给显卡、声卡进行多媒体的演示或者输出到文件进行存储。
Filter 之间Pin 的连接过程如图2所示。
图2pin 的链接过程输出Pin 指向输入Pin 的连接过程步骤大致如下[2]:1)Filter Graph Manager 在输出Pin 上调用IPin ::Connect (带输入Pin 的指针作为参数);2)如果输出Pin 接受连接,则调用输入Pin 上的IPin::ReciveConnection ;3)如果输入Pin 也接受这次连接,则双方连接成功。
Filter 只有加入到Filter Graph 中并且和其它Filter 连接成完整的链路后才会发挥作用。
Filter 之间的连接实际上是连接双方的一个Media type 的协商过程。
每个Pin 都可以实现GetMediaType 函数来提供该Pin 上支持的所有Preferred Media type 。
在本设计只要检测是否为H.264的媒体类型即可。
当Pin 之间的连接成功后,各自的Pin 上会调用CompleteConnect 函数。
在Output Pin的CompleteConnect 实现中,还有一个重要的交互过程,协商Filter Graph 运行起来后Sa-mple传输使用的内存配置情况。
首先要询问一下Input Pin 上的配置要求,如果Input Pin 提供内存管理器(Allocator )则优先使用Inp-ut Pin 上的内存管理器;否则使用Output Pi-n 自己生成的内存管理器。
一般都要实现De-cide BufferSize 来决定存放Sample 的内存大小。
3.H.264视频解码Filter 设计Filter 的注册名:“264 Video Decoder”Filter 类型:Transform Filter (一个输入Pin 、一个输出Pin )CLSID : CLSID_Filter264Merit 值:MERIT_DO_NOT_USE功能描述:接受x264编码的视频流输入,解码后输出yuv420格式的图像帧序列。
Filter框架是完成Filter功能的一个操作函数集,Transform Filter实现“输入-》内部处理-》输出”的功能以完成输入和输出Pin上的媒体类型检查,决定Sample内存大小等相关功能。
Transform Filter包含一个输入Pin和一个输出Pin用于接收H.264的视频流输入,解码后输出YUY420 格式的图像帧序列。
数据的输入和处理完成后的输出由Filter框架实现。
整个Filter Graph示意如图3所示。
图3 Filter Graph 示意图图中源过滤器输出H.264压缩文件,其输出的数据流被H.264 Splitter 接收,并实现音视频分离;视频流由H.264 Decoder 实现H.264的视频解码并显示,音频流由ffdshow audio Decoder 实现解码并播放。
4. 编码实现4.1选择合适的基类对于TransInPlaceFilter可以选择的基类有:CTransformFitler、CTransInPlaceFilter、CVideoTransformFilter、CBaseFitler。
因为在两个Pin上媒体类型必须不同,这个Filter不适合用CTransInPlaceFilter,而CBaseFitler是个一般的类,需要做比其它的基类更多的工作。
视频解码Filter最好选择CTransformFilter或者CVideoTransformFilter。
所以选择其一,使用CTransformFilter。
4.2 Filter编码实现Filter的编码实现主要包括以下几部分,如图4所示。
在Directshow中Filter注册信息、自定义接口、属性页、产权保护等部分都有一般的格式。
以CTransformFitler框架函数的实现来说明主要的工作。
图4 Filter结构4.2.1创建工程一般情况下创建Filter使用一个普通的win32 DLL项目。
而且一般Filter项目不使用mfc。
这时应用程序通过cocreateinstance函数创建Filter实例。
CUnknown * WINAPI CMuxFilter::Create-Instance(LPUNKNOWN pUnk, HRESULT *phr){return new CMuxFilter(pUnk, phr);}4.2.2申明自己的类class CMuxFilter : public CTransformFilter4.2.3 实现下面几个入口函数Filter是个基于DLL的com组件,所以一般的Filter都要实现下面几个入口函数:DllMainDllGetClassObjectDllCanUnloadNowDllRegisterServerDllUnregisterServer4.2.3 com组件的类厂对象类厂对象是用来生成Filter对象的,用模板类定义了一个全局的模板类对象数组,一般格式如下:CFactoryTemplate g_Templates[1] ={{ L“264 Video Decoder ”,,//Name&CLSID_Filter264, //CLSIDC264Filter::CreateInstance,//Method to create an instance of MyComponent NULL, // Initialization function&sudInfTee // Set-up information (for filters)}};int g_cTemplates=sizeof(g_Templates) /sizeof(g_Templates[0]);4.2.4重载继承后的虚函数继承不同的基类Filter所需写的虚函数不同,对于CTransformFilter,我们需要重载以下函数:CheckInputTypeCheckTransformDecideBufferSizeGetMediaTypeTransform4.3解码部分选用ffmpeg提取出的H.264解码代码可以从官方网站下载得到。
由于H.264的解码程序是c代码,而Filter开发一般采用C++。
因此需要混合编程。
解决办法:设计一个C++风格的应用控制类将解码“内核”上可能被调用的C函数都在这个类中封装起来,在Tran-sform 函数中被调用。
这样Filter框架就只需要与这个控制类打交道,降低了编程的复杂度,可以保持一个清晰的程序结构。
5. 结论H.264视频解码filter在GraphEdit中注册后调用如图5所示:图5 H.264解码filter在GraphEdit中调用图H.264编解码标准是多媒体应用领域中的热点研究问题,基于COM组件DirectShow技术使多媒体应用开发模块化并且提供的一系列功能强大的基类极大地简化了开发过程。
本文设计并实现了H.264视频解码Transform Filter。
同理还可以在DirectShow 中实现其它解码器。
这一实现在多媒体应用中具有实际的应用价值。
参考文献[1] 毕厚杰主编.新一代视频压缩编码标准—H. 264 /A VC[M].北京:人民邮电出版社, 2005.[2] 陆其明.Directshow 开发指南[M] . 北京:清华大学出版社,2003.[3] (美) Kruglinski DJ . Visual C++ 6. 0 技术内幕[M] . 北京:北京希望电子出版社,1999.The Realization of H.264 Video Decoder Based onDirectShowMu Cuiying, Liu Liyuan, Zhang GangCollege of Information Engineering, Taiyuan University of Technology Taiyuan (030024)AbstractH.264/A VC standard is iointly being made by ITU-T Video Experts Group and ISO/IEC MPEG Video Group which is a new standard of video-compression which can provide higher compressibility and more friendly net interace. DirectShow is an excellent multimedia program interface in Windows Operating System。