CN112235597B - 流媒体直播音视频同步保护方法、装置、计算机设备 - Google Patents
流媒体直播音视频同步保护方法、装置、计算机设备 Download PDFInfo
- Publication number
- CN112235597B CN112235597B CN202010978829.4A CN202010978829A CN112235597B CN 112235597 B CN112235597 B CN 112235597B CN 202010978829 A CN202010978829 A CN 202010978829A CN 112235597 B CN112235597 B CN 112235597B
- Authority
- CN
- China
- Prior art keywords
- video
- audio
- data
- frame
- time stamp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000001360 synchronised effect Effects 0.000 title claims description 22
- 230000008569 process Effects 0.000 claims abstract description 19
- 238000007781 pre-processing Methods 0.000 claims abstract description 12
- 238000005070 sampling Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000009825 accumulation Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 19
- 230000002159 abnormal effect Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000005059 dormancy Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 241000251468 Actinopterygii Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000002716 delivery method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000007958 sleep Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
- H04N21/23106—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/233—Processing of audio elementary streams
- H04N21/2335—Processing of audio elementary streams involving reformatting operations of audio signals, e.g. by converting from one coding standard to another
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234309—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/242—Synchronization processes, e.g. processing of PCR [Program Clock References]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/4302—Content synchronisation processes, e.g. decoder synchronisation
- H04N21/4307—Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4331—Caching operations, e.g. of an advertisement for later insertion during playback
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/439—Processing of audio elementary streams
- H04N21/4398—Processing of audio elementary streams involving reformatting operations of audio signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
- H04N21/440218—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请涉及一种流媒体直播音视频同步保护方法、装置、计算机设备和存储介质。包括:获取流媒体数据,流媒体数据包括视频、音频的数据,基于更新后的时间对每一帧视频、音频的数据添加对应的时间戳;对已添加时间戳的每一帧视频、音频的数据进行预处理并编码后,发送至缓冲区;从缓冲区读取视频帧数据,当读取视频帧数据为关键帧时,将关键帧对应的时间戳标记为起始时间戳,并发送视频帧数据;当读取视频帧数据为非关键帧时,并判断当前时刻视频时间戳之和大于音频时间戳之和时,则发送视频数据;否则,则发送音频数据,并等待从缓冲区读取下一帧视频数据,继续对下一帧视频数据进行处理,直至直播停止。采用本方法能够保证流媒体的音视频同步。
Description
技术领域
本申请涉及多媒体技术领域,特别是涉及一种流媒体直播音视频同步保护方法、装置、计算机设备和存储介质。
背景技术
随着多媒体技术的发展,流媒体推流不仅在传统应用上需求旺盛,还在视频会议、远程教育,数字法庭等行业产生了新的需求,对主机也有了更高的要求,用户希望多媒体应用提供更高清、更多路的流媒体推流能力,来满足用户的不同应用场景需求。
然而,目前采用的多核嵌入式系统中,由于嵌入式系统CPU性能有限,在多路高清直播推流的场景下,由于路数的增加,音频、视频的处理以及编码无法在一个芯片下完成,音频、视频的采集需要不同的芯片进行处理,多芯片协同处理时,由于处理所花费的时间不一致,容易导致流媒体的音频数据和视频数据传输时出现不同步的问题,使得远端数据阻塞或者断开连接。
发明内容
基于此,有必要针对上述技术问题,提供一种能够保证流媒体的音频数据和视频数据同步传输的流媒体直播音视频同步保护方法、装置、计算机设备和存储介质。
一种流媒体直播音视频同步保护方法,所述方法包括:
获取流媒体数据,所述流媒体数据包括视频数据和音频数据,基于同步更新后的采集驱动时间对每一帧所述视频数据、所述音频数据添加对应的时间戳;
对已添加时间戳的每一帧所述视频数据、所述音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区;
调用发送线程从所述视频缓冲区读取视频帧数据,当读取所述视频帧数据为关键帧时,将所述关键帧对应的时间戳标记为起始时间戳,并发送所述视频帧数据;
当读取所述视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和,当判断当前时刻所述视频时间戳之和大于所述音频时间戳之和时,则发送视频数据;否则,则发送音频数据,并等待所述发送线程从所述视频缓冲区读取下一帧视频帧数据,继续对所述下一帧视频帧数据进行处理,直至直播停止。
在其中一个实施例中,所述获取流媒体数据之前,所述方法还包括:
在主芯片启动的情况下,获取与所述主芯片关联的每个从芯片对应的状态;
当检测所述从芯片的状态均为准备就绪后,则获取所述主芯片对应的系统时间;
将所述系统时间分发至所述从芯片,所述系统时间用于对所述从芯片对应的采集驱动时间进行同步更新。
在其中一个实施例中,所述调用发送线程从所述视频缓冲区读取视频帧数据之前,所述方法还包括:
当检测到数据丢失时,则清空所述视频缓冲区和所述音视频缓冲区,并设置需要等待所述视频数据中下一帧关键帧;
当检测到网络断开时,则停止直播,与用户终端重新建立连接。
在其中一个实施例中,所述当读取所述视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和,包括:
当判断当前时刻所述视频时间戳之和小于或等于所述音频时间戳之和时,则获取所述视频数据对应的已发送时间戳,调用所述发送线程从所述音频缓冲区读取音频帧数据;
当检测所述音频帧数据对应的音频时间戳小于或等于所述视频数据对应的已发送时间戳时,则发送所述音频帧数据,等待所述视频数据中下一帧关键帧;
当检测所述音频帧数据对应的音频时间戳大于所述视频数据对应的已发送时间戳时,则将所述音频帧数据丢弃。
在其中一个实施例中,所述调用所述发送线程从所述音频缓冲区读取音频帧数据,包括:
当第一次发送音频数据时,判断所述音频帧数据对应的音频时间戳与所述视频数据对应的已发送时间戳之间的差值是否大于预设阈值;
当检测所述音频帧数据对应的音频时间戳与所述视频对应的已发送时间戳之间的差值大于预设阈值时,则将所述音频帧数据丢弃,直到检测所述音频帧数据对应的音频时间戳与所述视频对应的已发送时间戳之间的差值小于或等于预设阈值时,对所述音频帧数据对应的音频时间戳进行更新,并将更新时间戳后的所述音频帧数据进行发送。
在其中一个实施例中,所述对所述音频帧数据对应的音频时间戳进行更新包括:
将预设时间阈值与所述音频帧数据对应的音频时间戳进行累加计算,得到更新后的所述音频帧数据对应的音频时间戳。
在其中一个实施例中,所述视频时间戳之和为视频已发送时间戳叠加视频已发送时间戳间隔之和,所述音频时间戳之和为音频已发送时间戳叠加音频已发送时间戳间隔之和;
所述视频数据对应的视频时间戳间隔和所述音频数据对应的音频时间戳间隔的计算方式,包括:
获取所述视频数据对应的视频帧率以及所述音频数据对应的音频采样率;
根据所述视频帧率计算出每两帧连续数据对应的视频时间戳间隔;
根据所述音频采样率计算出每两帧连续数据对应的音频时间戳间隔。
一种流媒体直播音视频同步保护装置,所述装置包括:
添加模块,用于获取流媒体数据,所述流媒体数据包括视频数据和音频数据,基于同步更新后的采集驱动时间对每一帧所述视频数据、所述音频数据添加对应的时间戳;
编码模块,用于对已添加时间戳的每一帧所述视频数据、所述音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区;
读取模块,用于调用发送线程从所述视频缓冲区读取视频帧数据,当读取所述视频帧数据为关键帧时,将所述关键帧对应的时间戳标记为起始时间戳,并发送所述视频帧数据;
发送模块,用于当读取所述视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和,当判断当前时刻所述视频时间戳之和大于所述音频时间戳之和时,则发送视频数据;否则,则发送音频数据,并等待所述发送线程从所述视频缓冲区读取下一帧视频帧数据,继续对所述下一帧视频帧数据进行处理,直至直播停止。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取流媒体数据,所述流媒体数据包括视频数据和音频数据,基于同步更新后的采集驱动时间对每一帧所述视频数据、所述音频数据添加对应的时间戳;
对已添加时间戳的每一帧所述视频数据、所述音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区;
调用发送线程从所述视频缓冲区读取视频帧数据,当读取所述视频帧数据为关键帧时,将所述关键帧对应的时间戳标记为起始时间戳,并发送所述视频帧数据;
当读取所述视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和,当判断当前时刻所述视频时间戳之和大于所述音频时间戳之和时,则发送视频数据;否则,则发送音频数据,并等待所述发送线程从所述视频缓冲区读取下一帧视频帧数据,继续对所述下一帧视频帧数据进行处理,直至直播停止。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取流媒体数据,所述流媒体数据包括视频数据和音频数据,基于同步更新后的采集驱动时间对每一帧所述视频数据、所述音频数据添加对应的时间戳;
对已添加时间戳的每一帧所述视频数据、所述音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区;
调用发送线程从所述视频缓冲区读取视频帧数据,当读取所述视频帧数据为关键帧时,将所述关键帧对应的时间戳标记为起始时间戳,并发送所述视频帧数据;
当读取所述视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和,当判断当前时刻所述视频时间戳之和大于所述音频时间戳之和时,则发送视频数据;否则,则发送音频数据,并等待所述发送线程从所述视频缓冲区读取下一帧视频帧数据,继续对所述下一帧视频帧数据进行处理,直至直播停止。
上述流媒体直播音视频同步保护方法、装置、计算机设备和存储介质,在多路高清直播推流的场景下,通过获取流媒体数据,流媒体数据包括视频数据和音频数据,相对于传统的流媒体数据传输方式,基于同步更新后的采集驱动时间对每一帧视频数据、音频数据添加对应的时间戳,并对已添加时间戳的每一帧视频数据、音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区。调用发送线程从视频缓冲区读取视频帧数据,当读取视频帧数据为关键帧时,将关键帧对应的时间戳标记为起始时间戳,并发送视频帧数据。当服务器读取视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和,当判断当前时刻视频时间戳之和大于音频时间戳之和时,则发送视频数据;否则,则发送音频数据,并等待发送线程从视频缓冲区读取下一帧视频帧数据,继续对下一帧视频帧数据进行处理,直至直播停止。由此使得,能够保证流媒体的音频数据和视频数据同步传输,解决多核多cpu情况下音视频不同步的问题。
附图说明
图1为一个实施例中流媒体直播音视频同步保护方法的应用环境图;
图2为一个实施例中流媒体直播音视频同步保护方法的流程示意图;
图3为一个实施例中对从芯片对应的采集驱动时间进行同步更新步骤的流程示意图;
图4A为另一个实施例中流媒体直播音视频同步保护方法的流程示意图;
图4B为一个实施例中流媒体直播时采集音视频数据并处理的流程示意图;
图4C为一个实施例中流媒体直播时发送线程处理数据的流程示意图;
图5为一个实施例中调用发送线程从音频缓冲区读取音频帧数据步骤的流程示意图;
图6为一个实施例中流媒体直播音视频同步保护装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的流媒体直播音视频同步保护方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。服务器104获取流媒体数据,流媒体数据包括视频数据和音频数据,服务器104基于同步更新后的采集驱动时间对每一帧视频数据、音频数据添加对应的时间戳。服务器104对已添加时间戳的每一帧视频数据、音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区。服务器104调用发送线程从视频缓冲区读取视频帧数据,当服务器104读取视频帧数据为关键帧时,将关键帧对应的时间戳标记为起始时间戳,并发送视频帧数据至终端102。当服务器104读取视频帧数据为非关键帧时,则服务器104判断当前时刻视频时间戳之和是否大于音频时间戳之和,当服务器104判断当前时刻视频时间戳之和大于音频时间戳之和时,则服务器104发送视频数据至终端102;否则,则服务器104发送音频数据至终端102,并等待发送线程从视频缓冲区读取下一帧视频帧数据,继续对下一帧视频帧数据进行处理,直至直播停止。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种流媒体直播音视频同步保护方法,本实施例以该方法应用于服务器进行举例说明,可以理解的是,该方法也可以应用于终端,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。本实施例中,该方法包括以下步骤:
步骤202,获取流媒体数据,流媒体数据包括视频数据和音频数据,基于同步更新后的采集驱动时间对每一帧视频数据、音频数据添加对应的时间戳。
随着多媒体技术的发展,流媒体推流不仅在传统应用上需求旺盛,还在视频会议、远程教育以及数字法庭等行业产生了新的需求,对系统也有了更高的要求,用户希望系统能够提供更高清、更多路的流媒体推流能力,以满足用户的不同应用场景的需求。例如,目前常见的流媒体应用程序包括但不限于斗鱼直播、虎牙直播、腾讯视频、企业微信等部分支持弹幕消息的功能。用户也可以通过不同类型的智能移动办公平台,利用平台进行视频直播会议等操作。例如,企业可以通过填写企业名称、行业类型、人员规模、管理密码、联系人姓名等信息在不同的智能移动办公平台中进行注册。管理员可以在管理后台导入该企业员工通讯录,员工会收到激活短信。员工在完成真实姓名填写和手机号码验证之后,就可以登录使用该系统中的视频直播会议等功能,比如常见的具有视频直播会议功能的平台钉钉。
用户可以通过点选移动终端设备主界面中某个特定的应用程序,启动该应用程序进入与该应用程序对应的页面中,或者用户也可以通过触发操作直接登录某个特定的平台页面中,用户可以根据不同需求选择对应的视频直播场景。具体的,服务器可以获取流媒体数据,流媒体数据包括视频数据和音频数据,服务器基于同步更新后的采集驱动时间对每一帧视频数据、音频数据添加对应的时间戳,即在驱动层,采集数据时就对每一帧音频原始数据或视频原始数据打上对应的时间戳,即在驱动层,服务器将基准时间与当前的增量时间之和添加至每一帧视频数据、音频数据的描述信息中。其中,流媒体(Streaming Media)是指将一连串的媒体数据压缩后,以流的方式在网络中分段传送,实现在网络上实时传输影音以供观赏的一种技术。即流媒体指的是一种新的媒体传送方式,可以包括声音流、视频流、文本流、图像流、动画流等。采集驱动时间是指硬件器件按照预设的频率在驱动层开始采集数据的时间。当流媒体设备启动时,主芯片启动后,服务器可以获取与主芯片关联的从芯片的状态,即等待所有从芯片也启动并返回准备就绪的状态后,服务器可以对所有芯片的采集驱动时间进行同步更新,使得各个协同处理的芯片采集数据的时间基准一致。时间戳是指使用数字签名技术产生的数据,签名的对象包括了原始文件信息、签名参数、签名时间等信息。音视频数据的时间戳可以分为解码时间戳(DTS)和显示时间戳(PTS),即分别表示某一帧数据解码和显示相对于起始时间的时间戳。如果采集驱动有独立时钟,开机同步后,由时钟进行独立计时,保证所有驱动时间在误差允许范围内一致。如果采集驱动时间等同系统时间,则每次修改系统时间后,也需要重新同步更新,并且推流过程中不允许修改系统时间。其中,独立时钟是指硬件器件按照预设的频率产生的硬件中断,如视频帧率为60帧,则硬件器件会按照15ms的频率在驱动层固定采集一帧数据,音频也会按照设置的采样率固定时间采集一帧数据,这个独立时钟的时间与系统没有联系,它是硬件器件产生的,所以不会因为系统的负载高低变化导致采集时间的波动,因而只需要保持各个协同处理的芯片采集数据的时间基准一致。
步骤204,对已添加时间戳的每一帧视频数据、音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区。
当服务器基于同步更新后的采集驱动时间对每一帧视频数据、音频数据添加对应的时间戳之后,服务器可以对对已添加时间戳的每一帧视频数据、音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区。其中,预处理是指对采集到原始数据进行处理。例如,服务器对驱动采集到的视频原始数据进行缩放、拼接、裁剪等预处理操作之后,再对预处理后的视频数据进行编码,编码完成后发送到对应的视频帧缓冲区,其中,视频原始数据无类型区分,但编码后的视频码流数据分为关键帧和非关键帧两种类型数据。同时,服务器可以对驱动采集到的音频原始数据进行降噪等预处理操作,再对预处理后的音频数据进行编码,编码完成后发送到对应的音频帧缓冲区,其中,音频数据每一帧无类型区分,这是由音频压缩算法决定的,音频原始数据较小,因此压缩率较低,无需进行类型区分。
步骤206,调用发送线程从视频缓冲区读取视频帧数据,当读取视频帧数据为关键帧时,将关键帧对应的时间戳标记为起始时间戳,并发送视频帧数据。
服务器将预处理并编码后的每一帧视频数据、音频数据,分别发送至视频缓冲区、音频缓冲区之后,服务器调用发送线程从视频缓冲区读取视频帧数据,当读取视频帧数据为关键帧时,将关键帧对应的时间戳标记为起始时间戳,并发送视频帧数据。其中,在JVT(Joint Video Team),即联合视频编码组的视频压缩算法的标准中,关键帧是用于描述压缩图像的所有信息,可以还原图像,非关键帧是对关键帧的信息补偿,逐渐优化图像效果。因此,当发送线程开始发送数据时,需要等待关键帧才能发送数据,非关键帧必须依赖关键帧才能解码,在没有关键帧的情况发送出去的非关键帧也是无效数据。当启动直播时,服务器可以根据视频帧率计算出每两帧连续数据的视频时间戳间隔,服务器也可以根据音频采样率计算出每两帧连续数据的音频时间戳间隔。通过计算出的时间戳间隔,则服务器可以利用时间戳的间隔值判断是否发送数据,由此避免了需要一直等待下一帧数据到来后才能发送当前帧数据,降低了流媒体延时。具体的,音视频数据发送至缓存区之后,通知流媒体发送线程开始发送数据。例如,发送视频数据时,服务器首先判断是否需要等待关键帧,若需要等待关键帧,则服务器通过调用rtmp发送线程从视频缓冲区读取视频帧数据,即从视频缓冲区一帧一帧的读取数据,并判断每一帧是否是关键帧,若不是关键帧则直接丢弃,直到关键帧到来发送数据。即当服务器读取视频帧数据为关键帧时,如果当前是第一个关键帧,则将该关键帧对应的时间戳标记为起始时间戳,并发送该帧视频帧数据。在发送数据之前,服务器检测是否存在异常状态,当没有异常情况时,则服务器判断是否需要等待关键帧,若需要等待关键帧,则发送视频数据。其中,RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。
步骤208,当读取视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和,当判断当前时刻视频时间戳之和大于音频时间戳之和时,则发送视频数据;否则,则发送音频数据,并等待发送线程从视频缓冲区读取下一帧视频帧数据,继续对下一帧视频帧数据进行处理,直至直播停止。
服务器调用发送线程从视频缓冲区读取视频帧数据,当通过发送线程读取视频帧数据为非关键帧时,即不需要等待关键帧,则服务器判断当前时刻视频时间戳之和是否大于音频时间戳之和,当服务器判断当前时刻视频时间戳之和大于音频时间戳之和时,则继续发送视频数据;否则,则发送音频数据,音频数据发送完毕后,等待发送线程从视频缓冲区读取下一帧视频帧数据,并继续对下一帧视频帧数据进行处理,直至直播停止。其中,每发送一帧视频数据,将该帧时间戳记录为视频已发送时间戳,视频时间戳初始化值为0,视频时间戳之和是指视频已发送时间戳叠加视频已发送时间戳间隔之和的结果。每发送一帧音频数据,将该帧时间戳记录为音频已发送时间戳,音频时间戳初始化值为0,音频时间戳之和是指音频已发送时间戳叠加音频已发送时间戳间隔之和的结果。当服务器检测缓存区数据为空时,则该路直播退出执行上述循环判断的步骤,并进入短暂休眠。当下次被唤醒时,服务器首先检测是否存在异常状态,当没有异常情况时,则判断是否等待关键帧,若需要等待关键帧时,则直到rtmp发送线程检测到关键帧时发送对应的视频数据。若不需要等待关键帧时,即通过发送线程读取视频帧数据为非关键帧时,则服务器判断当前时刻视频时间戳之和是否大于音频时间戳之和,当服务器判断当前时刻视频时间戳之和大于音频时间戳之和时,则继续发送视频数据;否则,则发送音频数据,音频数据发送完毕后,等待发送线程从视频缓冲区读取下一帧视频帧数据,并继续对下一帧视频帧数据进行处理,直至直播停止。当停止直播时,服务器依次停止发送数据,关闭音视频采集、处理、编码并清空缓冲区。
本实施例中,在多路高清直播推流的场景下,通过获取流媒体数据,流媒体数据包括视频数据和音频数据,相对于传统的流媒体数据传输方式,基于同步更新后的采集驱动时间对每一帧视频数据、音频数据添加对应的时间戳,并对已添加时间戳的每一帧视频数据、音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区。调用发送线程从视频缓冲区读取视频帧数据,当读取视频帧数据为关键帧时,将关键帧对应的时间戳标记为起始时间戳,并发送视频帧数据。当服务器读取视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和,当判断当前时刻视频时间戳之和大于音频时间戳之和时,则发送视频数据;否则,则发送音频数据,并等待发送线程从视频缓冲区读取下一帧视频帧数据,继续对下一帧视频帧数据进行处理,直至直播停止。由此使得,能够保证流媒体的音频数据和视频数据同步传输,解决多核多cpu情况下音视频不同步的问题。
在一个实施例中,如图3所示,获取流媒体数据之前,该方法还包括对从芯片对应的采集驱动时间进行同步更新的步骤,具体包括:
步骤302,在主芯片启动的情况下,获取与主芯片关联的每个从芯片对应的状态。
步骤304,当检测从芯片的状态均为准备就绪后,则获取主芯片对应的系统时间。
步骤306,将系统时间分发至从芯片,系统时间用于对从芯片对应的采集驱动时间进行同步更新。
在服务器获取流媒体数据之前,当服务器检测到主芯片已启动的情况下,服务器可以对所有从芯片对应的采集驱动时间进行同步更新。具体的,在主芯片启动的情况下,服务器可以获取与主芯片关联的每个从芯片对应的状态。当服务器检测与主芯片关联的所有从芯片的状态均为准备就绪后,则服务器获取主芯片对应的系统时间。服务器将获取到的主芯片的系统时间分发至所有从芯片,使得所有芯片的采集驱动时间保持一致,其中,系统时间用于对从芯片对应的采集驱动时间进行同步更新。例如,在主芯片启动的情况下,服务器可以获取与主芯片关联的每个从芯片对应的状态。当服务器检测与主芯片关联的所有从芯片的状态均为准备就绪后,服务器获取主芯片对应的系统时间为9:30,则服务器将获取到的主芯片的系统时间9:30分发至所有从芯片,使得所有从芯片将对应的采集驱动时间进行同步更新为9:30,时间同步完成后,通知应用层,系统准备就绪。由于目前嵌入式媒体处理构架是由多个soc芯片组成一个媒体处理系统,可以预先设置其中一个soc芯片作为主控制逻辑,在这个soc芯片即主芯片上获取系统时间,并通过内部通信(PCIE/内部交换机网络)把这个系统时间分发到所有的soc芯片中,即soc内部把这个系统时间分发到各协处理内核上,各协处理内核均把这个系统作为基准时间进行存储,并以这个基准时间为基础进行时间累加。由此使得,应用层的所有应用程序均准备就绪后,能够有效协同处理多路直播推流,有效避免出现异常问题,同时,通过在驱动层打上对应的时间戳,不依赖于系统时间,不会受系统负载的影响,能够保证后续处理有一个统一基准的参考点,从而可以有效保证音视频是同步的。
在一个实施例中,调用发送线程从视频缓冲区读取视频帧数据之前,该方法还包括检测是否存在异常状态的步骤,具体包括:
当检测到数据丢失时,则清空视频缓冲区和音视频缓冲区,并设置需要等待视频数据中下一帧关键帧。
当检测到网络断开时,则停止直播,与用户终端重新建立连接。
服务器调用发送线程从视频缓冲区读取视频帧数据之前,服务器还可以检测当前时刻是否存在异常状态。具体的,当服务器检测到数据丢失时,则清空视频缓冲区和音视频缓冲区,并设置需要等待视频数据中下一帧关键帧。当服务器检测到网络断开时,即检测出现断网等异常状态时,则停止直播,与用户终端重新建立连接。即当编码出错,或编码后发送数据至缓冲区失败导致数据丢失时,会标记数据丢失,当发送线程判断数据丢失时,则清空音视频缓冲区,并设置需要等待下一帧关键帧。由此使得,在数据发送之前,通过检测是否存在异常状态,能够有效避免出现异常问题,使得多芯片有效的协同处理多路直播推流。
在一个实施例中,如图4A所示,提供了一种流媒体直播音视频同步保护方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤402,获取流媒体数据,流媒体数据包括视频数据和音频数据,基于同步更新后的采集驱动时间对每一帧视频数据、音频数据添加对应的时间戳。
步骤404,对已添加时间戳的每一帧视频数据、音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区。
步骤406,调用发送线程从视频缓冲区读取视频帧数据,当读取视频帧数据为关键帧时,将关键帧对应的时间戳标记为起始时间戳,并发送视频帧数据。
步骤408,当读取视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和。
步骤410,当判断当前时刻视频时间戳之和小于或等于音频时间戳之和时,则获取视频数据对应的已发送时间戳,调用发送线程从音频缓冲区读取音频帧数据。
步骤412,当检测音频帧数据对应的音频时间戳小于或等于视频数据对应的已发送时间戳时,则发送音频帧数据,等待视频数据中下一帧关键帧。
步骤414,当检测音频帧数据对应的音频时间戳大于视频数据对应的已发送时间戳时,则将音频帧数据丢弃。
服务器获取流媒体数据,流媒体数据包括视频数据和音频数据,如图4B所示,服务器基于同步更新后的采集驱动时间对每一帧视频数据、音频数据添加对应的时间戳。服务器对已添加时间戳的每一帧视频数据、音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区。当发送视频数据时,服务器调用发送线程从视频缓冲区读取视频帧数据,当服务器读取视频帧数据为关键帧时,将关键帧对应的时间戳标记为起始时间戳,并发送视频帧数据。当服务器读取视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和。因为某些情况下,必须要保证音频时间戳必须大于视频已发送时间戳,如果发送的音频时间戳小于等于已发送的视频帧时间戳,对于某些协议或软件来说是一种异常状态,例如,rtmp推流到Adobe Media Server 5上时,这种异常会导致服务器挂断链接。Adobe Media Server也叫Adobe Flash Media Server(FMS),是Adobe出品的一款流媒体服务器,它使用Adobe传统的流媒体协议RTMP(实时消息协议)提供视频的点播和直播服务。当服务器判断当前时刻视频时间戳之和小于或等于音频时间戳之和时,则发送音频数据。具体的,服务器可以获取视频数据对应的已发送时间戳,调用发送线程从音频缓冲区读取音频帧数据。当服务器检测音频帧数据对应的音频时间戳小于或等于视频数据对应的已发送时间戳时,则发送音频帧数据,等待视频数据中下一帧关键帧。当服务器检测音频帧数据对应的音频时间戳大于视频数据对应的已发送时间戳时,则将音频帧数据丢弃。因为发送视频数据时,需要等待关键帧时会导致音频数据的堆积,通过将音频数据时间戳和视频已发送时间戳进行比较,如果两只之间的时间差值超过预设阈值,例如预设阈值为5ms,则将不符合预设阈值的音频数据丢弃。
例如,如图4C所示的发送线程处理数据的流程示意图,设备开机后,在主芯片启动的情况下,服务器获取与主芯片关联的每个从芯片对应的状态,即服务器获取从芯片1状态、从芯片2状态。当从芯片1状态返回就绪时,服务器检查所有从芯片状态,判断当前从芯片2未就绪则继续等待;当从芯片2状态返回未就绪时,则系统进行短暂休眠后重新获取状态。即当从芯片1状态返回就绪,服务器检查所有从芯片状态均为已经就绪时,服务器对所有芯片进行时间同步,时间同步完成后通知应用层,系统就绪。当系统准备就绪后,服务器获取到一路h264 1080p25帧的视频推流和aac 48k采样率的音频推流。其中,H264指H.264,是一种视频编码器标准。Aac即Advanced Audio Coding,是一种专为声音数据设计的文件压缩格式,48kHz为音频数据的采样率。采样率,也称为采样速度或者采样频率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。服务器根据视频帧率计算出每两帧连续数据对应的视频时间戳间隔为40ms,服务器根据音频采样率计算出每两帧连续数据对应的音频时间戳间隔为21ms,即1000毫秒*1024/48k=1000毫秒*1024/(48*10000)=21毫秒(只保留整数位)。服务器分别通知音视频,打开采集、处理、编码模块进行处理。服务器将视频采集到的每一帧yuv数据和音频采集到的每一帧音频数据打上对应的时间戳,即将当前时间添加至对应的视频数据、音频数据的描述信息中,其中,当前时间为基准时间与当前的增量时间之和。服务器对已添加时间戳的每一帧视频数据、音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区。当音视频数据发送至缓存区完毕后,通知rtmp发送线程开始发送数据至对应的用户终端。rtmp发送线程收到发送数据的通知后,从视频缓冲区一帧一帧的读取视频帧数据,并判断是否需要等待关键帧,当需要等待关键帧时,则将非关键帧丢弃,假设丢弃数据的时间戳为9920,9960,直到读取到关键帧时,该关键帧对应的时间戳为10000,则将该关键帧数据的时间戳10000作为起始时间戳,将该帧发送至用户终端,并记录视频帧已发送时间戳。当服务器检测音频帧数据对应的音频时间戳小于或等于视频数据对应的已发送时间戳时,则发送音频帧数据,即0+21小于10000+40,则发送音频数据。当第一次发送音频数据时,服务器判断音频帧数据对应的音频时间戳与视频数据对应的已发送时间戳之间的差值是否大于预设阈值。即服务器将音频数据时间戳和视频已发送时间戳进行比较,如果两者之间的时间差值超过预设阈值,例如预设阈值为5ms,则将超过预设阈值5ms的音频数据丢弃。例如,当检测音频帧数据对应的音频时间戳与视频对应的已发送时间戳之间的差值大于预设阈值5ms时,则将音频帧数据丢弃,先丢弃时间戳比起始时间戳小很多的音频数据,例如,丢弃数据的时间戳为9936、9957、9977等。当丢弃无用的音频数据后,服务器继续读取下一帧音频数据,直到检测音频帧数据对应的音频时间戳与视频对应的已发送时间戳之间的差值小于或等于预设阈值5ms时,即当取出一帧音频数据,该音频数据对应的时间戳为9998,符合音频帧数据对应的音频时间戳与视频对应的已发送时间戳之间的差值小于或等于预设阈值5ms的预设条件,则服务器对该音频帧数据对应的音频时间戳进行更新,即服务器将预设时间阈值与音频帧数据对应的音频时间戳进行累加计算,得到更新后的音频帧数据对应的音频时间戳。例如,预设时间阈值为3ms,则服务器将该音频数据对应的音频时间戳更新为9998+预设时间阈值3ms,即将该帧时间戳更新为10001,并将更新时间戳后的音频数据进行发送。当服务器检测音频帧数据对应的音频时间戳小于或等于视频数据对应的已发送时间戳时,则发送音频数据。即10001+21小于10000+40,则继续发送一帧音频,当检测当前音频缓冲区数据为空,则退出该路推送发送,进入短暂休眠状态。休眠结束后,服务器继续判断当前时刻音频帧数据对应的音频时间戳是否小于或等于视频数据对应的已发送时间戳,即10001+21小于10000+40,则继续发送一帧音频数据,当音频数据发送完毕后,等待视频数据中下一帧关键帧。由此使得,在等待关键帧发送的过程中,会囤积一些音频数据,这部分音频数据已经失去了时效性,因此要保证第一次发送的音频数据与第一次发送的视频数据是同步的,即在保证时间戳的有效性的同时,可以高效的调整发送音视频数据的频率,从而可以有效保证音视频是同步的。
在其中一个实施例中,如图5所示,调用发送线程从音频缓冲区读取音频帧数据的步骤,包括:
步骤502,当第一次发送音频数据时,判断音频帧数据对应的音频时间戳与视频数据对应的已发送时间戳之间的差值是否大于预设阈值。
步骤504,当检测音频帧数据对应的音频时间戳与视频对应的已发送时间戳之间的差值大于预设阈值时,则将音频帧数据丢弃,直到检测音频帧数据对应的音频时间戳与视频对应的已发送时间戳之间的差值小于或等于预设阈值时,对音频帧数据对应的音频时间戳进行更新,并将更新时间戳后的音频帧数据进行发送。
当服务器判断当前时刻视频时间戳之和小于或等于音频时间戳之和时,则发送音频数据。具体的,当第一次发送音频数据时,服务器判断音频帧数据对应的音频时间戳与视频数据对应的已发送时间戳之间的差值是否大于预设阈值。即服务器将音频数据时间戳和视频已发送时间戳进行比较,如果两者之间的时间差值超过预设阈值,例如预设阈值为5ms,则将超过预设阈值5ms的音频数据丢弃。例如,当检测音频帧数据对应的音频时间戳与视频对应的已发送时间戳之间的差值大于预设阈值5ms时,则将音频帧数据丢弃,当丢弃无用的音频数据后,服务器继续读取下一帧音频数据,直到检测音频帧数据对应的音频时间戳与视频对应的已发送时间戳之间的差值小于或等于预设阈值5ms时,则服务器对音频帧数据对应的音频时间戳进行更新,并将更新时间戳后的音频帧数据进行发送。由此使得,能够保证发送音频数据的时间戳始终大于视频已发送时间戳,不会出现异常状态,即使音频、视频数据是由不同cpu采集并编码,由于使用的时间戳是预先在驱动层添加的,时间戳不受系统负载影响,因而能够保证时间戳的有效性,可以高效的调整发送数据的频率,从而可以有效保证音视频是同步的。
在其中一个实施例中,对音频帧数据对应的音频时间戳进行更新的步骤,包括:
将预设时间阈值与音频帧数据对应的音频时间戳进行累加计算,得到更新后的音频帧数据对应的音频时间戳。
当服务器检测音频帧数据对应的音频时间戳与视频对应的已发送时间戳之间的差值小于或等于预设阈值5ms时,则服务器对音频帧数据对应的音频时间戳进行更新,并将更新时间戳后的音频帧数据进行发送。具体的,服务器将预设时间阈值与音频帧数据对应的音频时间戳进行累加计算,得到更新后的音频帧数据对应的音频时间戳。例如,预设时间阈值为3ms,则服务器将该音频数据对应的音频时间戳更新为音频帧数据对应的音频时间戳+预设时间阈值3ms,并将更新时间戳后的音频数据进行发送。由此使得,能够保证发送音频数据的时间戳大于视频已发送时间戳,使得流媒体的音视频能够保持同步。
在一个实施例中,视频时间戳之和为视频已发送时间戳叠加视频已发送时间戳间隔之和,音频时间戳之和为音频已发送时间戳叠加音频已发送时间戳间隔之和,视频数据对应的视频时间戳间隔和音频数据对应的音频时间戳间隔的计算方式,包括:
获取视频数据对应的视频帧率以及音频数据对应的音频采样率。
根据视频帧率计算出每两帧连续数据对应的视频时间戳间隔。
根据音频采样率计算出每两帧连续数据对应的音频时间戳间隔。
当服务器读取视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和,当判断当前时刻视频时间戳之和大于音频时间戳之和时,则发送视频数据;否则,则发送音频数据。服务器需要对多路直播视频数据对应的视频时间戳间隔和音频数据对应的音频时间戳间隔进行计算。具体的,服务器可以获取视频数据对应的视频帧率以及音频数据对应的音频采样率。服务器可以根据视频帧率计算出每两帧连续数据对应的视频时间戳间隔。服务器可以根据音频采样率计算出每两帧连续数据对应的音频时间戳间隔。其中,视频帧率是指一秒钟产生连续图片的数量,即视频图像序列。音频采样率是指在一秒钟内对声音信号的采样数,其中,g711a、g711u、g722、g7221等部分编码格式的音频时间戳间隔是直接设置的。例如,g711音频时间戳的间隔设置为10毫秒。若为AAC(AdvancedAudio Coding)等编码格式,则音频时间戳间隔(单位:毫秒)=1000毫秒乘每帧数据对应的采样数/音频采样率。音频每帧数据对应的采样数是由音频格式决定的,例如,AAC(Advanced Audio Coding)的标准是1024Hz。如视频帧率为60帧,则每帧数据的时间戳间隔为15ms。由此使得,通过利用时间戳的间隔值判断是否发送数据,避免了需要一直等待下一帧数据到来后才能发送当前帧数据,降低了流媒体延时,同时,基于时间戳的有效性,可以高效的调整发送数据的频率,从而可以有效保证音视频是同步的。
应该理解的是,虽然图1-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种流媒体直播音视频同步保护装置,包括:添加模块602、编码模块604、读取模块606和发送模块608,其中:
添加模块602,用于获取流媒体数据,流媒体数据包括视频数据和音频数据,基于同步更新后的采集驱动时间对每一帧视频数据、音频数据添加对应的时间戳。
编码模块604,用于对已添加时间戳的每一帧视频数据、音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区。
读取模块606,用于调用发送线程从视频缓冲区读取视频帧数据,当读取视频帧数据为关键帧时,将关键帧对应的时间戳标记为起始时间戳,并发送视频帧数据。
发送模块608,用于当读取视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和,当判断当前时刻视频时间戳之和大于音频时间戳之和时,则发送视频数据;否则,则发送音频数据,并等待发送线程从视频缓冲区读取下一帧视频帧数据,继续对下一帧视频帧数据进行处理,直至直播停止。
在一个实施例中,该装置还包括:获取模块和分发模块。
获取模块用于在主芯片启动的情况下,获取与主芯片关联的每个从芯片对应的状态;当检测从芯片的状态均为准备就绪后,则获取主芯片对应的系统时间。分发模块用于将系统时间分发至从芯片,系统时间用于对从芯片对应的采集驱动时间进行同步更新。
在一个实施例中,该装置还包括:检测模块。
检测模块用于当检测到数据丢失时,则清空视频缓冲区和音视频缓冲区,并设置需要等待视频数据中下一帧关键帧;当检测到网络断开时,则停止直播,与用户终端重新建立连接。
在一个实施例中,该装置还包括:判断模块。
判断模块用于当判断当前时刻视频时间戳之和小于或等于音频时间戳之和时,则获取视频数据对应的已发送时间戳,调用发送线程从音频缓冲区读取音频帧数据。检测模块还用于当检测音频帧数据对应的音频时间戳小于或等于视频数据对应的已发送时间戳时,则发送音频帧数据,等待视频数据中下一帧关键帧;当检测音频帧数据对应的音频时间戳大于视频数据对应的已发送时间戳时,则将音频帧数据丢弃。
在一个实施例中,判断模块还用于当第一次发送音频数据时,判断音频帧数据对应的音频时间戳与视频数据对应的已发送时间戳之间的差值是否大于预设阈值。检测模块还用于当检测音频帧数据对应的音频时间戳与视频对应的已发送时间戳之间的差值大于预设阈值时,则将音频帧数据丢弃,直到检测音频帧数据对应的音频时间戳与视频对应的已发送时间戳之间的差值小于或等于预设阈值时,对音频帧数据对应的音频时间戳进行更新,并将更新时间戳后的音频帧数据进行发送。
在一个实施例中,该装置还包括:计算模块。
计算模块用于将预设时间阈值与音频帧数据对应的音频时间戳进行累加计算,得到更新后的音频帧数据对应的音频时间戳。
在一个实施例中,获取模块还用于获取视频数据对应的视频帧率以及音频数据对应的音频采样率。计算模块还用于根据视频帧率计算出每两帧连续数据对应的视频时间戳间隔;根据音频采样率计算出每两帧连续数据对应的音频时间戳间隔。
关于流媒体直播音视频同步保护装置的具体限定可以参见上文中对于流媒体直播音视频同步保护方法的限定,在此不再赘述。上述流媒体直播音视频同步保护装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储流媒体直播的音视频数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种流媒体直播音视频同步保护方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述各个方法实施例的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种流媒体直播音视频同步保护方法,所述方法包括:
获取流媒体数据,所述流媒体数据包括视频数据和音频数据,基于同步更新后的采集驱动时间对每一帧所述视频数据、所述音频数据添加对应的时间戳;
对已添加时间戳的每一帧所述视频数据、所述音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区;
调用发送线程从所述视频缓冲区读取视频帧数据,当读取所述视频帧数据为关键帧时,将所述关键帧对应的时间戳标记为起始时间戳,并发送所述视频帧数据;
当读取所述视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和,当判断当前时刻所述视频时间戳之和大于所述音频时间戳之和时,则发送视频数据;否则,则发送音频数据,并等待所述发送线程从所述视频缓冲区读取下一帧视频帧数据,继续对所述下一帧视频帧数据进行处理,直至直播停止;所述视频时间戳之和是指视频已发送时间戳叠加视频时间戳间隔之和的结果;所述音频时间戳之和是指音频已发送时间戳叠加音频时间戳间隔之和的结果;所述视频已发送时间戳是指每发送一帧视频数据,将已发送的一帧所述视频数据的时间戳记录为视频已发送时间戳;所述音频已发送时间戳是指每发送一帧音频数据,将已发送的一帧所述音频数据的时间戳记录为音频已发送时间戳。
2.根据权利要求1所述的方法,其特征在于,所述获取流媒体数据之前,所述方法还包括:
在主芯片启动的情况下,获取与所述主芯片关联的每个从芯片对应的状态;
当检测所述从芯片的状态均为准备就绪后,则获取所述主芯片对应的系统时间;
将所述系统时间分发至所述从芯片,所述系统时间用于对所述从芯片对应的采集驱动时间进行同步更新。
3.根据权利要求1所述的方法,其特征在于,所述调用发送线程从所述视频缓冲区读取视频帧数据之前,所述方法还包括:
当检测到数据丢失时,则清空所述视频缓冲区和所述音频缓冲区,并设置需要等待所述视频数据中下一帧关键帧;
当检测到网络断开时,则停止直播,与用户终端重新建立连接。
4.根据权利要求1所述的方法,其特征在于,所述当读取所述视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和,包括:
当判断当前时刻所述视频时间戳之和小于或等于所述音频时间戳之和时,则获取所述视频数据对应的已发送时间戳,调用所述发送线程从所述音频缓冲区读取音频帧数据;
当检测所述音频帧数据对应的音频时间戳小于或等于所述视频数据对应的已发送时间戳时,则发送所述音频帧数据,等待所述视频数据中下一帧关键帧;
当检测所述音频帧数据对应的音频时间戳大于所述视频数据对应的已发送时间戳时,则将所述音频帧数据丢弃。
5.根据权利要求4所述的方法,其特征在于,所述调用所述发送线程从所述音频缓冲区读取音频帧数据,包括:
当第一次发送音频数据时,判断所述音频帧数据对应的音频时间戳与所述视频数据对应的已发送时间戳之间的差值是否大于预设阈值;
当检测所述音频帧数据对应的音频时间戳与所述视频对应的已发送时间戳之间的差值大于预设阈值时,则将所述音频帧数据丢弃,直到检测所述音频帧数据对应的音频时间戳与所述视频对应的已发送时间戳之间的差值小于或等于预设阈值时,对所述音频帧数据对应的音频时间戳进行更新,并将更新时间戳后的所述音频帧数据进行发送。
6.根据权利要求5所述的方法,其特征在于,所述对所述音频帧数据对应的音频时间戳进行更新包括:
将预设时间阈值与所述音频帧数据对应的音频时间戳进行累加计算,得到更新后的所述音频帧数据对应的音频时间戳。
7.根据权利要求1所述的方法,其特征在于,所述视频时间戳之和为视频已发送时间戳叠加视频已发送时间戳间隔之和,所述音频时间戳之和为音频已发送时间戳叠加音频已发送时间戳间隔之和;
所述视频数据对应的视频时间戳间隔和所述音频数据对应的音频时间戳间隔的计算方式,包括:
获取所述视频数据对应的视频帧率以及所述音频数据对应的音频采样率;
根据所述视频帧率计算出每两帧连续数据对应的视频时间戳间隔;
根据所述音频采样率计算出每两帧连续数据对应的音频时间戳间隔。
8.一种流媒体直播音视频同步保护装置,其特征在于,所述装置包括:
添加模块,用于获取流媒体数据,所述流媒体数据包括视频数据和音频数据,基于同步更新后的采集驱动时间对每一帧所述视频数据、所述音频数据添加对应的时间戳;
编码模块,用于对已添加时间戳的每一帧所述视频数据、所述音频数据进行预处理并编码后,分别发送至视频缓冲区、音频缓冲区;
读取模块,用于调用发送线程从所述视频缓冲区读取视频帧数据,当读取所述视频帧数据为关键帧时,将所述关键帧对应的时间戳标记为起始时间戳,并发送所述视频帧数据;
发送模块,用于当读取所述视频帧数据为非关键帧时,则判断当前时刻视频时间戳之和是否大于音频时间戳之和,当判断当前时刻所述视频时间戳之和大于所述音频时间戳之和时,则发送视频数据;否则,则发送音频数据,并等待所述发送线程从所述视频缓冲区读取下一帧视频帧数据,继续对所述下一帧视频帧数据进行处理,直至直播停止;所述视频时间戳之和是指视频已发送时间戳叠加视频时间戳间隔之和的结果;所述音频时间戳之和是指音频已发送时间戳叠加音频时间戳间隔之和的结果;所述视频已发送时间戳是指每发送一帧视频数据,将已发送的一帧所述视频数据的时间戳记录为视频已发送时间戳;所述音频已发送时间戳是指每发送一帧音频数据,将已发送的一帧所述音频数据的时间戳记录为音频已发送时间戳。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010978829.4A CN112235597B (zh) | 2020-09-17 | 2020-09-17 | 流媒体直播音视频同步保护方法、装置、计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010978829.4A CN112235597B (zh) | 2020-09-17 | 2020-09-17 | 流媒体直播音视频同步保护方法、装置、计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112235597A CN112235597A (zh) | 2021-01-15 |
CN112235597B true CN112235597B (zh) | 2022-07-29 |
Family
ID=74108268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010978829.4A Active CN112235597B (zh) | 2020-09-17 | 2020-09-17 | 流媒体直播音视频同步保护方法、装置、计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112235597B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637663B (zh) * | 2021-01-28 | 2023-02-28 | 广州敏视数码科技有限公司 | 一种车载dvr数据同步播放的方法 |
CN113613124B (zh) * | 2021-04-26 | 2024-06-25 | 珠海市杰理科技股份有限公司 | Tws主、从设备及音频设备、系统 |
CN113259738B (zh) * | 2021-05-08 | 2022-07-29 | 广州市奥威亚电子科技有限公司 | 音视频同步的方法、装置、电子设备及存储介质 |
CN112985583B (zh) * | 2021-05-20 | 2021-08-03 | 杭州兆华电子有限公司 | 结合短时脉冲检测的声学成像方法和系统 |
CN113596550B (zh) * | 2021-08-31 | 2024-05-24 | 小帧科技(深圳)有限公司 | 一种音视频同步控制方法及装置 |
CN115883859A (zh) * | 2021-09-29 | 2023-03-31 | 中移(成都)信息通信科技有限公司 | 多媒体数据处理方法、电子设备及存储介质 |
CN114257771B (zh) * | 2021-12-21 | 2023-12-01 | 杭州海康威视数字技术股份有限公司 | 一种多路音视频的录像回放方法、装置、存储介质和电子设备 |
CN114339302B (zh) * | 2021-12-31 | 2024-05-07 | 咪咕文化科技有限公司 | 导播方法、装置、设备以及计算机存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101035296A (zh) * | 2007-04-03 | 2007-09-12 | 北京中星微电子有限公司 | 一种数字音视频同步的方法、装置和系统 |
JP2016063247A (ja) * | 2014-09-12 | 2016-04-25 | 株式会社リコー | 配信システム及び配信方法 |
CN105657579A (zh) * | 2015-10-29 | 2016-06-08 | 乐视致新电子科技(天津)有限公司 | 直播音频切换方法、流媒体服务器及客户端 |
CN105872429A (zh) * | 2016-04-29 | 2016-08-17 | 高翔 | 音视频文件生成方法及装置 |
CN107872605A (zh) * | 2016-09-26 | 2018-04-03 | 青柠优视科技(北京)有限公司 | 一种无人机系统和无人机音视频处理方法 |
CN109660805A (zh) * | 2017-10-10 | 2019-04-19 | 武汉斗鱼网络科技有限公司 | 解码播放中音视频同步优化方法、存储介质、设备及系统 |
CN109714634A (zh) * | 2018-12-29 | 2019-05-03 | 青岛海信电器股份有限公司 | 一种直播数据流的解码同步方法、装置及设备 |
CN109729391A (zh) * | 2018-12-18 | 2019-05-07 | 北京华夏电通科技有限公司 | 一种多路媒体流的发送方法及系统 |
CN110062277A (zh) * | 2019-03-13 | 2019-07-26 | 北京河马能量体育科技有限公司 | 一种音视频自动同步方法及同步系统 |
CN110267099A (zh) * | 2019-05-22 | 2019-09-20 | 视联动力信息技术股份有限公司 | 一种基于视联网的数据传输方法和视联网终端 |
CN110519635A (zh) * | 2019-08-07 | 2019-11-29 | 河北远东通信系统工程有限公司 | 一种无线集群系统的音视频媒体流合流方法及系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10271482A (ja) * | 1997-03-27 | 1998-10-09 | Nippon Telegr & Teleph Corp <Ntt> | 符号化映像の同期再生制御方法およびシステム |
US7471337B2 (en) * | 2004-06-09 | 2008-12-30 | Lsi Corporation | Method of audio-video synchronization |
WO2013082965A1 (zh) * | 2011-12-05 | 2013-06-13 | 优视科技有限公司 | 流媒体数据处理方法及装置、流媒体数据再现设备 |
US20140149606A1 (en) * | 2012-11-23 | 2014-05-29 | Samsung Electronics Co., Ltd. | Server, multimedia apparatus and control method thereof for synchronously playing multimedia contents through a plurality of multimedia devices |
CN103338386B (zh) * | 2013-07-10 | 2016-01-13 | 航天恒星科技有限公司 | 基于简化时间戳的音视频同步方法 |
CN104980820B (zh) * | 2015-06-17 | 2018-09-18 | 小米科技有限责任公司 | 多媒体文件播放方法及装置 |
CN105791939B (zh) * | 2016-03-14 | 2019-03-19 | 北京捷思锐科技股份有限公司 | 音频与视频的同步方法及装置 |
CN106658135B (zh) * | 2016-12-28 | 2019-08-09 | 北京奇艺世纪科技有限公司 | 一种音视频播放方法及装置 |
-
2020
- 2020-09-17 CN CN202010978829.4A patent/CN112235597B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101035296A (zh) * | 2007-04-03 | 2007-09-12 | 北京中星微电子有限公司 | 一种数字音视频同步的方法、装置和系统 |
JP2016063247A (ja) * | 2014-09-12 | 2016-04-25 | 株式会社リコー | 配信システム及び配信方法 |
CN105657579A (zh) * | 2015-10-29 | 2016-06-08 | 乐视致新电子科技(天津)有限公司 | 直播音频切换方法、流媒体服务器及客户端 |
CN105872429A (zh) * | 2016-04-29 | 2016-08-17 | 高翔 | 音视频文件生成方法及装置 |
CN107872605A (zh) * | 2016-09-26 | 2018-04-03 | 青柠优视科技(北京)有限公司 | 一种无人机系统和无人机音视频处理方法 |
CN109660805A (zh) * | 2017-10-10 | 2019-04-19 | 武汉斗鱼网络科技有限公司 | 解码播放中音视频同步优化方法、存储介质、设备及系统 |
CN109729391A (zh) * | 2018-12-18 | 2019-05-07 | 北京华夏电通科技有限公司 | 一种多路媒体流的发送方法及系统 |
CN109714634A (zh) * | 2018-12-29 | 2019-05-03 | 青岛海信电器股份有限公司 | 一种直播数据流的解码同步方法、装置及设备 |
CN110062277A (zh) * | 2019-03-13 | 2019-07-26 | 北京河马能量体育科技有限公司 | 一种音视频自动同步方法及同步系统 |
CN110267099A (zh) * | 2019-05-22 | 2019-09-20 | 视联动力信息技术股份有限公司 | 一种基于视联网的数据传输方法和视联网终端 |
CN110519635A (zh) * | 2019-08-07 | 2019-11-29 | 河北远东通信系统工程有限公司 | 一种无线集群系统的音视频媒体流合流方法及系统 |
Non-Patent Citations (2)
Title |
---|
A novel algorithm for synchronizing audio and video streams in MPEG-2 system layer;Shereen M. Mosharafa;《2014 9th International Conference on Computer Engineering & Systems (ICCES)》;20150205;全文 * |
基于FFmpeg的高清实时直播系统设计与实现;席文强;《中国优秀硕士学位论文全文库》;20180315;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112235597A (zh) | 2021-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112235597B (zh) | 流媒体直播音视频同步保护方法、装置、计算机设备 | |
CN101536014B (zh) | 用于多媒体捕获的嵌入式装置 | |
EP4054190A1 (en) | Video data encoding method and device, apparatus, and storage medium | |
CN112804707B (zh) | 数据传输方法、装置、计算机可读介质及电子设备 | |
CN110505522A (zh) | 视频数据的处理方法、装置、及电子设备 | |
CN112073543B (zh) | 一种云视频录制方法、系统和可读存储介质 | |
CN110248192B (zh) | 编码器切换、解码器切换、屏幕分享方法和屏幕分享系统 | |
CN109151505B (zh) | 一种视频转码方法、系统、装置及计算机可读存储介质 | |
CN113906764B (zh) | 用于转码视频的方法、设备和计算机可读介质 | |
CN112044055A (zh) | 图像数据采集方法、系统、装置、电子设备及存储介质 | |
US11804248B2 (en) | Timecode generation and assignment | |
CN110730364B (zh) | 一种云手机数据传输方法、装置及存储介质 | |
US10841621B2 (en) | Fault recovery of video bitstream in remote sessions | |
CN104053002A (zh) | 视频解码方法和视频解码装置 | |
JP2008219189A (ja) | 放送ストリーム記録装置、放送ストリーム記録方法、放送ストリーム記録プログラム、および記録媒体 | |
CN116781973B (zh) | 视频编解码方法、装置、存储介质和电子设备 | |
CN112055174B (zh) | 一种视频传输方法、装置及计算机可读存储介质 | |
CN113259621A (zh) | 一种云会议分步录制方法及系统 | |
CN113613058A (zh) | 一种网络视频流本地存储方法、设备及介质 | |
CN111355933B (zh) | 一种Gstreamer框架适时检测方法及服务器 | |
JP3259691B2 (ja) | マルチキャストシステム、及び受信装置 | |
KR100899666B1 (ko) | 분산 다중 스트리밍 전송 장치 | |
CN113115039B (zh) | 工作频率确定方法、装置和电子设备 | |
CN112948600B (zh) | 一种高性能多协议音视频存储系统 | |
CN116471457A (zh) | 基于多屏的实时音视频传输方法、装置、终端设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: Streaming live streaming audio and video synchronization protection method, device, and computer equipment Effective date of registration: 20230912 Granted publication date: 20220729 Pledgee: Guangxi Guangtou Zhanxin Investment Fund Partnership Enterprise (L.P.) Pledgor: IFREECOMM TECHNOLOGY Co.,Ltd. Registration number: Y2023980056247 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |