基于DirectShow支持可变编码的方法及系统技术方案

技术编号:13921723 阅读:75 留言:0更新日期:2016-10-27 22:26
本发明专利技术公开基于DirectShow支持可变编码的方法,包括:基于DirectShow获取音视频数据依次进行分离、解码和重采样后渲染播放,并记录当前的重采样输出格式参数;获取编码格式发生变化的音视频数据的音、视频解码器参数;创建编码格式发生变化的音视频数据的音、视频解码器及音、视频重采样器;并根据重采样输出格式参数设定编码格式发生变化的音视频数据的音、视频重采样输出格式参数并链接到音、视频渲染器;对编码格式发生变化的音视频数据进行分离、解码、重采样后传输至音、视频渲染器进行渲染播放。本发明专利技术不需要断开并更新现有的渲染器,保证了音频数据播放的连续性,不会在用户观看音视频时造成停顿。

【技术实现步骤摘要】

本专利技术涉及视频播放的
,更具体地,涉及一种基于DirectShow支持可变编码的方法及系统
技术介绍
基于DirectShow播放现有格式的视频文件时,一旦变化(如增加视频编码格式,mp4增加对H.265支持后会增加“hevc”结构),就需要升级分离器,否则无法识别、播放。DirectShow是微软公司在ActiveMovie和Video for Windows的基础上推出的新一代基于COM(Component Object Model)的流媒体处理的开发包,与DirectX开发包一起发布。DirectShow使用Filter Graph(滤镜图)模型来管理整个数据流的处理过程,DirectShow工作的时候,通过MediaType进行Filter(DirectShow的功能模块单元)之间的链接,通过MediaSample进行数据传输。DirectShow运行的方式通常是:开发者创建Filter Graph,可订制地把相应的转换方案加入Filter Graph,然后播放文件。运用DirectShow,可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。使在多媒体数据库管理系统(MDBMS)中多媒体数据的存取变得更加方便。DirectShow广泛地支持各种媒体格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等,为多媒体流的捕捉和回放提供了强有力的支持。因此,DirectShow作为一种windows操作系统上广泛采用的音视频播放方案在视频播放领域得到普遍应用。DirectShow定义了一系列的标准接口,可以方便的进行功能扩展,如播放需要的分离器、解码器等。目前,基于DirectShow进行网络视频播放,尤其是进行网络直播的过程中,可能会伴随着视频类型的改变,造成基于DirectShow进行编码的参数发生改变的情况,例如,在直播过程中插入广告时,会发生音视频格式的变化、编码器采样率的改变以及音视频的分辨率的改变等。举例来说,基于DirectShow在进行音视频播放的时候,如果编码参数发生变化(如音频格式类型由mp3变为aac、采样率由48k变为44.1k或视频分辨率大小由1920*1080变为720*576等)时,还按照原来的解码器进行解码播放显然是不行的,如图1为传统方案中基于DirectShow进行音视频解码播放的系统结构示意图,传统方案中基于DirectShow的音视频播放方法是:先在基于DirectShow的分离器101中进行音视频的分离;再分别在视频解码器102及音频解码器103中进行视频和音频解码;经过解码处理后的视频和音频分别在视频渲染器104和音频渲染器105中进行渲染后播放。传统的基于DirectShow进行音视频可变编码播放的解决方案步骤如图2所示:步骤201、当检测到基于DirectShow的音视频播放发生编码参数变化时,停止当前基于DirectShow的音视频播放;步骤202、断开原音、视频解码器链接,并断开原音、视频渲染器链接;步骤203、释放原音、视频解码器和原音、视频渲染器;步骤204、根据变化后的音视频创建新的音、视频解码器和新的渲染器。步骤205、链接新音、视频解码器,并链接新音、视频渲染器后开始解码播放。从图2中可以看出,传统的基于DirectShow进行可变编码音视频解码播放的解决方案中需要重新链接解码器和渲染器,然后再继续播放新的音视频。在重新链接解码器和渲染器的过程中会产生停顿、画面会变黑或发生跳动等现象,从而影响用户的观看体验;并且在断开原解码器和渲染器,进行新解码器和渲染器的链接过程需要一定的时间,这会增加用户的等待时间,不利于用户的观看体验。因此,提供一种基于DirectShow快速、流畅地进行可变编码播放音视频的方法是本领域亟待解决的问题。
技术实现思路
有鉴于此,本专利技术提供了一种基于DirectShow支持可变编码的方法及系统,解决了现有技术中基于DirectShow进行可变编码音视频解码播放会产生停顿、画面会变黑或发生跳动等现象的问题。为了解决上述技术问题,本专利技术提出一种基于DirectShow支持可变编码的方法,包括:基于DirectShow获取音视频数据依次进行分离、解码和重采样后传输至音、视频渲染器进行渲染播放,并记录当前的重采样输出格式参数;其中,所述音视频数据包括:编码信息、视频数据及音频数据;从所述获取音视频数据中编码格式发生变化的编码信息中获取编码格式发生变化的音视频数据的音、视频解码器参数;根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频解码器;根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频重采样器;并根据所述重采样输出格式参数设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数;利用所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数将所述编码格式发生变化的音视频数据的音、视频重采样器链接到所述音、视频渲染器;对所述编码格式发生变化的音视频数据进行分离后采用所述编码格式发生变化的音视频数据的音、视频解码器进行解码;并利用所述编码格式发生变化的音视频数据的音、视频重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。进一步地,其中,所述基于DirectShow获取音视频数据依次进行分离、解码、重采样及渲染后播放,并记录当前的重采样后的输出格式参数,包括:基于DirectShow获取音视频数据进行分离后,根据所述音视频数据的编码信息获取音、视频轨信息,并从所述音、视频轨信息中获取所述音视频数据相关的音、视频解码器参数;根据所述音、视频解码器参数创建音、视频解码器,并设定所述音、视频解码器的输出格式参数;根据所述音、视频解码器参数创建重采样器,并记录当前的重采样输出格式参数。进一步地,其中,该方法还包括:从所述获取音视频数据中编码格式未发生变化的编码信息中获取编码格式未发生变化的音视频数据的音、视频解码器参数;对所述编码格式未发生变化的音视频数据进行分离后传输至利用所述编码格式未发生变化的音视频数据的音、视频解码器参数链接的编码格式未发生变化的音视频数据的音、视频解码进行解码;并采用编码格式未发生变化的音视频数据的音、视频数据的重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。进一步地,其中,所述根据所述重采样输出格式参数设定所述码格式发生变化的音视频数据的音、视频重采样输出格式参数,还包括:设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数与所述重采样输出格式参数一致。进一步地,其中,所述编码格式发生变化的音视频数据的解码器和编码格式发生变化的音视频数据的重采样器由非DirectShow的第三方解码器提供。另一方面,本专利技术还提供一种基于DirectShow支持可变编码的系统,所述系统包括:播放器、检测模块、解码器创建模块、重采样创建模块及链接模块,其中,所述播放器,用于基于DirectShow获取音视频数据依次进行分离、解码和重采样后传输至音、视频渲染器进行渲染播放,并记录当前的重采样输出格式参数;其中,所述音视频数据包括:编码信息、视频数据及音频本文档来自技高网
...

【技术保护点】
一种基于DirectShow支持可变编码的方法,其特征在于,包括:基于DirectShow获取音视频数据依次进行分离、解码和重采样后传输至音、视频渲染器进行渲染播放,并记录当前的重采样输出格式参数;其中,所述音视频数据包括:编码信息、视频数据及音频数据;从所述获取音视频数据中编码格式发生变化的编码信息中获取编码格式发生变化的音视频数据的音、视频解码器参数;根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频解码器;根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频重采样器;并根据所述重采样输出格式参数设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数;利用所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数将所述编码格式发生变化的音视频数据的音、视频重采样器链接到所述音、视频渲染器;对所述编码格式发生变化的音视频数据进行分离后采用所述编码格式发生变化的音视频数据的音、视频解码器进行解码;并利用所述编码格式发生变化的音视频数据的音、视频重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。

【技术特征摘要】
1.一种基于DirectShow支持可变编码的方法,其特征在于,包括:基于DirectShow获取音视频数据依次进行分离、解码和重采样后传输至音、视频渲染器进行渲染播放,并记录当前的重采样输出格式参数;其中,所述音视频数据包括:编码信息、视频数据及音频数据;从所述获取音视频数据中编码格式发生变化的编码信息中获取编码格式发生变化的音视频数据的音、视频解码器参数;根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频解码器;根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频重采样器;并根据所述重采样输出格式参数设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数;利用所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数将所述编码格式发生变化的音视频数据的音、视频重采样器链接到所述音、视频渲染器;对所述编码格式发生变化的音视频数据进行分离后采用所述编码格式发生变化的音视频数据的音、视频解码器进行解码;并利用所述编码格式发生变化的音视频数据的音、视频重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。2.根据权利要求1所述的基于DirectShow支持可变编码的方法,其特征在于,所述基于DirectShow获取音视频数据依次进行分离、解码、重采样及渲染后播放,并记录当前的重采样后的输出格式参数,包括:基于DirectShow获取音视频数据进行分离后,根据所述音视频数据的编码信息获取音、视频轨信息,并从所述音、视频轨信息中获取所述音视频数据相关的音、视频解码器参数;根据所述音、视频解码器参数创建音、视频解码器,并设定所述音、视频解码器的输出格式参数;根据所述音、视频解码器参数创建重采样器,并记录当前的重采样输出格式参数。3.根据权利要求1所述的基于DirectShow支持可变编码的方法,其特征在于,还包括:从所述获取音视频数据中编码格式未发生变化的编码信息中获取编码格式未发生变化的音视频数据的音、视频解码器参数;对所述编码格式未发生变化的音视频数据进行分离后传输至利用所述编码格式未发生变化的音视频数据的音、视频解码器参数链接的编码格式未发生变化的音视频数据的音、视频解码进行解码;并采用编码格式未发生变化的音视频数据的音、视频数据的重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。4.根据权利要求1所述的基于DirectShow支持可变编码的方法,其特征在于,所述根据所述重采样输出格式参数设定所述码格式发生变化的音视频数据的音、视频重采样输出格式参数,还包括:设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数与所述重采样输出格式参数一致。5.根据权利要求1所述的基于DirectShow支持可变编码的方法,其特征在于,所述编码格式发生变化的音视频数据的解码器和编码格式发生变化的音视频数据的重采样器由非DirectShow的第三方解码器提供。6.一种基于DirectShow支持可变编码的系统,其特征在于,包括:播放器、检测模块、解码器创建模...

【专利技术属性】
技术研发人员:吴超朱春明朱彦东张鹏宇
申请(专利权)人:暴风集团股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1