音视频同步播放的方法及装置

文档序号:1675916 发布日期:2019-12-31 浏览:21次 >En<

阅读说明:本技术 音视频同步播放的方法及装置 (Method and device for synchronously playing audio and video ) 是由 王伟杰 于 2018-06-21 设计创作,主要内容包括:本申请提供一种音视频同步播放的方法及装置,应用在基于HTML5平台的多媒体设备上,方法包括:通过运行前台线程,由前台线程将音视频时间戳发送至与前台线程不同的后台线程;通过运行后台线程,由后台线程依据每帧音视频时间戳确定是否播放每帧音视频时间戳对应的音视频数据,若是,则向前台线程返回播放音视频数据的通知,以使前台线程播放音视频数据;其中,后台线程与前台线程相互独立运行。本申请通过采用前台线程与后台线程的结合实现HTML5平台中的音视频同步播放,由于前台线程采用只发送音视频时间戳的方式实现的同步播放,因此可以降低前台线程与后台线程间数据传递的性能损耗,保证前台线程播放音视频数据的实时性。(The application provides a method and a device for synchronously playing audio and video, which are applied to multimedia equipment based on an HTML5 platform, and the method comprises the following steps: by running a foreground thread, the foreground thread sends the audio and video time stamp to a background thread different from the foreground thread; by running the background thread, the background thread determines whether to play audio and video data corresponding to each frame of audio and video time stamp according to each frame of audio and video time stamp, if so, a notification of playing the audio and video data is returned to the foreground thread so that the foreground thread plays the audio and video data; wherein the background thread and the foreground thread run independently of each other. The audio and video synchronous playing in the HTML5 platform is realized by combining the foreground thread and the background thread, and the synchronous playing realized by only sending the audio and video time stamp is adopted by the foreground thread, so that the performance loss of data transmission between the foreground thread and the background thread can be reduced, and the real-time property of the foreground thread for playing the audio and video data is ensured.)

音视频同步播放的方法及装置

技术领域

本申请涉及通信技术领域,尤其涉及一种音视频同步播放的方法及装置。

背景技术

音视频同步指的是视频与音频同步,即当前播放的声音和当前显示的画面在时域上保持一致。目前实现音视频同步播放方法,通常基于windows平台、linux平台、安卓平台、苹果平台,通过多个前台线程并行处理方式,在线程之间直接进行音视频数据传递。然而由于在HTML5(Hypertext Markup Language,超文本标记语言)平台中不能进行多个前台线程并行处理,因此上述音视频同步播放方法并不适用于HTML5平台。

发明内容

有鉴于此,本申请提供一种音视频同步播放的方法及装置,以解决HTML5平台中音视频无法同步播放的问题。

根据本申请实施例的第一方面,提供一种音视频同步播放的方法,所述方法应用在基于HTML5平台的多媒体设备上,所述多媒体设备运行前台线程,所述前台线程用于播放音视频数据,所述方法包括:

通过运行所述前台线程,由所述前台线程将音视频时间戳发送至与所述前台线程不同的后台线程;

通过运行所述后台线程,由所述后台线程依据每帧音视频时间戳确定是否播放每帧音视频时间戳对应的音视频数据,若是,则向所述前台线程返回播放音视频数据的通知,以使所述前台线程播放音视频数据;

其中,所述后台线程与所述前台线程相互独立运行。

根据本申请实施例的第二方面,提供一种音视频同步播放的装置,所述装置应用在基于HTML5平台的多媒体设备上,所述多媒体设备运行前台线程,所述前台线程用于播放音视频数据,所述装置包括:

第一运行模块,用于通过运行所述前台线程,由所述前台线程将音视频时间戳发送至与所述前台线程不同的后台线程;

第二运行模块,用于通过运行所述后台线程,由所述后台线程依据每帧音视频时间戳确定是否播放每帧音视频时间戳对应的音视频数据,若是,则向所述前台线程返回播放音视频数据的通知,以使所述前台线程播放音视频数据;

其中,所述后台线程与所述前台线程相互独立运行。

根据本申请实施例的第三方面,提供一种多媒体设备,所述设备包括可读存储介质和处理器;

其中,所述可读存储介质,用于存储机器可执行指令;

所述处理器,用于读取所述可读存储介质上的所述机器可执行指令,并执行所述指令以实现权利要求1-4任一所述方法的步骤。

应用本申请实施例,本申请基于HTML5平台,通过采用前台线程与后台线程的结合实现音视频同步播放,即由前台线程将音视频时间戳发送至与前台线程不同的后台线程,由后台线程依据每帧音视频时间戳确定是否播放对应的音视频数据,若是,则向前台线程返回播放音视频数据的通知,以使前台线程播放音视频数据,由于前台线程采用只发送音视频时间戳的方式实现的同步播放,因此可以降低前台线程与后台线程间数据传递的性能损耗,保证前台线程播放音视频数据的实时性。

附图说明

图1为本申请根据一示例性实施例示出的一种音视频同步播放的方法的实施例流程图;

图2为本申请根据一示例性实施例示出的另一种音视频同步播放的方法的实施例流程图;

图3为本申请根据一示例性实施例示出的一种多媒体设备的硬件结构图;

图4为本申请根据一示例性实施例示出的一种音视频同步播放的装置的实施例结构图;

图5为本申请根据一示例性实施例示出的另一种音视频同步播放的装置的实施例结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

图1为本申请根据一示例性实施例示出的一种音视频同步播放的方法的实施例流程图,该实施例可以应用在基于HTML5平台的多媒体设备上,本申请实施例中,该多媒体设备上运行有前台线程和后台线程,其中,前台线程也可称为页面线程,用于播放音视频数据,后台线程用于判断是否同步播放音视频数据,在HTML5平台中,可以使用Web Worker技术实现后台线程,由于前台线程与后台线程相互独立运行,因此后台线程的运行并不影响前台线程的性能,并且由于在HTML5平台中,线程之间不能直接进行数据传递,因此可以通过postMessage方式实现前台线程与后台线程之间的数据传递。如图1所示,该音视频同步播放的方法包括如下步骤:

步骤101:通过运行前台线程,由前台线程将音视频时间戳发送至与前台线程不同的后台线程。

在一实施例中,前台线程可以将音视频数据和音视频时间戳数据分别存储在不同的存储单元,由于前台线程和后台线程通过postMessage方式进行数据交互的性能与数据量有关,因此前台线程可以只将音视频时间戳发送至后台线程,以降低前台线程与后台线程间数据传递的性能损耗,保证前台线程播放音视频数据的实时性。

在一实施例中,可以通过前台线程主动发送的方式向后台线程发送音视频时间戳,具体地,前台线程可以监测视频时间戳链表中未发送的视频时间戳的数量是否达到预设数值,当监测到达到预设数值时,拷贝视频时间戳链表中未发送的视频时间戳及音频时间戳链表中未发送的音频时间戳,并将拷贝的音视频时间戳发送至后台线程。

其中,前台线程每次先在视频时间戳链表中缓存预设数值帧的视频时间戳后再发送,该预设数值可以根据实际需求进行设置,只要不影响视频播放实时性即可。此外,前台线程在将拷贝的音视频时间戳发送至后台线程后,可以将视频时间戳链表中已发送的视频时间戳和音频时间戳链表中已发送的音频时间戳删除。

在一实施例中,可以通过前台线程被动发送的方式向后台线程发送音视频时间戳,具体地,前台线程可以在接收到后台线程的数据请求时,拷贝视频时间戳链表中未发送的视频时间戳,及音频时间戳链表中未发送的音频时间戳,并将拷贝的音视频时间戳发送至后台线程。

其中,前台线程在接收到后台线程发送的数据请求时,表示前台线程之前发送至后台线程的音视频时间戳已经处理完成,需要前台线程发送新的音视频时间戳。此外,前台线程在将拷贝的音视频时间戳发送至后台线程后,也可以将视频时间戳链表中已发送的视频时间戳和音频时间戳链表中已发送的音频时间戳删除。

在一实施例中,前台线程也可以通过主动发送与被动发送的结合向后台线程发送音视频时间戳,具体地,在启动前台线程和后台线程后,在视频时间戳链表中的视频时间戳的数量达到预设数值时,前台线程拷贝视频时间戳链表中的视频时间戳和音频时间戳链表中的音频时间戳,并向后台线程发送拷贝的音视频时间戳,此后,前台线程在接收到后台线程的数据请求时,直接将视频时间戳链表中未发送的视频时间戳和音频时间戳链表中未发送的音频时间戳发送至后台线程。从而在不影响前台线程播放实时性的基础上,可以保证后台线程持续进行判断处理。

步骤102:通过运行后台线程,由后台线程依据每帧音视频时间戳确定是否播放每帧音视频时间戳对应的音视频数据,若是,则执行步骤103,若否,则执行步骤104。

上述步骤102的处理过程,可以示例性参见下述图2所示实施例的描述,在此先不详述。

步骤103:由后台线程向前台线程返回播放音视频数据的通知,以使前台线程播放音视频数据。

在一实施例中,后台线程发送的通知中可以携带视频时间戳和音频时间戳及播放标志,从而前台线程可以根据播放标志,同步播放视频时间戳对应的视频数据和音频时间戳对应的音频数据。此外,前台线程在播放之后,可以将相应的视频数据和音频数据删除。

需要说明的是,由于音视频同步播放业务中通常以视频为主,音频为辅,因此,后台线程在依据每帧音视频时间戳确定是否播放对应的音视频数据过程中,在视频时间戳小于音频时间戳的情况下,即音频时间戳相对视频时间戳晚,可以在通知中只携带视频时间戳及播放标志,从而前台线程根据播放标志,只播放视频时间戳对应的视频数据。

步骤104:由后台线程向前台线程返回丢弃音视频数据的通知,以使前台线程丢弃音视频数据。

在一实施例中,后台线程发送的通知中可以携带视频时间戳和音频时间戳及丢弃标志,从而前台线程可以根据丢弃标志,丢弃视频时间戳对应的视频数据和音频时间戳对应的音频数据。

本申请实施例中,基于HTML5平台,通过采用前台线程与后台线程的结合实现音视频同步播放,即由前台线程将音视频时间戳发送至与前台线程不同的后台线程,由后台线程依据每帧音视频时间戳确定是否播放对应的音视频数据,若是,则向前台线程返回播放音视频数据的通知,以使前台线程播放音视频数据,由于前台线程采用只发送音视频时间戳的方式实现的同步播放,因此可以降低前台线程与后台线程间数据传递的性能损耗,保证前台线程播放音视频数据的实时性。

图2为本申请根据一示例性实施例示出的另一种音视频同步播放的方法的实施例流程图,本实施例利用本申请实施例提供的上述方法,以如何由后台线程依据每帧音视频时间戳确定是否播放每帧音视频时间戳对应的音视频数据为例进行示例性说明,如图2所示,该音视频同步播放的方法包括如下步骤:

步骤201:后台线程读取第一帧音视频时间戳和系统时间,将该帧视频时间戳确定为基准时间点,及将读取的系统时间确定为参考时间点,并直接确定播放该帧音视频时间戳对应的音视频数据。

在一实施例中,后台线程在执行步骤201之前,可以先判断视频时间戳的数量是否大于1,若是,则执行步骤201,若否,则直接将播放音视频数据的通知发送至前台线程。

在一实施例中,后台线程对于读取的第一帧音视频时间戳,可以先重置同步参考时间,即将第一帧视频时间戳作为基准时间点,即视频时标基准点,以用于后续确定每帧视频时间戳的实际偏移时长,同时将读取的系统时间作为参考时间点,以用于后续确定每帧视频时间戳的参考偏移时长。

步骤202:后台线程从第二帧音视频时间戳开始,每读取一帧音视频时间戳和一次系统时间,利用该帧音视频时间戳、读取的系统时间、基准时间点及参考时间点确定是否播放该帧音视频时间戳对应的音视频数据。

在一实施例中,针对利用该帧音视频时间戳、读取的系统时间、基准时间点及参考时间点确定是否播放该帧音视频时间戳对应的音视频数据的过程,后台线程可以将该帧视频时间戳与基准时间点的差值确定为实际偏移时长,并将读取的系统时间与参考时间点的差值确定为参考偏移时长,然后再确定实际偏移时长与参考偏移时长之间的差值,并利用该差值和音频时间戳确定是否播放该帧音视频时间戳对应的音视频数据。

在一实施例中,针对利用该差值和音频时间戳确定是否播放该帧音视频时间戳对应的音视频数据的过程,若该差值位于正阈值与负阈值之间,且该帧音频时间戳小于或等于该帧视频时间戳,则确定播放该帧音视频时间戳对应的音视频数据;若该差值位于正阈值与负阈值之间,且该帧音频时间戳大于该帧视频时间戳,则确定只播放该帧视频时间戳对应的视频数据;若该差值小于负阈值,则丢弃该帧音视频时间戳对应的音视频数据;若该差值大于正阈值,则间隔预设时长,重新读取系统时间,并返回执行利用该帧音视频时间戳、读取的系统时间、基准时间点及参考时间点确定是否播放该帧音视频时间戳对应的音视频数据的过程。

其中,由于音视频同步播放业务中通常以视频为主,音频为辅,因此,首先判断的是实际偏移时长与参考偏移时长的差值,在差值满足条件的情况下,继续判断音频时间戳与视频时间戳的关系。如果实际偏移时长与参考偏移时长的差值为正,表示还未到播放时间,如果实际偏移时长与参考偏移时长的差值为负,表示已经过了播放时间,如果为零,表示正好到播放时间了,正阈值与负阈值之间的范围表示的是差值的允许范围,可以根据实际经验设置。此外,确定还未到播放时间的情况下,可以等待下一次的比较处理,即等待预设时长后,继续读取一次系统时间,该预设时长(单位为毫秒)大小可以小于正阈值与负阈值之间的区间长度,例如,正阈值5,负阈值-5,该预设时长小于10毫秒。

在一示例性场景中,读取的某一帧的视频时间戳为14:47:00,音频时间戳为14:46:59,读取的系统时间为14:47:01,基准时间点为14:46:00,参考时间点为14:46:01,其中,时间戳格式为分:秒:毫秒,正阈值和负阈值分别5和-5,由此可得,实际偏移时长为:该帧视频时间戳-基准时间点=1秒,参考偏移时长为:读取的系统时间-参考时间点=1秒;实际偏移时长与参考偏移时长之间的差值为0,位于-5与5之间,且音频时间戳小于视频时间戳,从而确定播放该帧音视频时间戳对应的音视频数据。

本领域技术人员可以理解的是,上述场景中的时间戳举例仅为示例性说明,并不代表实际应用中的时间戳。

需要说明的是,后台线程在利用该帧音视频时间戳、读取的系统时间、基准时间点及参考时间点确定是否播放该帧音视频时间戳对应的音视频数据之前,可以判断下是否存在异常情况,以保证音视频数据播放准确性。如果不存在异常情况,可以继续执行利用该帧音视频时间戳、读取的系统时间、基准时间点及参考时间点确定是否播放该帧音视频时间戳对应的音视频数据的过程;如果存在异常情况,重新重置同步参考时间,即可以将该帧音视频时间戳确定为基准时间点,当前读取的系统时间确定为参考时间点,并向前台线程返回丢弃音视频数据的通知。

针对异常情况的判断过程,后台线程可以先判断当前帧的参考偏移时长是否小于上一帧的参考偏移时长,如果是,则确定存在异常情况,重置基准时间点,如果否,则继续确定当前帧的视频时间戳与上一帧的视频时间戳之间的相邻差值,若相邻差值超出某一阈值范围或当前帧的实际偏移时长为负值,则确定存在异常情况,重新重置同步参考时间。

需要进一步说明的是,后台线程在每次读取一帧音视频时间戳之前,可判断一下当前接收的音视频时间戳是否处理结束,若是,则向前台线程发送数据请求,若否,则读取一帧音视频时间戳。

本实施例中,对于前台线程向后台线程发送的音视频时间戳,先读取第一帧音视频时间戳和系统时间,将第一帧视频时间戳确定为基准时间点,及将读取的系统时间确定为参考时间点,并直接确定播放第一帧音视频时间戳对应的音视频数据,后台线程从第二帧音视频时间戳开始,每读取一帧音视频时间戳,对应读取一次系统时间,进一步利用读取的音视频时间戳和对应的系统时间,及基准时间点和参考时间点,以确定是否播放该帧音视频时间戳对应的音视频数据。

图3为本申请根据一示例性实施例示出的一种多媒体设备的硬件结构图,该多媒体设备包括:通信接口301、处理器302、机器可读存储介质303和总线304;其中,通信接口301、处理器302和机器可读存储介质303通过总线304完成相互间的通信。处理器302通过读取并执行机器可读存储介质302中与音视频同步播放的方法的控制逻辑对应的机器可执行指令,可执行上文描述的音视频同步播放的方法,该方法的具体内容参见上述实施例,此处不再累述。

本申请中提到的机器可读存储介质303可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

此外,多媒体设备可以为各种终端设备或者后端设备,例如摄像机、服务器、移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。

图4为本申请根据一示例性实施例示出的一种音视频同步播放的装置的实施例结构图,该实施例可以应用在基于HTML5平台的多媒体设备上,该多媒体设备运行前台线程,所述前台线程用于播放音视频数据,如图4所示,该音视频同步播放的装置包括:

第一运行模块40,用于通过运行所述前台线程,由所述前台线程将音视频时间戳发送至与所述前台线程不同的后台线程;

第二运行模块41,用于通过运行所述后台线程,由所述后台线程依据每帧音视频时间戳确定是否播放每帧音视频时间戳对应的音视频数据,若是,则向所述前台线程返回播放音视频数据的通知,以使所述前台线程播放音视频数据;

其中,所述后台线程与所述前台线程相互独立运行。

在一可选的实现方式中,所述第一运行模块40,具体用于监测视频时间戳链表中未发送的视频时间戳的数量是否达到预设数值;当监测到达到预设数值时,拷贝所述视频时间戳链表中未发送的视频时间戳及音频时间戳链表中未发送的音频时间戳;将拷贝的音视频时间戳发送至所述后台线程。

在一可选的实现方式中,所述第一运行模块40,具体用于在接收到后台线程的数据请求时,拷贝所述视频时间戳链表中未发送的视频时间戳,及所述音频时间戳链表中未发送的音频时间戳;将拷贝的音视频时间戳发送至所述后台线程。

图5为本申请根据一示例性实施例示出的另一种音视频同步播放的装置的实施例结构图,基于上述图4所示实施例的基础上,如图5所示,所述第二运行模块41,包括:

第一确定子模块411,用于读取第一帧音视频时间戳和系统时间,将该帧视频时间戳确定为基准时间点,及将读取的系统时间确定为参考时间点,并直接确定播放该帧音视频时间戳对应的音视频数据;

第二确定子模块412,用于从第二帧音视频时间戳开始,每读取一帧音视频时间戳和一次系统时间,利用该帧音视频时间戳、读取的系统时间、所述基准时间点及所述参考时间点确定是否播放该帧音视频时间戳对应的音视频数据。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:显示设备及其图像处理方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类