流媒体播放方法和终端
技术领域
本发明涉及网络电视(Internet Protocol Television,IPTV)领域,特别是涉及一种流媒体播放方法和终端。
背景技术
IPTV终端播放来自网络的流媒体节目时要用到两个功能模块:网络接收模块和播放软件模块。流媒体节目的播放分三步,第一步是从流媒体服务器上接收媒体流数据;第二步是对接收到的媒体流数据进行乱序重排、抖动处理、丢包处理等的预处理操作,而媒体流数据预处理操作需要用到缓冲区;第三步是对媒体流数据进行解码和播放。其中,所述第一步由网络接收模块实现,第三步由播放软件模块实现,而第二步则根据流媒体服务器采用的传输协议决定是由网络接收模块或播放软件模块来实现。
不同的流媒体服务器采用的媒体流数据传输协议并不一致,如:有的流媒体服务器采用实时传输协议(Real Time Transport Protocol,RTP),有的流媒体服务器采用用户数据报协议(User Datagram Protocol,UDP)。若采用RTP协议进行媒体流数据传输,网络接收模块在接收媒体流数据时可以根据RTP协议携带的信息进行媒体流数据预处理操作,不需要播放软件模块提供用于存储媒体流数据的缓冲区;若采用UDP协议进行媒体流数据传输,则只能根据媒体流数据本身携带的信息进行媒体流数据的预处理操作,而这只能由播放软件模块实现,因此播放软件模块需具备提供缓冲区的功能,以实现媒体流数据预处理操作。因此,播放软件模块在设计开发时就要考虑是否需要设置缓冲区以实现媒体流数据预处理操作,从而可以与特定的流媒体服务器适配。
目前流媒体终端在对媒体流数据预处理操作有以下两种方案:一种方案是在播放软件模块中设置缓冲区,不管与采用何种媒体流数据传输协议的流媒体服务器进行对接,播放软件模块均分配缓冲区来实现媒体流数据的预处理操作。但在对采用RTP协议这类不需要在播放软件模块中进行媒体流数据的预处理操作的流媒体服务器,也同样会分配一次缓冲区,因此会多进行一次媒体流数据预处理操作,而这必然造成资源的极大浪费。第二种方案是在播放软件模块中不设置缓冲区,即不在播放软件模块中进行媒体流数据的预处理操作。但采用这种方案的播放终端在与采用UDP协议进行媒体流数据传输的流媒体服务器对接时,由于没有进行媒体流数据的预处理操作,媒体流数据可能混乱,严重影响媒体流的播放效果。
由上述技术方案可以看出,目前在流媒体播放终端的开发设计时就需考虑播放软件模块与特定的网络接收模块搭配才可实现对特定流媒体服务器的适配,播放软件模块与网络接收模块之间存在极大的耦合性,造成流媒体播放终端中的播放软件模块对需要媒体流数据缓冲和不需要媒体流缓冲的媒体流都进行同样的处理,无法区分处理,使得流媒体终端只能播放特定流媒体服务器提供的流媒体节目,流媒体终端的互通性能差,造成资源浪费或严重影响播放效果。
发明内容
本发明的目的是提供一种流媒体播放方法和终端,实现对不同流媒体服务器提供的流媒体节目的播放,使得同一流媒体播放终端可实现对需要缓冲区和不需要缓冲区的不同流媒体服务器进行对接并实现高质量、高速的播放效果,增强流媒体播放终端的互通能力,提高资源利用率。
为实现上述目的,本发明提供了一种流媒体播放方法包括:
创建播放实例,预设所述媒体流数据的工作模式标识,所述工作模式标识包括带缓冲模式标识和无缓冲模式标识;
根据所述预设工作模式标识,判断所述媒体流数据是否需要缓冲区,若需要,设置存储媒体流数据的缓冲区;若不需要,设置回调函数,以供获取媒体流数据;
根据预设工作模式标识获取媒体流数据,所述工作模式标识包括带缓冲模式标识和无缓冲模式标识
对所述媒体流数据进行解析,获得媒体流数据的原始编码数据和相关辅助信息;
根据预设工作模式标识判断播放所述媒体流数据是否需要缓冲区,如果是,则根据所述相关辅助信息对所述媒体流数据的原始编码数据进行相应的缓冲处理,对经过缓冲处理后的原始编码数据进行解码播放;否则,对所述媒体流数据的原始编码数据直接进行解码播放;
其中,所述根据预设工作模式标识获取媒体流数据包括:根据所述预设工作模式标识判断所述媒体流数据是否需要所述缓冲区,若所述预设工作模式标识为所述带缓冲模式标识,则需要缓冲区,被动接收媒体流数据;若所述预设工作模式标识为所述无缓冲模式标识,则不需要缓冲区,通过回调函数主动获取媒体流数据。
本发明还提供了一种流媒体播放终端,包括用于接收流媒体服务器发送的媒体流数据的网络接收模块和用于播放媒体流数据的播放软件模块,所述播放软件模块包括:
创建单元,用于创建播放实例,预设所述媒体流数据的工作模式标识;
设置单元,用于根据所述预设工作模式标识,设置存储媒体流数据的缓冲区,或者设置回调函数,以供获取媒体流数据;
获取单元,用于根据预设工作模式标识获取媒体流数据,所述工作模式标识包括带缓冲模式标识和无缓冲模式标识;
解析单元,用于对所述媒体流数据进行解析,获得媒体流数据的原始编码数据和相关辅助信息;
播放单元,用于根据预设工作模式标识判断播放所述媒体流数据是否需要缓冲区,如果是,则根据所述相关辅助信息对所述媒体流数据的原始编码数据进行相应的缓冲处理,对经过缓冲处理后的原始编码数据进行解码播放;否则,对所述媒体流数据的原始编码数据进行解码播放;
其中,所述获取单元包括:
第一判断单元,用于根据所述预设工作模式标识判定所述流媒体数据是否需要所述缓冲区,其中,根据所述预设工作模式标识是否需要所述缓冲区具体为:若所述预设工作模式标识为所述带缓冲模式标识,则需要缓冲区,若所述预设工作模式标识为所述无缓冲模式标识,则不需要缓冲区;
接收单元,根据所述第一判断单元的判定结果,若需要缓冲区,用于被动接收媒体流数据;
接收控制单元,根据所述第一判断单元的判定结果,若不需要缓冲区,用于利用回调函数主动获取媒体流数据。
本发明流媒体播放方法和终端可以接收和播放需缓冲区和不需缓冲区的流媒体节目,实现了与不同流媒体服务器的适配,使得媒体流的播放更加灵活,增强了流媒体终端产品的互通能力,提高了资源的利用率,同时流媒体终端的播放软件模块在开发设计时不用过多考虑与各种不同网络接收模块的搭配问题,使得流媒体终端的开发更加灵活。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明流媒体播放方法实施例一的流程图;
图2为本发明流媒体播放方法实施例二的流程图;
图3为本发明流媒体播放方法实施例三的流程图;
图4为本发明流媒体播放终端实施例一的结构图;
图5为本发明流媒体播放终端实施例二的结构图。
具体实施方式
如图1所示,为本发明流媒体播放方法实施例一的流程图。本实施例在接收到网络上流媒体服务器传过来的媒体流数据后,包括以下步骤:
步骤50、流媒体播放终端根据预设工作模式标识获取媒体流数据;
步骤60、流媒体播放终端对获取的媒体流数据进行解析,如进行MEPG-TS解码,得到流媒体原始编码数据(如音视频编码数据)和相关的辅助信息等;
步骤70、流媒体播放终端根据预设工作模式标识判断播放所述媒体流数据是否需要缓冲区,如果是,则根据所述相关辅助信息对所述媒体流数据的原始编码数据进行相应的缓冲处理,对经过缓冲处理后的原始编码数据进行解码播放;否则,对所述媒体流数据的原始编码数据进行解码播放。
本实施例中,流媒体播放终端可以播放需要缓冲区和不需要缓冲区的媒体流数据,提高了与不同流媒体服务器的适配能力,增强了流媒体播放的灵活性。
如图2所示,为本发明流媒体播放方法实施例二的流程图。与上述实施例一相比,本实施例在步骤50之前还包括以下步骤:
步骤10、流媒体播放终端创建播放实例,并在创建播放实例时预设所述媒体流数据的工作模式标识,所述工作模式标识包括带缓冲模式标识和无缓冲模式标识,且根据所述工作模式标识可判定媒体流数据是否需要缓冲区;
步骤20、流媒体播放终端根据预设工作模式标识,判断媒体流是否需要缓冲区,若是,执行步骤30,否则,执行步骤40;
步骤30、流媒体播放终端设置一缓冲区,用于存储媒体流数据,执行步骤501;
步骤40、流媒体播放终端设置一回调函数,用于获取媒体流数据,执行步骤502;
使得那些不需要缓冲区的媒体流数据可以不设置缓冲区,提高了流媒体播放终端的资源利用率。
步骤50具体包括:
步骤501、流媒体播放终端被动等待媒体流数据送过来并接收;
步骤502、流媒体播放终端在需要时通过回调函数主动获取媒体流数据。
本实施例通过在创建播放实例时预设工作模式标识,实现了以不同的方法获取需缓冲区和不需缓冲区的媒体流数据,实现了对不同的流媒体数据获取方法的媒体流数据进行接收,可更加灵活与不同流媒体服务器的适配。
如图3所示,为本发明流媒体播放方法第三实施例的流程图。在上述实施例二的基础上,步骤70具体包括如下步骤:
步骤701、流媒体播放终端根据预设工作模式标识判断播放所述媒体流数据是否需要缓冲区,如果是,执行步骤702,否则执行步骤705;
步骤702、流媒体播放终端根据步骤60解析后得到的相关辅助信息对媒体流数据的原始编码数据进行相应的预处理即对媒体流数据进行乱序重排、抖动处理及丢包处理等的操作;
步骤703、流媒体播放终端将经过步骤702预处理后的媒体流数据的原始编码数据存储于缓冲区中;
步骤704、流媒体播放终端判定所述缓冲区中的数据是否达到播放门限,若达到,则执行步骤705,若没有达到,等待,直到达到方可发送缓冲区中的数据;
步骤705、流媒体播放终端对接收到的媒体流数据,进行解码播放。
本实施例中,根据预设工作模式实现了对需缓冲区和不需缓冲区的媒体流数据区分播放处理,通过对需要缓冲区的媒体流数据进行预处理实现对媒体流的播放,保证了播放的效果,同时对不需要缓冲区的媒体流则不进行预处理,直接进行播放,避免了现有技术中重复进行预处理而造成的资源浪费,提高了播放速度,同时保证了播放质量,实现了对不同流媒体服务器提供的媒体流的高质量、高速的播放效果,节省了资源。
如图4所示,为本发明流媒体播放终端实施例一的结构图。本实施例包括网络接收模块1和播放软件模块2,其中播放软件模块2包括获取单元23、解析单元24和播放单元25。其中获取单元23,用于根据预设工作模式标识获取媒体流数据;解析单元24,用于对媒体流数据进行解析,获得媒体流数据的原始编码数据和相关辅助信息;播放单元25,用于根据预设工作模式标识判断播放所述媒体流数据是否需要缓冲区,如果是,则根据所述相关辅助信息对所述媒体流数据的原始编码数据进行相应的缓冲处理,对经过缓冲处理后的原始编码数据进行解码播放;否则,对所述媒体流数据的原始编码数据进行解码播放。
本实施例实现了对需缓冲区和不需缓冲的媒体流的播放,使得流媒体播放终端可以适配不同的流媒体服务器,提高了流媒体播放终端的互通能力。
如图5所示,为本发明流媒体播放终端实施例二的结构图。在上述实施例一的基础上,播放软件模块2还包括创建单元21,用于创建播放实例,预设所述媒体流数据的工作模式标识;设置单元22,用于根据所述预设工作模式标识,设置存储媒体流数据的缓冲区,或者设置回调函数,以供获取媒体流数据。
进一步地,获取单元23具体包括:第一判断单元231,用于判定根据所述媒体流数据的工作模式标识是否需要所述缓冲区;接收单元232,用于被动收媒体流数据;接收控制单元233,用于控制并利用所述回调函数主动获取媒体流数据。播放单元25具体包括:第二判断单元251,用于判定根据所述媒体流数据的工作模式标识是否需要所述缓冲区;预处理单元252,根据所述相关辅助信息对所述媒体流数据的原始编码数据进行相应的预处理操作,把经过预处理操作的媒体流数据的原始编码数据存入所述缓冲区中;播放门限判定单元253,用于判定所述缓冲区中的数据是否达到播放门限;解码播放单元254,用于对接收到的媒体流数据的原始编码数据进行解码播放。
本实施例通过判定媒体流是否需要缓冲区设置缓冲区或回调函数,实现对不同媒体流数据进行了相应的接收、处理和播放,提高了资源利用率,保证了播放质量,提高了播放速度,同时也提高了流媒体播放终端的开发设计的灵活性,不用过多考虑播放软件模块和网络接收模块的搭配问题,增强了流媒体播放终端的互通能力。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。