基于DirectShow支持可变编码的方法及系统的制作方法

文档序号:10691614阅读:452来源:国知局
基于DirectShow支持可变编码的方法及系统的制作方法
【专利摘要】本发明公开基于DirectShow支持可变编码的方法,包括:基于DirectShow获取音视频数据依次进行分离、解码和重采样后渲染播放,并记录当前的重采样输出格式参数;获取编码格式发生变化的音视频数据的音、视频解码器参数;创建编码格式发生变化的音视频数据的音、视频解码器及音、视频重采样器;并根据重采样输出格式参数设定编码格式发生变化的音视频数据的音、视频重采样输出格式参数并链接到音、视频渲染器;对编码格式发生变化的音视频数据进行分离、解码、重采样后传输至音、视频渲染器进行渲染播放。本发明不需要断开并更新现有的渲染器,保证了音频数据播放的连续性,不会在用户观看音视频时造成停顿。
【专利说明】
基于Di rectShow支持可变编码的方法及系统
技术领域
[0001 ]本发明涉及视频播放的技术领域,更具体地,涉及一种基于DirectShow支持可变编码的方法及系统。
【背景技术】
[0002]基于DirectShow播放现有格式的视频文件时,一旦变化(如增加视频编码格式,mp4增加对H.265支持后会增加“hevc”结构),就需要升级分离器,否则无法识别、播放。
[0003]DirectShow是微软公司在ActiveMovie和Video for Windows的基础上推出的新一代基于C0M(Component Object Model)的流媒体处理的开发包,与DirectX开发包一起发布。DirectShow使用Filter Graph(滤镜图)模型来管理整个数据流的处理过程,DirectShow工作的时候,通过MediaType进行Fi I ter (DirectShow的功能模块单元)之间的链接,通过MediaSamp Ie进行数据传输。
[0004]DirectShow运行的方式通常是:开发者创建FiIter Graph,可订制地把相应的转换方案加入Fi I ter Graph,然后播放文件。运用DirectShow,可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。使在多媒体数据库管理系统(MDBMS)中多媒体数据的存取变得更加方便。DirectShow广泛地支持各种媒体格式,包括4#_叫^1^^3、胃&%等,为多媒体流的捕捉和回放提供了强有力的支持。因此,DirectShow作为一种windows操作系统上广泛采用的音视频播放方案在视频播放领域得到普遍应用。DirectShow定义了一系列的标准接口,可以方便的进行功能扩展,如播放需要的分离器、解码器等。
[0005]目前,基于DirectShow进行网络视频播放,尤其是进行网络直播的过程中,可能会伴随着视频类型的改变,造成基于DirectShow进行编码的参数发生改变的情况,例如,在直播过程中插入广告时,会发生音视频格式的变化、编码器采样率的改变以及音视频的分辨率的改变等。举例来说,基于DirectShow在进行音视频播放的时候,如果编码参数发生变化(如音频格式类型由mp3变为aac、采样率由48k变为44.1k或视频分辨率大小由1920*1080变为720*576等)时,还按照原来的解码器进行解码播放显然是不行的,如图1为传统方案中基于DirectShow进行音视频解码播放的系统结构示意图,传统方案中基于DirectShow的音视频播放方法是:先在基于DirectShow的分离器101中进行音视频的分离;再分别在视频解码器102及音频解码器103中进行视频和音频解码;经过解码处理后的视频和音频分别在视频渲染器104和音频渲染器105中进行渲染后播放。传统的基于DirectShow进行音视频可变编码播放的解决方案步骤如图2所示:
[0006]步骤201、当检测到基于DirectShow的音视频播放发生编码参数变化时,停止当前基于DirectShow的音视频播放;
[0007]步骤202、断开原音、视频解码器链接,并断开原音、视频渲染器链接;
[0008]步骤203、释放原音、视频解码器和原音、视频渲染器;
[0009]步骤204、根据变化后的音视频创建新的音、视频解码器和新的渲染器。
[0010]步骤205、链接新音、视频解码器,并链接新音、视频渲染器后开始解码播放。
[0011 ] 从图2中可以看出,传统的基于Direct Show进行可变编码音视频解码播放的解决方案中需要重新链接解码器和渲染器,然后再继续播放新的音视频。在重新链接解码器和渲染器的过程中会产生停顿、画面会变黑或发生跳动等现象,从而影响用户的观看体验;并且在断开原解码器和渲染器,进行新解码器和渲染器的链接过程需要一定的时间,这会增加用户的等待时间,不利于用户的观看体验。
[0012]因此,提供一种基于DirectShow快速、流畅地进行可变编码播放音视频的方法是本领域亟待解决的问题。

【发明内容】

[0013]有鉴于此,本发明提供了一种基于DirectShow支持可变编码的方法及系统,解决了现有技术中基于DirectShow进行可变编码音视频解码播放会产生停顿、画面会变黑或发生跳动等现象的问题。
[0014]为了解决上述技术问题,本发明提出一种基于DirectShow支持可变编码的方法,包括:
[0015]基于DirectShow获取音视频数据依次进行分离、解码和重采样后传输至音、视频渲染器进行渲染播放,并记录当前的重采样输出格式参数;其中,所述音视频数据包括:编码信息、视频数据及音频数据;
[0016]从所述获取音视频数据中编码格式发生变化的编码信息中获取编码格式发生变化的音视频数据的音、视频解码器参数;
[0017]根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频解码器;
[0018]根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频重采样器;
[0019]并根据所述重采样输出格式参数设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数;
[0020]利用所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数将所述编码格式发生变化的音视频数据的音、视频重采样器链接到所述音、视频渲染器;
[0021]对所述编码格式发生变化的音视频数据进行分离后采用所述编码格式发生变化的音视频数据的音、视频解码器进行解码;并利用所述编码格式发生变化的音视频数据的音、视频重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。
[0022]进一步地,其中,所述基于DirectShow获取音视频数据依次进行分离、解码、重采样及渲染后播放,并记录当前的重采样后的输出格式参数,包括:
[0023]基于DirectShow获取音视频数据进行分离后,根据所述音视频数据的编码信息获取音、视频轨信息,并从所述音、视频轨信息中获取所述音视频数据相关的音、视频解码器参数;
[0024]根据所述音、视频解码器参数创建音、视频解码器,并设定所述音、视频解码器的输出格式参数;
[0025]根据所述音、视频解码器参数创建重采样器,并记录当前的重采样输出格式参数。
[0026]进一步地,其中,该方法还包括:
[0027]从所述获取音视频数据中编码格式未发生变化的编码信息中获取编码格式未发生变化的音视频数据的音、视频解码器参数;
[0028]对所述编码格式未发生变化的音视频数据进行分离后传输至利用所述编码格式未发生变化的音视频数据的音、视频解码器参数链接的编码格式未发生变化的音视频数据的音、视频解码进行解码;
[0029]并采用编码格式未发生变化的音视频数据的音、视频数据的重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。
[0030]进一步地,其中,所述根据所述重采样输出格式参数设定所述码格式发生变化的音视频数据的音、视频重采样输出格式参数,还包括:
[0031]设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数与所述重采样输出格式参数一致。
[0032]进一步地,其中,所述编码格式发生变化的音视频数据的解码器和编码格式发生变化的音视频数据的重采样器由非DirectShow的第三方解码器提供。
[0033]另一方面,本发明还提供一种基于DirectShow支持可变编码的系统,所述系统包括:播放器、检测模块、解码器创建模块、重采样创建模块及链接模块,其中,
[0034]所述播放器,用于基于DirectShow获取音视频数据依次进行分离、解码和重采样后传输至音、视频渲染器进行渲染播放,并记录当前的重采样输出格式参数;其中,所述音视频数据包括:编码信息、视频数据及音频数据;
[0035]所述获取模块,用于从所述获取音视频数据中编码格式发生变化的编码信息中获取编码信息发生变化的音视频数据的音、视频解码器参数;
[0036]所述解码器创建模块,用于根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频解码器;
[0037]所述重采样创建模块,用于根据所述编码格式发生变化后音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频重采样器;
[0038]并根据所述重采样输出格式参数设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数;
[0039]所述链接模块,用于利用所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数将所述编码格式发生变化的音视频数据的音、视频重采样器链接到所述音、视频渲染器;
[0040]所述播放器,还用于对所述编码格式发生变化的音视频数据进行分离后采用所述编码格式发生变化的音视频数据的音、视频解码器进行解码;并利用所述编码格式发生变化的音视频数据的音、视频重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。
[0041 ]进一步地,其中,所述播放器,还用于:
[0042]基于DirectShow获取音视频数据进行分离后,根据所述音视频数据的编码信息获取音、视频轨信息,并从所述音、视频轨信息中获取所述音视频数据相关的音、视频解码器参数;
[0043]根据所述音、视频解码器参数创建音、视频解码器,并设定所述音、视频解码器的输出格式参数;
[0044]根据所述音、视频解码器参数创建重采样器,并记录当前的重采样的输出格式参数。
[0045]进一步地,其中,所述获取模块,还用于:从所述获取的音视频数据中编码信息格式未发生变化的编码信息中获取编码格式未发生变化的音视频数据的音、视频解码器参数;
[0046]所述解码器创建模块,还用于:对所述编码格式未发生变化的音视频数据进行分离后传输至利用所述编码格式未发生变化的音视频数据的音、视频解码器参数链接的编码格式未发生变化的音视频数据的音、视频解码进行解码;
[0047]所述重采样创建模块,还用于:采用编码格式未发生变化的音视频数据的音、视频数据的重采样器对解码后的编码格式未发生变化的音、视频数据进行重采样;
[0048]所述播放器,还用于:将重采样后的编码格式未发生变化的音视频数据的音、视频数据传输至所述音、视频渲染器进行渲染播放。
[0049]进一步地,其中,所述重采样创建模块,还用于:
[0050]设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数与所述重采样输出格式参数一致。
[0051]进一步地,其中,所述编码格式发生变化的音视频数据的解码器和编码格式发生变化的音视频数据的重采样器由非DirectShow的第三方解码器提供。
[0052]与现有技术相比,本发明的基于DirectShow支持可变编码的方法及系统,实现了如下的有益效果:
[0053](I)本发明所述的基于DirectShow支持可变编码的方法及系统,通过设置重采样后的输出格式一致,使得音视频数据中编码信息格式发生变化时,新的音视频数据解码后重采样输出格式与先前设定的输出格式一致,不需要断开并更新现有的渲染器,保证了音频数据播放的连续性,不会对用户体验造成影响。
[0054](2)本发明所述的基于DirectShow支持可变编码的方法及系统,使得音视频数据中编码信息格式发生变化时,新的音视频数据解码后重采样输出格式与先前设定的输出格式一致,节省了新解码器和渲染器的链接时间,减少了用户等待的时间,提升了用户体验。
[0055]当然,实施本发明的任一产品必不特定需要同时达到以上所述的所有技术效果。
[0056]通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
【附图说明】
[0057]被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
[0058]图1为现有技术中基于DirectShow进行音视频解码播放的系统结构示意图;
[0059]图2为现有技术中基于DirectShow进行音视频可变编码播放的方法流程示意图;
[0000]图3为本发明中基于DirectShow进行音视频解码播放的系统结构示意图;
[0061 ]图4为本发明所述的基于DirectShow支持可变编码的方法流程示意图;
[0062]图5为本发明中所述音视频数据的格式结构示意图;
[0063]图6为本发明实施例2所述的基于DirectShow支持可变编码的方法的一个可选实施例的流程示意图;
[0064]图7为采用FFmpeg进行音视频数据解码和重采样的流程示意图;
[0065]图8为基于DirectShow进行音视频播放时使用FFmpeg进行解码和重采样的流程示意图;
[0066]图9为本实施例所述的基于DirectShow支持可变编码的方法的一个具体实例的初始化流程示意图;
[0067]图10为本发明实施例3所述的基于DirectShow支持可变编码的方法的一个具体实例中未检测到编码格式发生变化时的流程示意图;
[0068]图11为本发明实施例3所述的基于DirectShow支持可变编码的方法的一个具体实例中检测到编码格式发生变化时的流程示意图;
[0069]图12为本发明所述的基于DirectShow支持可变编码的系统结构示意图。
【具体实施方式】
[0070]现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
[0071]以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
[0072]对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
[0073]在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
[0074]应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
[0075]实施例1
[0076]如图3及图4所示,图3为本发明中基于DirectShow进行音视频解码播放的系统结构示意图;其中,分离器301中集成了分离单元311、视频解码器302、音频解码器303、视频重采样304及音频重采样305,音视频数据进行分离器处理后传输至视频渲染器306和音频渲染器307进行渲染播放。图4为本发明所述的基于DirectShow支持可变编码的方法流程示意图。本发明所述的基于DirectShow支持可变编码的方法,避免了解码器与渲染器之间的断开及重新链接带来的音视频播放不流畅的问题。本实施例中基于DirectShow支持可变编码的方法包括以下步骤:
[0077]步骤401、基于DirectShow获取音视频数据依次进行分离、解码和重采样后传输至音、视频渲染器进行渲染播放,并记录当前的重采样输出格式参数;其中,所述音视频数据包括:编码信息、视频数据及音频数据。如图5所示,为音视频数据的格式结构示意图,包括:编码信息501、视频数据502及音频数据503。
[0078]步骤402、从所述获取音视频数据中编码格式发生变化的编码信息中获取编码格式发生变化的音视频数据的音、视频解码器参数。
[0079]步骤403、断开当前的音、视频解码器,根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频解码器。
[0080]步骤404、断开当前的音、视频重采样器,根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频重采样器;并根据所述重采样输出格式参数设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数。其中,重采样是指对无压缩数据进行格式或参数转换,如将RGB格式的视频转换为YUV格式的视频,或对音频进行采样率转换。
[0081]步骤405、利用所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数将所述编码格式发生变化的音视频数据的音、视频重采样器链接到所述音、视频渲染器。
[0082]步骤406、对所述编码格式发生变化的音视频数据进行分离后采用所述编码格式发生变化的音视频数据的音、视频解码器进行解码;并利用所述编码格式发生变化的音视频数据的音、视频重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。
[0083]本实施例所述的基于DirectShow支持可变编码的方法,在分离器中集成了解码和重采样功能,直接发送无压缩的音视频数据到渲染器。保证分离器的输出格式始终保持统一,不发生变化,因此分离器与渲染器之间不需要重新链接就能正常工作。保证了当编码格式或参数发生变化的时候,播放数据的连续性,不会对用户体验造成影响。并且,分离器内部的解码器和重采样还可以由非DirectShow提供(如使用FFmpeg或其他第三方解码器等)。此过程中所有操作都在分离器内部进行,不会对用户体验产生影响。
[0084]实施例2
[0085]如图6所示,为本发明实施例2所述的基于DirectShow支持可变编码的方法的一个可选实施例的流程示意图。本实施例在实施例1的基础上,描述了基于DirectShow发生音视频数据编码信息变化时,进行重新解码、重采样的具体内容。本实施例所述的基于DirectShow支持可变编码的方法的步骤如下:
[0086]步骤601、基于DirectShow获取音视频数据进行分离后,根据所述音视频数据的编码信息获取音、视频轨信息(音、视频信息中包含有多个音、视频轨信息),并从所述音、视频轨信息中获取所述音视频数据相关的音、视频解码器参数;其中,所述音视频数据包括:编码信息、视频数据及音频数据。
[0087]步骤602、根据所述音、视频解码器参数创建音、视频解码器,并设定所述音、视频解码器的输出格式参数。
[0088]步骤603、根据所述音、视频解码器参数创建重采样器,并记录当前的重采样输出格式参数。
[0089]步骤604、将重采样后的音、视频数据传输至音、视频渲染器进行渲染播放,并记录当前的重采样输出格式参数。
[0090]步骤605、从所述获取音视频数据中编码格式发生变化的编码信息中获取编码格式发生变化的音视频数据的音、视频解码器参数。
[0091]步骤606、断开当前的音、视频解码器,根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频解码器。
[0092]步骤607、断开当前的音、视频重采样器,根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频重采样器,并根据所述重采样输出格式参数设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数;优选地,设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数与所述重米样输出格式参数一致。
[0093]步骤608、利用所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数将所述编码格式发生变化的音视频数据的音、视频重采样器链接到所述音、视频渲染器。
[0094]步骤609、从所述获取音视频数据中编码格式未发生变化的编码信息中获取编码格式未发生变化的音视频数据的音、视频解码器参数。
[0095]步骤610、对所述编码格式未发生变化的音视频数据进行分离后传输至利用所述编码格式未发生变化的音视频数据的音、视频解码器参数链接的编码格式未发生变化的音视频数据的音、视频解码进行解码;并采用编码格式未发生变化的音视频数据的音、视频数据的重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。
[0096]优选地,本实施例中所述的解码和重采样由非DirectShow的第三方解码器提供,如使用FFmpeg或其他第三方解码器,FFmpeg是一种具用有音视频解码、重采样等功能的开源库。本实施例采用FFmpeg为例进行说明,如图7所示,为采用FFmpeg进行音视频数据解码和重采样的流程示意图,包括如下步骤:
[0097]步骤701、输入音视频数据;
[0098]步骤702、判断是否存在音视频轨;
[0099]步骤703、存在音视频轨时,获取该音视频轨的编码信息;
[0100]步骤704、根据获取的编码信息创建FFmpeg解码器;
[0101 ] 步骤705、设定FFmpeg解码器的输出参数;
[0102]步骤706、创建FFmpeg重采样;
[0103]步骤707、记录重采样格式参数;
[0104]步骤708、创建输出传输功能单元(pin),并继续判断是否存在下一音视频轨;
[0105]步骤709、不存在音视频轨时,结束音视频数据解码和重采样。
[Ο?Ο?] 如图8为基于DirectShow进行音视频播放时,使用FFmpeg进行解码和重采样的流程示意图,其具体步骤如下:
[0107]步骤801、开始输入音视频数据;
[0108]步骤802、依次读取音视频数据;
[0109]步骤803、判断是否读取到音视频数据;
[0110]步骤804、若未读取到音视频数据,则结束FFmpeg解码和重采样;
[0111]步骤805、若读取到音视频数据,比较该音视频数据编码是否发生变化;
[0112]步骤806、若音视频数据编码未发生变化,则进行FFmpeg解码;
[ΟΙ13]步骤807、进行FFmpeg重采样;
[0114]步骤808、FFmpeg重采样后输出数据进行渲染并进行下一数据读取;
[0115]步骤809、若音视频数据编码发生变化,则关闭FFmpeg解码器;
[0116]步骤810、关闭FFmpeg重采样;
[0?17] 步骤811、创建新的FFmpeg解码器;
[0118]步骤812、创建新的FFmpeg重采样;
[0119]步骤813、记录FFmpeg重采样格式参数,并进行FFmpeg解码。
[0120]实施例3
[0121 ]如图9所示,为本实施例所述的基于DirectShow支持可变编码的方法的一个具体实例的初始化流程示意图。本实施例所述的基于DirectShow支持可变编码的方法包括如下步骤:
[0122]音视频数据的初始化步骤:
[0123]步骤901、获取视频解码器类型为H.264参数为1920*1080。其中,当前播放的视频格式为H.264,1920*1080,音频格式为mp3,2声道 16bit 44.1k。
[0124]步骤902、创建H.264解码器,设定解码器输出格式为YV12,1920*1080。
[0125]步骤903、创建视频重采样,设定输出格式为RGB32,1920*1080,并记录当前格式为
H.264 ,1920*1080,重采样输出格式为RGB32,1920*1080;创建视频输出传输功能单元(Pin),并指定格式为RGB32,1920*1080,以后以此格式为视频输出传输功能单元格式标准。
[0126]步骤904、创建mp3解码器,设定解码器输出格式为PCM 2声道,16bit 44.1k。
[0127]步骤905、创建音频重采样,设定输出格式为PCM 2声道,16bit 44.1k,并记录当前格式为mp3,2声道16bit 44.11^,重采样输出格式为?01,2声道1613^ 44.1k;创建音频输出Pin,并指定格式为PCM 2声道16bit 44.1k。以后以此格式为标准。
[0128]如图10所示,为本实施例所述的基于DirectShow支持可变编码的方法的一个具体实例中未检测到编码格式发生变化时的流程示意图。基于DirectShow进行播放时音视频数据编码格式未发生变化的流程步骤如下:
[0129]步骤1001、读取视频数据,格式为H.264,1920*1080,检测到音视频数据编码格式未发生变化。
[0130]步骤1002、解码视频数据,输出为YVl 2,1920*1080。
[0131]步骤1003、重采样视频数据,输出为RGB32,1920*1080,并通过Pin输出视频数据,格式为 RGB32 1920*1080。
[0132]步骤1004、读取音频数据,格式为mp3,2声道16bit44.lk,检测到音频数据编码格式及参数未发生变化。
[0133]步骤1005、解码音频数据,输出为PCM,2声道16bit 44.1k。
[0134]步骤1006、重采样音频数据,输出为PCM,2声道16bit44.lk,通过Pin输出音频数据,格式为PCM,2声道16bit 44.1k。
[0135]如图11所示,为本实施例所述的基于DirectShow支持可变编码的方法的一个具体实例中检测到编码格式发生变化时的流程示意图。播放一段时间后,检测到音视频数据编码格式发生变化,视频格式变为Divx,720*576,音频格式变为aac,6声道16bit 48k,此时按照本发明方法进行基于DirectShow播放的步骤如下:
[0136]步骤1101、读取音视频数据中的编码信息,检测到视频编码格式及参数变为Divx,720*576,与原始的 H.264,1920*1080 不同。
[0137]步骤1102、释放原H.264解码器,创建Divx解码器,设定视频解码器输出格式为RGB720*576。
[0138]步骤1103、释放原视频重采样,并创建新视频重采样,设定输出格式为RGB32,1920*1080,并记录当前视频格式为Divx 720*576。
[0139]步骤1104、检测到音频编码格式及参数aac,6声道16bit 48k,与原始的mp3,2声道16bit 44.1k不同。
[0140]步骤1105、释放原mp3解码器,创建aac解码器,并设定音频解码器输出格式为PCM6声道 16bit 48k。
[0141]步骤1106、释放原音频重采样,创建新音频重采样,设定输出格式为PCM2声道16bit 44.lk,并记录当前音频格式为aac 6声道16bit 48k。
[0142]步骤1107、读取格式为Divx 720*576的视频数据,解码后输出格式为RGB 720*576。
[0143]步骤1108、对解码后输出的视频数据进行重采样,输出格式为RGB32 1920*1080,并通过Pin输出视频数据,格式为RGB32 1920*1080。
[0144]步骤1109、读取格式为aac,6声道16bit48k的音频数据,进行解码后输出格式为PCM,6声道 16bit 48k。
[0145]步骤1110、对解码后的音频数据进行重采样,输出格式为PCM2声道16bit 44.1k,通过Pin输出音频数据,格式为PCM,2声道16bit 44.1k。
[0146]实施例4
[0147]如图12所示,为本发明所述的基于DirectShow支持可变编码的系统结构示意图。本实施例的基于DirectShow支持可变编码的系统用于实现上述实施例中的基于DirectShow支持可变编码的方法,该系统包括:播放器1201、获取模块1202、解码器创建模块1203、重采样创建模块1204及链接模块1205。
[0148]其中,所述播放器1201,与所述获取模块1202相藕接,用于基于DirectShow获取音视频数据依次进行分离、解码和重采样后传输至音、视频渲染器进行渲染播放,并记录当前的重采样输出格式参数;其中,所述音视频数据包括:编码信息、视频数据及音频数据;
[0149]所述获取模块1202,与所述播放器1201及解码器创建模块1203相藕接,用于从所述获取音视频数据中编码格式发生变化的编码信息中获取编码信息发生变化的音视频数据的音、视频解码器参数;
[0150]所述解码器创建模块1203,与所述获取模块1202及重采样创建模块1204相藕接,用于根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频解码器;
[0151]所述重采样创建模块1204,与所述解码器创建模块1203及链接模块1205相藕接,用于根据所述编码格式发生变化后音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频重采样器;
[0152]并根据所述重采样输出格式参数设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数。
[0153]所述链接模块1205,与所述重采样创建模块1204及播放器1201相藕接,用于利用所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数将所述编码格式发生变化的音视频数据的音、视频重采样器链接到所述音、视频渲染器。
[0154]所述播放器1201,还与所述链接模块1205相藕接,用于对所述编码格式发生变化的音视频数据进行分离后采用所述编码格式发生变化的音视频数据的音、视频解码器进行解码;并利用所述编码格式发生变化的音视频数据的音、视频重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。
[0155]进一步地,所述播放器1201,还用于:
[0156]基于DirectShow获取音视频数据进行分离后,根据所述音视频数据的编码信息获取音、视频轨信息,并从所述音、视频轨信息中获取所述音视频数据相关的音、视频解码器参数;
[0157]根据所述音、视频解码器参数创建音、视频解码器,并设定所述音、视频解码器的输出格式参数;
[0158]根据所述音、视频解码器参数创建重采样器,并记录当前的重采样的输出格式参数。
[0159]所述获取模块1202还用于:
[0160]从所述获取的音视频数据中编码信息格式未发生变化的编码信息中获取编码格式未发生变化的音视频数据的音、视频解码器参数;
[0161]所述解码器创建模块1203还用于:对所述编码格式未发生变化的音视频数据进行分离后传输至利用所述编码格式未发生变化的音视频数据的音、视频解码器参数链接的编码格式未发生变化的音视频数据的音、视频解码进行解码;
[0162]所述重采样创建模块1204还用于:采用编码格式未发生变化的音视频数据的音、视频数据的重采样器对解码后的编码格式未发生变化的音、视频数据进行重采样;
[0163]所述播放器1201还用于:将重采样后的编码格式未发生变化的音视频数据的音、视频数据传输至所述音、视频渲染器进行渲染播放。
[0164]所述重采样创建模块1203还用于:
[0165]设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数与所述重采样输出格式参数一致。
[0166]优选地,本实施中的所述编码格式发生变化的音视频数据的解码器和编码格式发生变化的音视频数据的重采样器由非DirectShow的第三方解码器提供,例如,通过FFmpeg提供编码格式发生变化的音视频数据的解码和重采样。
[0167]通过以上各个实施例可知,本发明的基于DirectShow支持可变编码的方法及系统存在的有益效果是:
[0168](I)本发明所述的基于DirectShow支持可变编码的方法及系统,通过设置重采样后的输出格式一致,使得音视频数据中编码信息格式发生变化时,新的音视频数据解码后重采样输出格式与先前设定的输出格式一致,不需要断开并更新现有的解码器和渲染器,保证了音频数据播放的连续性,不会对用户体验造成影响。
[0169](2)本发明所述的基于DirectShow支持可变编码的方法及系统,使得音视频数据中编码信息格式发生变化时,新的音视频数据解码后重采样输出格式与先前设定的输出格式一致,节省了新解码器和渲染器的链接时间,减少了用户等待的时间,提升了用户体验。
[0170]本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-R0M、光学存储器等)上实施的计算机程序产品的形式。
[0171]虽然已经通过例子对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上例子仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范围由所附权利要求来限定。
【主权项】
1.一种基于DirectShow支持可变编码的方法,其特征在于,包括: 基于DirectShow获取音视频数据依次进行分离、解码和重采样后传输至音、视频渲染器进行渲染播放,并记录当前的重采样输出格式参数;其中,所述音视频数据包括:编码信息、视频数据及音频数据; 从所述获取音视频数据中编码格式发生变化的编码信息中获取编码格式发生变化的音视频数据的音、视频解码器参数; 根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频解码器; 根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频重采样器; 并根据所述重采样输出格式参数设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数; 利用所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数将所述编码格式发生变化的音视频数据的音、视频重采样器链接到所述音、视频渲染器; 对所述编码格式发生变化的音视频数据进行分离后采用所述编码格式发生变化的音视频数据的音、视频解码器进行解码;并利用所述编码格式发生变化的音视频数据的音、视频重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。2.根据权利要求1所述的基于DirectShow支持可变编码的方法,其特征在于,所述基于DirectShow获取音视频数据依次进行分离、解码、重采样及渲染后播放,并记录当前的重采样后的输出格式参数,包括: 基于DirectShow获取音视频数据进行分离后,根据所述音视频数据的编码信息获取音、视频轨信息,并从所述音、视频轨信息中获取所述音视频数据相关的音、视频解码器参数; 根据所述音、视频解码器参数创建音、视频解码器,并设定所述音、视频解码器的输出格式参数; 根据所述音、视频解码器参数创建重采样器,并记录当前的重采样输出格式参数。3.根据权利要求1所述的基于DirectShow支持可变编码的方法,其特征在于,还包括: 从所述获取音视频数据中编码格式未发生变化的编码信息中获取编码格式未发生变化的音视频数据的音、视频解码器参数; 对所述编码格式未发生变化的音视频数据进行分离后传输至利用所述编码格式未发生变化的音视频数据的音、视频解码器参数链接的编码格式未发生变化的音视频数据的音、视频解码进行解码; 并采用编码格式未发生变化的音视频数据的音、视频数据的重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。4.根据权利要求1所述的基于DirectShow支持可变编码的方法,其特征在于,所述根据所述重采样输出格式参数设定所述码格式发生变化的音视频数据的音、视频重采样输出格式参数,还包括: 设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数与所述重采样输出格式参数一致。5.根据权利要求1所述的基于DirectShow支持可变编码的方法,其特征在于,所述编码格式发生变化的音视频数据的解码器和编码格式发生变化的音视频数据的重采样器由非DirectShow的第三方解码器提供。6.一种基于DirectShow支持可变编码的系统,其特征在于,包括:播放器、检测模块、解码器创建模块、重采样创建模块及链接模块,其中, 所述播放器,用于基于DirectShow获取音视频数据依次进行分离、解码和重采样后传输至音、视频渲染器进行渲染播放,并记录当前的重采样输出格式参数;其中,所述音视频数据包括:编码信息、视频数据及音频数据; 所述获取模块,用于从所述获取音视频数据中编码格式发生变化的编码信息中获取编码信息发生变化的音视频数据的音、视频解码器参数; 所述解码器创建模块,用于根据所述编码格式发生变化的音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频解码器; 所述重采样创建模块,用于根据所述编码格式发生变化后音、视频解码器参数创建编码格式发生变化的音视频数据的音、视频重采样器; 并根据所述重采样输出格式参数设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数; 所述链接模块,用于利用所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数将所述编码格式发生变化的音视频数据的音、视频重采样器链接到所述音、视频清染器; 所述播放器,还用于对所述编码格式发生变化的音视频数据进行分离后采用所述编码格式发生变化的音视频数据的音、视频解码器进行解码;并利用所述编码格式发生变化的音视频数据的音、视频重采样器进行重采样后传输至所述音、视频渲染器进行渲染播放。7.根据权利要求6所述的基于DirectShow支持可变编码的系统,其特征在于,所述播放器,还用于: 基于DirectShow获取音视频数据进行分离后,根据所述音视频数据的编码信息获取音、视频轨信息,并从所述音、视频轨信息中获取所述音视频数据相关的音、视频解码器参数; 根据所述音、视频解码器参数创建音、视频解码器,并设定所述音、视频解码器的输出格式参数; 根据所述音、视频解码器参数创建重采样器,并记录当前的重采样的输出格式参数。8.根据权利要求6所述的基于DirectShow支持可变编码的系统,其特征在于,所述获取模块,还用于:从所述获取的音视频数据中编码信息格式未发生变化的编码信息中获取编码格式未发生变化的音视频数据的音、视频解码器参数; 所述解码器创建模块,还用于:对所述编码格式未发生变化的音视频数据进行分离后传输至利用所述编码格式未发生变化的音视频数据的音、视频解码器参数链接的编码格式未发生变化的音视频数据的音、视频解码进行解码; 所述重采样创建模块,还用于:采用编码格式未发生变化的音视频数据的音、视频数据的重采样器对解码后的编码格式未发生变化的音、视频数据进行重采样; 所述播放器,还用于:将重采样后的编码格式未发生变化的音视频数据的音、视频数据传输至所述音、视频渲染器进行渲染播放。9.根据权利要求6所述的基于DirectShow支持可变编码的系统,其特征在于,所述重采样创建模块,还用于: 设定所述编码格式发生变化的音视频数据的音、视频重采样输出格式参数与所述重采样输出格式参数一致。10.根据权利要求6所述的基于DirectShow支持可变编码的系统,其特征在于,所述编码格式发生变化的音视频数据的解码器和编码格式发生变化的音视频数据的重采样器由非DirectShow的第三方解码器提供。
【文档编号】H04N21/4385GK106060628SQ201610491470
【公开日】2016年10月26日
【申请日】2016年6月28日
【发明人】吴超, 朱春明, 朱彦东, 张鹏宇
【申请人】暴风集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1