CN113141521B - 一种音视频数据编码方法、装置、电子设备及存储介质 - Google Patents

一种音视频数据编码方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113141521B
CN113141521B CN202010054626.6A CN202010054626A CN113141521B CN 113141521 B CN113141521 B CN 113141521B CN 202010054626 A CN202010054626 A CN 202010054626A CN 113141521 B CN113141521 B CN 113141521B
Authority
CN
China
Prior art keywords
audio
video
packet
data
packets
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
Application number
CN202010054626.6A
Other languages
English (en)
Other versions
CN113141521A (zh
Inventor
郑建峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202010054626.6A priority Critical patent/CN113141521B/zh
Priority to PCT/CN2021/072152 priority patent/WO2021143844A1/zh
Publication of CN113141521A publication Critical patent/CN113141521A/zh
Priority to US17/843,861 priority patent/US20220329841A1/en
Application granted granted Critical
Publication of CN113141521B publication Critical patent/CN113141521B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23605Creation or processing of packetized elementary streams [PES]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/167Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • H04N21/4343Extraction or processing of packetized elementary streams [PES]

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本公开是关于一种音视频数据编码方法、装置、电子设备及存储介质,涉及数据处理技术领域,用以解决目前在线播放的延迟和卡顿问题。本公开方法包括:将缓存的音频帧ES数据封装为PES数据包后再拆分为连续的音频TS数据包,将视频帧ES数据封装为PES数据包后再拆分为连续的视频TS数据包;根据音视频帧顺序输出音频TS数据包组以及视频TS数据包组;其中属于同一音频PES数据包的音频TS数据包组之间有视频TS数据包组,属于不同视频PES数据包的视频TS数据包组之间有音频TS数据包组。由于本公开同一音频PES数据包拆分得到的TS数据包不再连续输出,音视频TS数据包以较小单位交替输出,减小了在线播放的延迟和卡顿。

Description

一种音视频数据编码方法、装置、电子设备及存储介质
技术领域
本公开涉及数据处理技术领域,尤其涉及一种音视频数据编码方法、装置、电子设备及存储介质。
背景技术
目前MPEG-TS(MPEG-Transport Stream,MPEG传输流)封装的方式,在编码的时候缓存住输入封装器的音频帧,直到缓存的音频数据超出缓存大小的时候才把所有缓存的音频帧封装成一个音频PES(Packetized Elementary Stream,打包基本流)数据包,并将PES数据包拆分为音频TS(Transport Stream,传输流)数据包后输出;输入封装器的视频帧会以单帧为单位封装成视频PES数据包,并将视频数据包拆分为视频TS数据包后立即输出。
该方式编码出来的码流会导致音视频ES数据成块的堆积。然而,在视频播放是需要同时播放视频画面和声音,由于音视频数据的成块堆积,在传输完视频数据块后,还需要等待传输一点音频数据,如图1所示,虚线所框的Video-0~Video-3和Audio-0才能开始播放,因而需要传输一个较大的数据块才能开始播放。在网络视频点播的场景下,容易导致在线播放的延迟和卡顿。
综上,目前的音视频编码容易导致在线播放的延迟和卡顿。
发明内容
本公开提供一种音视频数据编码方法、装置、电子设备及存储介质,以至少解决相关技术中的音视频编码容易导致在线播放的延迟和卡顿的问题。
本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种音视频数据编码方法,包括:
将缓存的音频帧基本流ES数据封装为至少一个音频打包基本流PES数据包,以及将缓存的视频帧ES数据封装为至少一个视频PES数据包,其中所述音频帧和所述视频帧属于同一视频文件;
将所述音频PES数据包拆分为至少两个连续的音频传输流TS数据包,以及将所述视频PES数据包拆分为至少两个连续的视频TS数据包;
根据音频帧的顺序输出包含至少一个音频TS数据包的音频TS数据包组,以及根据视频帧的顺序输出包含至少一个视频TS数据包的视频TS数据包组;
其中,所述音频TS数据包组和视频TS数据包组的输出顺序中,属于同一音频PES数据包的音频TS数据包组之间有至少一个所述视频TS数据包组,属于不同视频PES数据包的视频TS数据包组之间有至少一个所述音频TS数据包组。
可选的,同一音频PES数据包拆分得到的音频TS数据包划分为至少两个音频TS数据包组;和/或
同一视频PES数据包拆分得到的视频TS数据包划分为一个视频TS数据包组。
可选的,将所述同一音频PES数据包拆分得到的音频TS数据包划分为至少两个音频TS数据包组,包括:
对音频TS数据包进行多轮分组,每轮分组为:从当前未分组的所述音频TS数据包中选取对应的DTS(Decode Time Stamp,解码时间戳)最小的所述音频TS数据包划分为一组,其中所述音频TS数据包对应的DTS为所述音频TS数据包包含的音频帧ES数据对应的各个音频帧DTS中最小的音频帧DTS。
可选的,将所述同一视频PES数据包拆分得到的视频TS数据包划分为一个视频TS数据包组,包括:
对视频TS数据包进行多轮分组,每轮分组为:从当前未分组的所述视频TS数据包中选取对应的DTS最小的所述视频TS数据包划分为一组,其中所述视频TS数据包对应的DTS为所述视频TS数据包包含的视频帧ES数据对应的各个视频帧DTS中最小的视频帧DTS。
可选的,所述以TS数据包组为单位输出所述音频TS数据包和视频TS数据包,包括:
在对所述音频TS数据包和视频TS数据包进行多轮分组的过程结束后,确定音频TS数据包组和视频TS数据包组的输出顺序,并根据确定的输出顺序输出所述音频TS数据包组和所述视频TS数据包组;
其中,所述输出顺序为:按照音频TS数据包组中音频TS数据包对应的DTS从小到大输出音频TS数据包组,以及按照视频TS数据包组中视频TS数据包对应的DTS从小到大输出视频TS数据包组,且一组音频TS数据包组和一组视频TS数据包组交替输出。
可选的,所述以TS数据包组为单位输出所述音频TS数据包和视频TS数据包,包括:
在对所述音频TS数据包进行多轮分组的过程中,每对所述音频TS数据包进行至少一轮分组后,输出分组得到的音频TS数据包组;以及
在对所述视频TS数据包进行多轮分组的过程中,每对所述视频TS数据包进行至少一轮分组后,输出分组得到的视频TS数据包组,且一组音频TS数据包组和一组视频TS数据包组交替输出。
可选的,在所述将缓存的音频帧基本流ES数据封装为至少一个音频打包基本流PES数据包,以及将缓存的视频帧ES数据封装为至少一个视频PES数据包之前,还包括:
缓存在预设单位时间内输入所述音视频编码器的音频帧ES数据以及视频帧ES数据。
根据本公开实施例的第二方面,提供一种音视频数据编码装置,包括:
封装单元,被配置为执行将缓存的音频帧ES数据封装为至少一个音频PES数据包,以及将缓存的视频帧ES数据封装为至少一个视频PES数据包,其中所述音频帧和所述视频帧属于同一视频文件;
拆分单元,被配置为执行将所述音频PES数据包拆分为至少两个连续的音频TS数据包,以及将所述视频PES数据包拆分为至少两个连续的视频TS数据包;
输出单元,被配置为执行根据音频帧的顺序输出包含至少一个音频TS数据包的音频TS数据包组,以及根据视频帧的顺序输出包含至少一个视频TS数据包的视频TS数据包组;
其中,所述音频TS数据包组和视频TS数据包组的输出顺序中,属于同一音频PES数据包的音频TS数据包组之间有至少一个所述视频TS数据包组,属于不同视频PES数据包的视频TS数据包组之间有至少一个所述音频TS数据包组。
可选的,同一音频PES数据包拆分得到的音频TS数据包划分为至少两个音频TS数据包组;和/或
同一视频PES数据包拆分得到的视频TS数据包划分为一个视频TS数据包组。
可选的,所述输出单元具体被配置为执行:
对音频TS数据包进行多轮分组,每轮分组为:从当前未分组的所述音频TS数据包中选取对应的DTS最小的所述音频TS数据包划分为一组,其中所述音频TS数据包对应的DTS为所述音频TS数据包包含的音频帧ES数据对应的各个音频帧DTS中最小的音频帧DTS。
可选的,所述输出单元具体被配置为执行:
对视频TS数据包进行多轮分组,每轮分组为:从当前未分组的所述视频TS数据包中选取对应的DTS最小的所述视频TS数据包划分为一组,其中所述视频TS数据包对应的DTS为所述视频TS数据包包含的视频帧ES数据对应的各个视频帧DTS中最小的视频帧DTS。
可选的,所述输出单元具体被配置为执行:
在对所述音频TS数据包和视频TS数据包进行多轮分组的过程结束后,确定音频TS数据包组和视频TS数据包组的输出顺序,并根据确定的输出顺序输出所述音频TS数据包组和所述视频TS数据包组;
其中,所述输出顺序为:按照音频TS数据包组中音频TS数据包对应的DTS从小到大输出音频TS数据包组,以及按照视频TS数据包组中视频TS数据包对应的DTS从小到大输出视频TS数据包组,且一组音频TS数据包组和一组视频TS数据包组交替输出。
可选的,所述输出单元具体被配置为执行:
在对所述音频TS数据包进行多轮分组的过程中,每对所述音频TS数据包进行至少一轮分组后,输出分组得到的音频TS数据包组;以及
在对所述视频TS数据包进行多轮分组的过程中,每对所述视频TS数据包进行至少一轮分组后,输出分组得到的视频TS数据包组,且一组音频TS数据包组和一组视频TS数据包组交替输出。
可选的,所述装置还包括:
缓存单元,被配置为执行在所述封装单元将缓存的音频帧基本流ES数据封装为至少一个音频打包基本流PES数据包,以及将缓存的视频帧ES数据封装为至少一个视频PES数据包之前,缓存在预设单位时间内输入所述音视频编码器的音频帧ES数据以及视频帧ES数据。
根据本公开实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现本公开实施例第一方面中任一项所述的音视频数据编码方法。
根据本公开实施例的第四方面,提供一种非易失性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行本公开实施例第一方面中任一项所述的音视频数据编码方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行实现本公开实施例上述第一方面以及第一方面任一可能涉及的方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
由于本公开实施例,由属于同一PES音频数据包拆分得到的音频TS数据包组之间插入了至少一个视频TS数据包组,且属于不同视频PES数据包拆分得到的视频TS数据包组之间插入了至少一个音频TS数据包组,因而在输出音频TS数据包时,由同一音频PES数据包拆分得到的音频TS数据包不再连续输出,中间插入了至少一个视频TS数据包;同样由不同视频PES数据包拆分得到的视频TS数据包不再连续输出,中间插入了至少一个音频TS数据包,与相关技术中同一音频PES数据包拆分得到的音频TS数据包连续输出,以及不同视频PES数据包拆分得到的视频TS数据包连续输出相比,本公开实施例中的方式可以实现音视频TS数据包以较小的单位交织编码,因而在点播场景下,无需等待下载一个很大的数据块,因而可以减小在线播放的延迟和卡顿。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种音视频数据交织编码的示意图。
图2是根据一示例性实施例示出的一种音视频数据封装和拆分的示意图;
图3是根据一示例性实施例示出的一种音视频数据交替编码的示意图;
图4是根据一示例性实施例示出的一种分时复用的示意图;
图5是根据一示例性实施例示出的一种音视频数据编码方法的流程图;
图6A是根据一示例性实施例示出的一种音视频PES书包拆分的示意图;
图6B是根据一示例性实施例示出的一种音视频数据按帧交替编码的示意图;
图6C是根据一示例性实施例示出的另一种音视频数据按帧交替编码的示意图;
图7是根据一示例性实施例示出的一种音频TS数据包组与视频TS数据包组交替输出的示意图;
图8是根据一示例性实施例示出的另一种音视频数据按帧交替编码的流程图;
图9是根据一示例性实施例示出的一种音视频数据编码的完整方法的流程图;
图10是根据一示例性实施例示出的一种音视频数据编码装置的框图;
图11是根据一示例性实施例示出的一种电子设备的框图;
图12是根据一示例性实施例示出的一种计算装置的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
下面对文中出现的一些词语进行解释:
1、和/或,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
2、电子设备,可以是移动电话、计算机、数字广播终端、消息收发设备、游戏控制台、平板设备、医疗设备、健身设备、个人数字助理等。
3、MPEG(Moving Picture Experts Group,动态图像专家组),是ISO/IEC(International Organization for Standardization/InternationalElectrotechnical Commission,国际标准化组织/国际电工委员会)底下专门针对运动图像和语音压缩制定国际标准的组织。
MPEG2即ISO/IEC13818,是MPEG组织制定的第二代音视频有损压缩标准,它的正式名称为“基于数字存储媒体运动图像和语音的压缩标准”。
MPEG2 TS即MPEG传输流。其中,MPEG2标准包含多个部分,本公开实施例相关的TS传输流标准是MPEG2标准的第一部分ISO/IEC 13818-1或ITU-T(InternationalTelecommunication Union Telecommunication Standardization Sector,国际电信联盟-电信标准部)Rec.H.222.0)定义的音视频传输流标准。
4、ES(Elementary Stream,基本流),指未经MPEG2 TS封装的视频压缩流或音频流,例如MPEG2标准的第二部分(ISO/IEC 13818-2或ITU-T Rec.H.262)定义的视频压缩流;或者ITU-T Rec.H.264标准所定义的H.264视频压缩流;PES指MPEG2-TS定义的一种数据封装结构。
5、FFmpeg,是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。
6、视频编码方式,就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。在本公开实施例中的视频流传输过程中所采用的编解码标准为H.264或其他,其中H.264指的是ISO/IEC 14496-10或ITU-T Rec.H.264标准所定义的视频压缩方法或视频压缩流;音频流传输过程中所采用的编解码标准为AAC(Advanced AudioCoding,高级音频编码技术)或其它,其中AAC指的是ISO/IEC 13818-7标准以及ISO/IEC14496-3标准所定义的音频压缩方法或音频压缩数据流。
以下结合说明书附图对本公开的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本公开,并不用于限定本公开,并且在不冲突的情况下,本公开实施例中的实施例及实施例中的特征可以相互组合。
如图2所示,MPEG2 TS传输流需要先把音视频ES数据封装到PES数据包(PESpacket)中,其中frameN表示第N帧视频帧ES数据(或音频帧ES数据),PES H表示PES头部;然后再把PES数据包拆分成188字节固定大小的TS数据包(TS packet)。其中,拆分是指拆分并封装的意思,将PES数据包拆分得到多个数据包后,每一个数据包再封装为TS数据包,其中TS H表示TS数据包头部。TS数据包是MPEG2 TS传输流规定的最小传输单位。每个TS数据包前4字节为包头数据,用于描述本TS数据包相关的数据;剩下的184字节用于承载PES的数据块。
然而,MPEG TS这种数据封装结构面临的一个问题,当PES数据包大小不是184整数倍时需要在PES数据包对应的最后一个TS数据包里插入一些填充字节(stuffing bytes),如图2中所示灰色部分。由于一个PES数据包可以封装一个或多个音频帧,因而,为了降低填充字节的使用,提高信道传输的利用率,相关技术中在编码时会将多个音频帧合并输入一个PES数据包。但这样又会带来一个问题,就是造成音视频ES数据的成块堆积,破坏音视频的交织,不利于在线点播视频的实时观看。
参阅图3所示,为相关技术中示出的一种音视频数据交替编码的示意图,其中Video-i TS表示属于第i帧视频帧的TS数据包(i=0,1,2,3,4,5),例如Video-0 TS表示属于第0帧视频帧的TS数据包;Audio-j TS表示属于第j帧音频帧的TS数据包(j=0,1,2,3,4,5),例如Audio-0 TS表示属于第0帧音频帧的TS数据包;Video-PES-0至Video-PES-5表示第1至6个视频PES数据包;同样地,Audio-PES-0表示第1个音频PES数据包,Audio-PES-1表示第2个音频PES数据包。其中,同一个视频PES数据包包含一帧视频帧的ES数据,同一音频PES数据包包含多个音频帧的ES数据,例如Video-PES-0仅包含第0帧视频帧的ES数据,共3个视频TS数据包;Audio-PES-0中包含第0至2帧这3个音频帧的ES数据,共7个音频TS数据包。图中的灰色部分1至4指Audio-1至4的头部。其中,音频帧不是按照TS数据包对齐的,Audio-1的头部和Audio-0的尾部共处于一个TS数据包中;Audio-2的头部和Audio-1的尾部共处于一个TS数据包中,以此类推。
很显然,相关技术中在编码输出TS数据包时,是以连续多个视频PES数据包拆分得到的多个视频TS数据包连续输出,然后是同一音频PES数据包拆分得到的多个音频TS数据包连续输出,这样形成多个视频PES、一个音频PES交替输出的方式。由于视频播放时需要同时播放视频画面和声音,而在音视频ES数据的成块堆积的情况下,需要传输一个较大的数据块才能开始播放。在网络视频点播的场景下容易导致在线播放的延迟和卡顿。
有鉴于此,本公开实施例提供一种音视频数据编码方法、装置、电子设备和存储介质。其中,分时复用指由同一个PES数据包拆分得到的TS数据包(TS packet)不必是物理连续的,属于不同ES流的TS数据包是可以交替出现的。如图4所示,为本公开实施例提供的一种分时复用的示意图,其中stream#1与stream#2表示不同的ES流,图中白色块部分表示TS数据包头部(TS Header),TS Header中的PID(packet identifier)字段可用于区别该TS数据包所属ES流,属于stream#1的TS数据包与属于stream#2的TS数据包有一部分是交替出现的。本公开实施例基于MPEG-TS流在传输多路音视频数据时可分时复用的特点,在对音视频数据进行编码的过程中,由同一PES音频数据包拆分得到的部分或全部音频TS数据包之间插入了至少一个音频TS数据包,且不同视频PES数据包拆分得到的部分或全部视频TS数据包之间插入了至少一个音频TS数据包,以较小单位实现音视频数据的交织,因而只需要传输一个较小的数据块,以减少在线点播时的卡顿和延迟。
为便于理解,下面结合附图对本公开提供的技术方案做进一步说明。
图5是根据一示例性实施例示出的一种音视频数据编码方法的流程图,如图5所示,包括以下步骤:
在步骤S51中,将缓存的音频帧ES数据封装为至少一个音频PES数据包,以及将缓存的视频帧ES数据封装为至少一个视频PES数据包,其中音频帧和视频帧属于同一视频文件;
在步骤S52中,将音频PES数据包拆分为至少两个连续的音频TS数据包,以及将视频PES数据包拆分为至少两个连续的视频TS数据包;
在步骤S53中,根据音频帧的顺序输出包含至少一个音频TS数据包的音频TS数据包组,以及根据视频帧的顺序输出包含至少一个视频TS数据包的视频TS数据包组;
其中,音频TS数据包组和视频TS数据包组的输出顺序中,属于同一音频PES数据包的音频TS数据包组之间有至少一个视频TS数据包组,属于不同视频PES数据包的视频TS数据包组之间有至少一个音频TS数据包组。
需要说明的是,其中音频TS数据包组和视频TS数据包组的输出顺序中,在属于不同音频PES数据包拆分得到的音频TS数据包组之间的位置上是否有至少一个视频TS数据包组,以及在属于同一视频PES数据包拆分得到的视频TS数据包组之间的位置上是否有至少一个音频TS数据包组,在本公开实施例中不做具体限定,可以有,也可以没有,可视实际情况中PES数据包的大小而定。
上述方法,由属于同一PES音频数据包拆分得到的音频TS数据包组之间插入了至少一个音频TS数据包组,且属于不同视频PES数据包拆分得到的部分或全部视频TS数据包之间插入了至少一个音频TS数据包组,因而在输出音频TS数据包时,由同一音频PES数据包拆分得到的音频TS数据包不再连续输出,中间插入了至少一个视频TS数据包;同样由不同视频PES数据包拆分得到的视频TS数据包不再连续输出,中间插入了至少一个音频TS数据包,与相关技术中同一音频PES数据包拆分得到的音频TS数据包连续输出,以及不同视频PES数据包拆分得到的视频TS数据包连续输出相比,本公开实施例中的方式可以实现音视频TS数据包以较小的单位交织编码,因而在点播场景下,无需等待下载一个很大的数据块,因而可以减小在线播放的延迟和卡顿。
在一种可选的实施方式中,在将缓存的音频帧基本流ES数据封装为至少一个音频打包基本流PES数据包,以及将缓存的视频帧ES数据封装为至少一个视频PES数据包之前,缓存在预设单位时间内输入音视频编码器的音频帧ES数据以及视频帧ES数据。
可选的,设置一个缓存时间大小,记为cache_duration,其中cache_duration就是预设单位时间,在每个cache_duration内MPEG-TS编码器接收到音频帧ES数据、视频帧ES数据后不立即编码而是将其缓存,一旦缓存数据的时间长度超出cache_duration,立即执行缓存编码刷新操作。
例如,cache_duration为1秒,假设在0至1秒时间内缓存了0至2这3帧视频帧的ES数据,以及0至2这3帧音频帧的ES数据。
其中,缓存编码刷新操作是指将这1秒时间内缓存的这3帧音频帧及3帧视频帧的ES数据进行编码并输出,开始下一个cache_duration的ES数据的缓存。
在一种可选的实施方式中,将缓存的视频帧ES数据封装为至少一个视频PES数据包时,将缓存的一帧视频帧的ES数据封装为一个视频PES数据包。
例如,以帧为单位进行视频PES数据包的封装,一个视频帧的ES数据封装为一个视频PES数据包,则第0帧视频帧的ES数据封装为视频PES数据包1,第1帧视频帧的ES数据封装为视频PES数据包2,第2帧视频帧的ES数据封装为视频PES数据包3。
在一种可选的实施方式中,将缓存的音频帧ES数据封装为至少一个音频打包基本流PES数据包时,同样也是将缓存的至少一帧音频帧的ES数据封装为一个音频PES数据包。
例如,也将该缓存时间单位内缓存的音视频ES数据也以帧为单位进行PES数据包的封装,一个音频帧的ES数据封装为一个音频PES数据包,则第0帧音频帧的ES数据封装为音频PES数据包1,第1帧音频帧的ES数据封装为音频PES数据包2,第2帧音频帧的ES数据封装为音频PES数据包3。
可选的,为了减少有效字节的填充,提高信道传输的利用率,则可将多个音频帧的ES数据合并封装为一个音频PES数据包,例如将第0至2帧音频帧的ES数据封装为音频PES数据包4。
可选的,也可将第0帧音频帧的ES数据封装为音频PES数据包5,第1至2帧音频帧的ES数据封装为音频PES数据包6;或者,将第0至1帧音频帧的ES数据封装为音频PES数据包7,第2帧音频帧的ES数据封装为音频PES数据包8。这样相比于一个音频帧的ES数据封装为一个音频PES数据包的方式,也可以减少有效字节的填充。
下面主要以帧为单位对视频帧的ES数据进行视频PES数据包的封装,而以多个音频帧的ES数据封装为同一个音频PES数据包为例进行详细介绍。
在本公开实施例中,对缓存的音频帧ES数据、视频帧ES数据进行封装得到PES数据包后,则进一步需要将PES数据包拆分为TS数据包。
具体的,将每个音频PES数据包拆分为至少两个连续的音频TS数据包,以及将每个视频PES数据包拆分为至少两个连续的视频TS数据包。
如图6A所示,将视频PES数据包Video-PES-0至Video-PES-2各拆分为3个视频TS数据包,分别为视频TS数据包1至9,参阅图6A所示的Vdeio-0TS-1至Vdeio-2 TS-9;将音频PES数据包Audio-PES-0拆分为7个音频TS数据包,分别为音频TS数据包1至7,其中第0至2帧音频帧的TS数据包分别为音频TS数据包1至2、音频TS数据包3至5、音频TS数据包6至7,其中,音频TS数据包1至7参阅图6A所示的Audio-0 TS-1至Audio-2 TS-7。
在本申请实施例中的音频TS数据包组和视频TS数据包组的输出顺序中,属于同一音频PES数据包的音频TS数据包组之间有至少一个视频TS数据包组,属于不同视频PES数据包的视频TS数据包组之间有至少一个音频TS数据包组。
具体的,将属于同一音频PES数据包的音频TS数据包组之间的位置叫做第一位置,则属于同一音频PES数据包的音频TS数据包组之间有至少一个视频TS数据包组时,也就是属于同一音频PES数据包的音频TS数据包组之间的部分或全部第一位置上有至少一个视频TS数据包组。
同理,若将属于不同视频PES数据包的视频TS数据包组之间的位置叫做第二位置时,则属于不同视频PES数据包的视频TS数据包组之间的部分或全部第二位置上有至少一个音频TS数据包组。
其中,一个音频TS数据包组可以只包含一个音频TS数据包,也可包含多个音频TS数据包。同样,一个视频TS数据包组可以只包含一个视频TS数据包,也可以包含多个视频TS数据包。
以图6A所示为例,假设一个音频TS数据包组可以只包含一个音频TS数据包,则第一位置指同一音频PES数据包拆分得到的音频TS数据包组之间的位置,也就是Audio-PES-0拆分得到的7个音频TS数据包之间的位置。例如:音频TS数据包1与音频TS数据包2之间的位置,音频TS数据包2与音频TS数据包3之间的位置,音频TS数据包3与音频TS数据包4之间的位置,音频TS数据包4与音频TS数据包5之间的位置,音频TS数据包5与音频TS数据包6之间的位置,音频TS数据包6与音频TS数据包7之间的位置。
其中,部分或全部第一位置则是指上述6个位置中的部分或全部。
假设一个音频TS数据包组包含至少两个音频TS数据包,以Audio-PES-0为例,其中音频TS数据包1至2为一组,音频TS数据包3至5为一组,音频TS数据包6至7为一组,则第一位置指音频TS数据包2与音频TS数据包3之间的位置,音频TS数据包5与音频TS数据包6之间的位置。
其中,部分或全部第一位置则是指上述2个位置中的部分或全部。
同理,仍以图6A所示为例,第二位置指不同视频PES数据包拆分得到的视频TS数据包之间的位置,也就是Video-PES-0、Video-PES-1、Video-PES-2之间的位置。例如:视频TS数据包3与视频TS数据包4之间的位置,视频TS数据包6与视频TS数据包7之间的位置。
其中,部分或全部第二位置则是指上述2个位置中的部分或全部。该方式下一个视频TS数据包组包含一个或至少两个视频TS数据包。
在本公开实施例中,根据音频帧的顺序输出音频TS数据包,以及根据视频帧的顺序输出视频TS数据包时,在音频TS数据包和视频TS数据包的输出顺序中,部分或全部第一位置上有至少一个视频TS数据包组,部分或全部第二位置上有至少一个音频TS数据包组。
例如,首先输出第0帧视频帧的视频TS数据包1至3,在视频TS数据包3以及视频TS数据包4之间的第二位置上,插入第0帧音频帧的音频TS数据包1至2,在音频TS数据包2与音频TS数据包3之间的第一位置上,插入第1帧视频帧的视频TS数据包4至6,在视频TS数据包6以及视频TS数据包7之间的第二位置上,插入第1帧音频帧的音频TS数据包3至5,在音频TS数据包5与音频TS数据包6之间的第一位置上,插入第2帧视频帧的视频TS数据包7至9,最后在视频TS数据包9之后输出第2帧音频帧的音频TS数据包6至7,如图6B所示。
上述实施例列举的是一种在部分第一位置上有至少一个视频TS数据包,以及在全部第二位置上有至少一个音频TS数据包的输出方式,该实施例只是举例说明,其它根据本公开实施例中所规定的输出顺序输出音频TS数据包以及视频TS数据包的方式也适用于本公开实施例,不再一一列举。
在本公开实施例中,对TS数据包进行分组时,一种可选的实施方式为:将同一音频PES数据包拆分得到的音频TS数据包划分为至少两个音频TS数据包组;和/或,将同一个视频PES数据包拆分得到的视频TS数据包划分为一个视频TS数据包组。
例如,在对音频TS数据包分组时,以音频PES数据包4为例,共包含7个音频TS数据包,划分为两个音频TS数据包组,分别包含音频TS数据包1至4,音频TS数据包5至7。
在对视频TS数据包分组时,以视频PES数据包1至3为例,则视频PES数据包1拆分得到的视频TS数据包1至3划分为一个视频TS数据包组,视频PES数据包2拆分得到的视频TS数据包4至6划分为一个视频TS数据包组,视频PES数据包3拆分得到的视频TS数据包7至9划分为一个视频TS数据包组。
在一种可选的实施方式中,通过下列方式对本次预设单位时间内划分得到的至少两个连续的音频TS数据包进行划分:
对拆分得到的所有音频TS数据包进行多轮分组,每轮分组为:从当前未分组的音频TS数据包中选取对应的DTS最小的音频TS数据包划分为一组,其中音频TS数据包对应的DTS为音频TS数据包包含的音频帧ES数据对应的各个音频帧DTS中最小的音频帧DTS。
需要说明的是,通过上述方式则可将同一音频PES数据包拆分得到的音频TS数据包划分为至少两个音频TS数据包组。
下面仍以图6A所示音频TS数据包1至7为例,对多轮分组的过程进行举例说明:
假设,当前未分组的音频TS数据包为音频TS数据包1至7,其中音频TS数据包1至2对应第0帧音频帧,DTS=0;音频TS数据包3至5对应第1帧音频帧,DTS=0.3;音频TS数据包6至7对应第2帧音频帧,DTS=0.7。
在第一轮分组时,当前未分组的音频TS数据包有7个,其中对应的DTS最小的视频TS数据包为音频TS数据包1至2,假设划分为音频TS数据包组1;在第二轮分组时,当前未分组的音频TS数据包有5个,其中对应的DTS最小的视频TS数据包为音频TS数据包3至5,假设划分为音频TS数据包组2;在第三轮分组时,当前未分组的音频TS数据包有2个,其中对应的DTS最小的视频TS数据包为音频TS数据包6至7,假设划分为音频TS数据包组3,至此分组完成。
需要说明的是,当一个音频TS数据包中包含多帧音频帧的ES数据时,该TS数据包对应的DTS则是这多帧音频帧的DTS中最小的DTS。
例如图6C所示,图中包含了两个视频TS数据包V1及V2以及3个音频TS数据包A1、A2、A3,其中音频TS数据包A1既包含第N帧音频帧的ES数据,又包含第N+1帧音频帧的部分ES数据;音频TS数据包A2既包含第N+1帧音频帧的部分ES数据,第N+2帧音频帧的ES数据,又包含第N+3帧音频帧的部分ES数据。
以音频TS数据包A1为例,则该音频TS数据包对应的DTS则是第N帧音频帧(Audio-N)的DTS与第N+1帧音频帧(Audio-N+1)的DTS中最小的DTS,也就是第N帧音频帧的DTS为音频TS数据包A1对应的DTS;以音频TS数据包A2为例,则该音频TS数据包对应的DTS则是第N+1帧音频帧的DTS、第N+2帧音频帧(Audio-N+2)的DTS与第N+3帧音频帧(Audio-N+3)的DTS中最小的DTS,也就是第N+1帧音频帧的DTS为音频TS数据包A2对应的DTS;对于音频TS数据包A3,由于该数据包中仅包含第N+3帧音频帧的ES数据,所以其对应的DTS则为第N+3帧音频帧的DTS。
在一种可选的实施方式中,通过下列方式对本次预设单位时间内划分得到的至少两个连续的视频TS数据包进行划分:
对拆分得到的所有视频TS数据包进行多轮分组,每轮分组为:从当前未分组的视频TS数据包中选取对应的DTS最小的视频TS数据包划分为一组,其中视频TS数据包对应的DTS为视频TS数据包包含的视频帧ES数据对应的各个视频帧DTS中最小的视频帧DTS。
需要说明的是,通过上述方式则可将同一视频PES数据包拆分得到的视频TS数据包划分为一个视频TS数据包组。
下面仍以视频TS数据包1至9为例,对多轮分组的过程进行举例说明:
假设,当前未分组的视频TS数据包为视频TS数据包1至9,其中视频TS数据包1至3对应第0帧视频帧,DTS=0;视频TS数据包4至6对应第1帧视频帧,DTS=0.3;视频TS数据包7至9对应第2帧视频帧,DTS=0.7。
在第一轮分组时,当前未分组的视频TS数据包有9个,其中对应的DTS最小的视频TS数据包为视频TS数据包1至3,假设划分为视频TS数据包组1;在第二轮分组时,当前未分组的视频TS数据包有6个,其中对应的DTS最小的视频TS数据包为视频TS数据包4至6,假设划分为视频TS数据包组2;在第三轮分组时,当前未分组的视频TS数据包有3个,其中对应的DTS最小的视频TS数据包为视频TS数据包7至9,假设划分为视频TS数据包组3,至此分组完成。
需要说明的是,在本公开实施例中,主要是介绍的是以帧为单位将视频ES封装为PES数据包的方式,因而一般不会出现一个视频TS数据包中包含多帧视频帧的ES数据的情况。
参阅图6C所示,为本公开实施例提供的另一种根据音频帧的顺序输出音频TS数据包组,以及根据视频帧的顺序输出视频TS数据包组的示意图,其中,多个音频帧封装成一个音频PES数据包再拆分成了3个音频TS数据包,这3个音频TS数据包划分为了3组音频TS数据包组,和对应时间段的视频TS数据包组交替输出,一组视频TS数据包包含一个视频TS数据包。在本公开实施例中,以TS数据包组为单位输出音频TS数据包和视频TS数据包时,主要有以下两种输出方式,下面分别进行详细介绍:
输出方式一、在对音频TS数据包以及视频TS数据包都进行多轮分组结束后,根据音频帧的顺序以及视频帧的顺序,交替输出音频TS数据包组和视频TS数据包组。
在一种可选的实施方式中,在对音频TS数据包和视频TS数据包进行多轮分组的过程结束后,确定音频TS数据包组和视频TS数据包组的输出顺序,并根据确定的输出顺序输出音频TS数据包组和视频TS数据包组。
其中,输出顺序为:按照音频TS数据包组中音频TS数据包对应的DTS从小到大输出音频TS数据包组,以及按照视频TS数据包组中视频TS数据包对应的DTS从小到大输出视频TS数据包组,且一组音频TS数据包组和一组视频TS数据包组交替输出。
例如,按照上述实施例中所列举的对音频TS数据包1至7进行3轮分组以及对视频TS数据包1至9进行3轮分组为例,在这6轮分组结束后,按照DTS大小输出6轮分组得到的6个TS数据包组。
一种交替输出的方式为,先输出视频TS数据包组1,其次是音频数据包组1,视频TS数据包组2,音频数据包组2,视频TS数据包组3,音频数据包组3。
其中,以TS数据包组为单位输出TS数据包时,实际上也是将一组TS数据包组中的TS数据包按照先后顺序依次输出,所以按照上述TS数据包组的输出顺序输出TS数据包时,TS数据包的输出顺序为:视频TS数据包1、视频TS数据包2、视频TS数据包3,音频TS数据包1、音频TS数据包2,视频TS数据包4、视频TS数据包5、视频TS数据包6,音频TS数据包3、音频TS数据包4、音频TS数据包5,视频TS数据包7、视频TS数据包8、视频TS数据包9,音频TS数据包6、音频TS数据包7。
另一种交替输出的方式为,先输出音频TS数据包组1,其次是视频数据包组1,音频TS数据包组2,视频数据包组2,音频TS数据包组3,视频数据包组3。
按照上述TS数据包组的输出顺序输出TS数据包时,TS数据包的输出顺序为:音频TS数据包1、音频TS数据包2,视频TS数据包1、视频TS数据包2、视频TS数据包3,音频TS数据包3、音频TS数据包4、音频TS数据包5,视频TS数据包4、视频TS数据包5、视频TS数据包6,音频TS数据包6、音频TS数据包7,视频TS数据包7、视频TS数据包8、视频TS数据包9。
输出方式二、在对音频TS数据包以及视频TS数据包进行多轮分组的过程中,边分组,边根据音频帧的顺序以及视频帧的顺序,交替输出音频TS数据包组和视频TS数据包组。
在一种可选的实施方式中,以TS数据包组为单位输出音频TS数据包和视频TS数据包,包括:
在对音频TS数据包进行多轮分组的过程中,每对音频TS数据包进行至少一轮分组后,输出分组得到的音频TS数据包组;以及
在对视频TS数据包进行多轮分组的过程中,每对视频TS数据包进行至少一轮分组后,输出分组得到的视频TS数据包组,且一组音频TS数据包组和一组视频TS数据包组交替输出。
例如,按照上述实施例中所列举的对音频TS数据包1至7进行3轮分组以及对视频TS数据包1至9进行3轮分组为例,假设每对音频TS数据包进行一轮分组后,输出该轮分组得到的音频TS数据包组,且每对视频TS数据包进行一轮分组后,输出该轮分组得到的视频TS数据包组。
一种交替输出方式为:先对音频TS数据包进行第一轮分组后,输出音频TS数据包1、音频TS数据包2;之后对视频TS数据包进行第一轮分组后,输出视频TS数据包1、视频TS数据包2、视频TS数据包3;再对音频数据包进行第二轮分组后,输出音频TS数据包3、音频TS数据包4、音频TS数据包5,之后对视频TS数据包进行第二轮分组后,输出视频TS数据包4、视频TS数据包5、视频TS数据包6;最后对音频TS数据包进行第三轮分组后,输出音频TS数据包6、音频TS数据包7,之后对视频TS数据包进行第三轮分组后,输出视频TS数据包7、视频TS数据包8、视频TS数据包9。
另一种交替输出方式为:先对视频TS数据包进行第一轮分组后,输出视频TS数据包1、视频TS数据包2、视频TS数据包3;之后对音频TS数据包进行第一轮分组后,输出音频TS数据包1、音频TS数据包2;再对视频TS数据包进行第二轮分组后,输出视频TS数据包4、视频TS数据包5、视频TS数据包6,之后对音频数据包进行第二轮分组后,输出音频TS数据包3、音频TS数据包4、音频TS数据包5;最后对视频TS数据包进行第三轮分组后,输出视频TS数据包7、视频TS数据包8、视频TS数据包9,之后对音频TS数据包进行第三轮分组后,输出音频TS数据包6、音频TS数据包7。
其中,在对音频TS数据包进行分组以及对视频TS数据包进行分组时,也可以这样:先对音频TS数据包进行第一轮分组,以及对视频TS数据包进行第一轮分组,在对音频TS数据包和视频TS数据包完成第一轮分组后,输出音频TS数据包1、音频TS数据包2,视频TS数据包1、视频TS数据包2、视频TS数据包3(也可依次输出视频TS数据包1、视频TS数据包2、视频TS数据包3,音频TS数据包1、音频TS数据包2);接下来再对音频TS数据包进行第二轮分组,以及对视频TS数据包进行第二轮分组,输出分组得到的TS数据包组;最后对音频TS数据包进行第三轮分组,以及对视频TS数据包进行第三轮分组,输出分组得到的TS数据包组。
需要说明的是,上述实施例中所列举的音频TS数据包组与视频TS数据包组交替输出方式只是举例说明,任何一种满足上述条件的音频TS数据包组与视频TS数据包组交替输出方式都是用于本公开实施例。
参阅图7所示,为本公开实施例提供的一种音频TS数据包组与视频TS数据包组交替输出的示意图,是通过将图3所示的音视频数据按照本公开实施例中所列举的音视频数据编码方法编码后得到的一种具体实施方式。假设在第一个预设单位时间内缓存了3帧视频帧ES数据和3帧音频帧ES数据,即Video-0至Video-2和Audio-0至Audio-2。其中,Video-0至Video-2的ES数据封装为了Video-PES-0至Video-PES-12这3个视频PES数据包,每个视频PES数据包又拆分为了3个视频TS数据包,划分为了3组视频TS数据包组;Audio-0至Audio-2的ES数据封装为了Audio-PES-0共1个音频PES数据包,该音频PES数据包又拆分为了7个音频TS数据包,按帧划分为了3组音频TS数据包组。
在将第一个预设单位时间内的ES数据得到的6个TS数据包组按照图7所示方式输出后,在第二个预设单位时间内又缓存了3帧视频帧ES数据和3帧音频帧ES数据,即Video-3至Video-5和Audio-3至Audio-5。其中,Video-3至Video-5的ES数据封装为了Video-PES-3至Video-PES-5这3个视频PES数据包,每个视频PES数据包又拆分为了3个视频TS数据包,划分为了3组视频TS数据包组;Audio-3至Audio-5的ES数据封装为了Audio-PES-1共1个音频PES数据包,该音频PES数据包又拆分为了7个音频TS数据包,按帧划分为了3组音频TS数据包组,按照图7方式输出后,则实现了12个TS数据包组按照Vedio-0、Audio-0、Vedio-1、Audio-1、Vedio-2、Audio-2、Vedio-3、Audio-3、Vedio-4、Audio-4、Vedio-5、Audio-5的输出顺序输出。如图8所示,当应用于在线点播场景时,则只需传输Video-0和Audio-0就能够开始播放,可以有效减小在线播放的延迟和卡顿。
需要说明的是,在本公开实施例中,除了DTS,其它可以用于区分音频帧或视频帧的参数也可以用于确定输出顺序,例如帧号,第N帧、第N+1帧等。
图9是根据一示例性实施例示出的一种按照边分组变输出的方式进行音视频数据编码的完整方法流程图,具体包括以下步骤:
S91:在预设单位时间cache_duration内,缓存输入MPEG-TS编码器的音频帧ES数据以及视频帧ES数据;
S92:判断缓存数据的时间长度是否超出cache_duration,如果是,则执行S93,否则,返回S91;
S93:立即执行缓存编码刷新操作;
S94:将该缓存单位时间内缓存的视频帧ES数据以帧为单位进行视频PES数据包的封装,然后再将视频PES数据包拆分成连续的视频TS数据;
S95:将该缓存单位时间内缓存的所有音频帧ES数据合并封装成一个音频PES数据包,然后再将此音频PES数据包拆分成连续的音频TS数据包,并在拆分成音频TS数据包的过程中记录每帧音频ES数据开头和结尾所在音频TS数据包;
S96:将S94和S95中编码好的TS数据包按如下方式输出直到没有未输出的数据:在未输出的TS数据包中找到一组连续的TS数据包,该组连续的TS数据包包含了DTS最小的音频帧所有未输出的数据或所有DTS最小的视频帧所有未输出的数据,根据之前记录的ES数据开头和结尾所在的TS数据包,将该组连续的TS数据包批量输出。
可选的,也可在S96中,将所有的TS数据包都分组后,再根据各TS数据包对应的DTS从小到大的顺序输出,这样则可在所有的TS数据包多轮分组完成后输出。
图10是根据一示例性实施例示出的一种音视频数据编码装置框图。参照图10,该音视频数据编码装置1000包括封装单元1001,拆分单元1002和输出单元1003:
封装单元1001,被配置为执行将缓存的音频帧ES数据封装为至少一个音频PES数据包,以及将缓存的视频帧ES数据封装为至少一个视频PES数据包,其中音频帧和视频帧属于同一视频文件;
拆分单元1002,被配置为执行将音频PES数据包拆分为至少两个连续的音频TS数据包,以及将视频PES数据包拆分为至少两个连续的视频TS数据包;
输出单元1003,被配置为执行根据音频帧的顺序输出包含至少一个音频TS数据包的音频TS数据包组,以及根据视频帧的顺序输出包含至少一个视频TS数据包的视频TS数据包组;
其中,音频TS数据包组和视频TS数据包组的输出顺序中,属于同一音频PES数据包的音频TS数据包组之间有至少一个视频TS数据包组,属于不同视频PES数据包的视频TS数据包组之间有至少一个音频TS数据包组。
可选的,同一音频PES数据包拆分得到的音频TS数据包划分为至少两个音频TS数据包组;和/或
同一视频PES数据包拆分得到的视频TS数据包划分为一个视频TS数据包组。
可选的,输出单元1003具体被配置为执行:
对音频TS数据包进行多轮分组,每轮分组为:从当前未分组的音频TS数据包中选取对应的DTS最小的音频TS数据包划分为一组,其中音频TS数据包对应的DTS为音频TS数据包包含的音频帧ES数据对应的各个音频帧DTS中最小的音频帧DTS。
可选的,输出单元1003具体被配置为执行:
对视频TS数据包进行多轮分组,每轮分组为:从当前未分组的视频TS数据包中选取对应的DTS最小的视频TS数据包划分为一组,其中视频TS数据包对应的DTS为视频TS数据包包含的视频帧ES数据对应的各个视频帧DTS中最小的视频帧DTS。
可选的,输出单元1003具体被配置为执行:
在对音频TS数据包和视频TS数据包进行多轮分组的过程结束后,确定音频TS数据包组和视频TS数据包组的输出顺序,并根据确定的输出顺序输出音频TS数据包组和视频TS数据包组;
其中,输出顺序为:按照音频TS数据包组中音频TS数据包对应的DTS从小到大输出音频TS数据包组,以及按照视频TS数据包组中视频TS数据包对应的DTS从小到大输出视频TS数据包组,且一组音频TS数据包组和一组视频TS数据包组交替输出。
可选的,输出单元1003具体被配置为执行:
在对音频TS数据包进行多轮分组的过程中,每对音频TS数据包进行至少一轮分组后,输出分组得到的音频TS数据包组;以及
在对视频TS数据包进行多轮分组的过程中,每对视频TS数据包进行至少一轮分组后,输出分组得到的视频TS数据包组,且一组音频TS数据包组和一组视频TS数据包组交替输出。
可选的,装置还包括:
缓存单元1004,被配置为执行在封装单元将缓存的音频帧基本流ES数据封装为至少一个音频打包基本流PES数据包,以及将缓存的视频帧ES数据封装为至少一个视频PES数据包之前,缓存在预设单位时间内输入音视频编码器的音频帧ES数据以及视频帧ES数据。
关于上述实施例中的装置,其中各个单元执行请求的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图11是根据一示例性实施例示出的一种电子设备1100的框图,该装置包括:
处理器1110;
用于存储所述处理器1110可执行指令的存储器1120;
其中,所述处理器1110被配置为执行所述指令,以实现本公开实施例中的任一所述的音视频数据编码方法的步骤。
在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器1120,上述指令可由电子设备1100的处理器1110执行以完成上述方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
下面参照图12来描述根据本公开的这种实施方式的计算装置120。图12的计算装置120仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图12,计算装置120的组件可以包括但不限于:至少一个处理单元121、上述至少一个存储单元122、连接不同系统组件(包括存储单元122和处理单元121)的总线123。
总线123表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元122可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1221和/或高速缓存存储单元1222,还可以进一步包括只读存储器(ROM)1223。
存储单元122还可以包括具有一组(至少一个)程序模块1224的程序/实用工具1225,这样的程序模块1224包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算装置120也可以与一个或多个外部设备124(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与计算装置120交互的设备通信,和/或与使得该计算装置120能与一个或多个其它计算装置进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口125进行。并且,计算装置120还可以通过网络适配器126与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器126通过总线123与用于计算装置120的其它模块通信。应当理解,尽管图中未示出,可以结合计算装置120使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
本公开实施例还提供一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行实现本公开实施例上述任意一项所述的音视频数据编码方法或任意一项所述的音视频数据编码方法任一可能涉及的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (14)

1.一种音视频数据编码方法,其特征在于,应用于音视频编码器,包括:
将缓存的音频帧基本流ES数据封装为至少一个音频打包基本流PES数据包,以及将缓存的视频帧ES数据封装为至少一个视频PES数据包,其中所述音频帧和所述视频帧属于同一视频文件,一个音频PES数据包是基于一个或多个音频帧ES数据封装得到的;
将所述音频PES数据包拆分为至少两个连续的音频传输流TS数据包,以及将所述视频PES数据包拆分为至少两个连续的视频TS数据包;
根据音频帧的顺序输出包含至少一个音频TS数据包的音频TS数据包组,以及根据视频帧的顺序输出包含至少一个视频TS数据包的视频TS数据包组;
其中,所述音频TS数据包组和视频TS数据包组的输出顺序中,属于同一音频PES数据包的音频TS数据包组之间有至少一个所述视频TS数据包组,属于不同视频PES数据包的视频TS数据包组之间有至少一个所述音频TS数据包组,且一组音频TS数据包组和一组视频TS数据包组交替输出,其中,同一视频PES数据包拆分得到的视频TS数据包划分为一个视频TS数据包组,同一音频PES数据包拆分得到的音频TS数据包划分为至少两个音频TS数据包组。
2.如权利要求1所述的方法,其特征在于,将所述同一音频PES数据包拆分得到的音频TS数据包划分为至少两个音频TS数据包组,包括:
对音频TS数据包进行多轮分组,每轮分组为:从当前未分组的所述音频TS数据包中选取对应的解码时间戳DTS最小的所述音频TS数据包划分为一组,其中所述音频TS数据包对应的DTS为所述音频TS数据包包含的音频帧ES数据对应的各个音频帧DTS中最小的音频DTS。
3.如权利要求1所述的方法,其特征在于,将所述同一视频PES数据包拆分得到的视频TS数据包划分为一个视频TS数据包组,包括:
对视频TS数据包进行多轮分组,每轮分组为:从当前未分组的所述视频TS数据包中选取对应的DTS最小的所述视频TS数据包划分为一组,其中所述视频TS数据包对应的DTS为所述视频TS数据包包含的视频帧ES数据对应的各个视频帧DTS中最小的视频DTS。
4.如权利要求2或3所述的方法,其特征在于,所述根据音频帧的顺序输出包含至少一个音频TS数据包的音频TS数据包组,以及根据视频帧的顺序输出包含至少一个视频TS数据包的视频TS数据包组,包括:
在对所述音频TS数据包和视频TS数据包进行多轮分组的过程结束后,确定音频TS数据包组和视频TS数据包组的输出顺序,并根据确定的输出顺序输出所述音频TS数据包组和所述视频TS数据包组;
其中,所述输出顺序为:按照音频TS数据包组中音频TS数据包对应的DTS从小到大输出音频TS数据包组,以及按照视频TS数据包组中视频TS数据包对应的DTS从小到大输出视频TS数据包组。
5.如权利要求2或3所述的方法,其特征在于,所述根据音频帧的顺序输出包含至少一个音频TS数据包的音频TS数据包组,以及根据视频帧的顺序输出包含至少一个视频TS数据包的视频TS数据包组,包括:
在对所述音频TS数据包进行多轮分组的过程中,每对所述音频TS数据包进行至少一轮分组后,输出分组得到的音频TS数据包组;以及
在对所述视频TS数据包进行多轮分组的过程中,每对所述视频TS数据包进行至少一轮分组后,输出分组得到的视频TS数据包组。
6.如权利要求1~3任一所述的方法,其特征在于,在所述将缓存的音频帧基本流ES数据封装为至少一个音频打包基本流PES数据包,以及将缓存的视频帧ES数据封装为至少一个视频PES数据包之前,还包括:
缓存在预设单位时间内输入所述音视频编码器的音频帧ES数据以及视频帧ES数据。
7.一种音视频数据编码装置,其特征在于,包括:
封装单元,被配置为执行将缓存的音频帧ES数据封装为至少一个音频PES数据包,以及将缓存的视频帧ES数据封装为至少一个视频PES数据包,其中所述音频帧和所述视频帧属于同一视频文件,一个音频PES数据包是基于一个或多个音频帧ES数据封装得到的;
拆分单元,被配置为执行将所述音频PES数据包拆分为至少两个连续的音频TS数据包,以及将所述视频PES数据包拆分为至少两个连续的视频TS数据包;
输出单元,被配置为执行根据音频帧的顺序输出包含至少一个音频TS数据包的音频TS数据包组,以及根据视频帧的顺序输出包含至少一个视频TS数据包的视频TS数据包组;
其中,所述音频TS数据包组和视频TS数据包组的输出顺序中,属于同一音频PES数据包的音频TS数据包组之间有至少一个所述视频TS数据包组,属于不同视频PES数据包的视频TS数据包组之间有至少一个所述音频TS数据包组,且一组音频TS数据包组和一组视频TS数据包组交替输出,其中,同一视频PES数据包拆分得到的视频TS数据包划分为一个视频TS数据包组,同一音频PES数据包拆分得到的音频TS数据包划分为至少两个音频TS数据包组。
8.如权利要求7所述的装置,其特征在于,所述输出单元具体被配置为执行:
对音频TS数据包进行多轮分组,每轮分组为:从当前未分组的所述音频TS数据包中选取对应的DTS最小的所述音频TS数据包划分为一组,其中所述音频TS数据包对应的DTS为所述音频TS数据包包含的音频帧ES数据对应的各个音频帧DTS中最小的音频帧DTS。
9.如权利要求7所述的装置,其特征在于,所述输出单元具体被配置为执行:
对视频TS数据包进行多轮分组,每轮分组为:从当前未分组的所述视频TS数据包中选取对应的DTS最小的所述视频TS数据包划分为一组,其中所述视频TS数据包对应的DTS为所述视频TS数据包包含的视频帧ES数据对应的各个视频帧DTS中最小的视频帧DTS。
10.如权利要求8或9所述的装置,其特征在于,所述输出单元具体被配置为执行:
在对所述音频TS数据包和视频TS数据包进行多轮分组的过程结束后,确定音频TS数据包组和视频TS数据包组的输出顺序,并根据确定的输出顺序输出所述音频TS数据包组和所述视频TS数据包组;
其中,所述输出顺序为:按照音频TS数据包组中音频TS数据包对应的DTS从小到大输出音频TS数据包组,以及按照视频TS数据包组中视频TS数据包对应的DTS从小到大输出视频TS数据包组,且一组音频TS数据包组和一组视频TS数据包组交替输出。
11.如权利要求8或9所述的装置,其特征在于,所述输出单元具体被配置为执行:
在对所述音频TS数据包进行多轮分组的过程中,每对所述音频TS数据包进行至少一轮分组后,输出分组得到的音频TS数据包组;以及
在对所述视频TS数据包进行多轮分组的过程中,每对所述视频TS数据包进行至少一轮分组后,输出分组得到的视频TS数据包组,且一组音频TS数据包组和一组视频TS数据包组交替输出。
12.如权利要求7~9任一所述的装置,其特征在于,所述装置还包括:
缓存单元,被配置为执行在所述封装单元将缓存的音频帧基本流ES数据封装为至少一个音频打包基本流PES数据包,以及将缓存的视频帧ES数据封装为至少一个视频PES数据包之前,缓存在预设单位时间内输入音视频编码器的音频帧ES数据以及视频帧ES数据。
13.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至权利要求6中任一项所述的音视频数据编码方法。
14.一种存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至权利要求6中任一项所述的音视频数据编码方法。
CN202010054626.6A 2020-01-17 2020-01-17 一种音视频数据编码方法、装置、电子设备及存储介质 Active CN113141521B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010054626.6A CN113141521B (zh) 2020-01-17 2020-01-17 一种音视频数据编码方法、装置、电子设备及存储介质
PCT/CN2021/072152 WO2021143844A1 (zh) 2020-01-17 2021-01-15 音视频数据编码方法及电子设备
US17/843,861 US20220329841A1 (en) 2020-01-17 2022-06-17 Method for encoding audio and video data, and electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010054626.6A CN113141521B (zh) 2020-01-17 2020-01-17 一种音视频数据编码方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113141521A CN113141521A (zh) 2021-07-20
CN113141521B true CN113141521B (zh) 2022-08-23

Family

ID=76808525

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010054626.6A Active CN113141521B (zh) 2020-01-17 2020-01-17 一种音视频数据编码方法、装置、电子设备及存储介质

Country Status (3)

Country Link
US (1) US20220329841A1 (zh)
CN (1) CN113141521B (zh)
WO (1) WO2021143844A1 (zh)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5096917B2 (ja) * 2005-04-20 2012-12-12 パナソニック株式会社 ストリームデータ記録装置、ストリームデータ再生装置、集積回路、ストリームデータ記録方法、及びストリームデータ再生方法
CN100496129C (zh) * 2007-06-05 2009-06-03 南京大学 基于h.264多路视频转码复用的方法
KR101849749B1 (ko) * 2011-02-10 2018-05-30 주식회사 미디어엑셀코리아 트랜스코딩 시스템에서의 오디오 및 비디오 동기화 방법
CN102724559A (zh) * 2012-06-13 2012-10-10 天脉聚源(北京)传媒科技有限公司 一种音视频编码同步方法和系统
WO2014129803A1 (en) * 2013-02-21 2014-08-28 Lg Electronics Inc. Video display apparatus and operating method thereof
US9819604B2 (en) * 2013-07-31 2017-11-14 Nvidia Corporation Real time network adaptive low latency transport stream muxing of audio/video streams for miracast
CN105491401B (zh) * 2015-12-11 2018-08-07 北京中环星技术有限公司 Rtsp/rtp音视频流转换为ts流并通过asi接口输出的方法和装置
CN107770600A (zh) * 2017-11-07 2018-03-06 深圳创维-Rgb电子有限公司 流媒体数据的传输方法、装置、设备和存储介质

Also Published As

Publication number Publication date
US20220329841A1 (en) 2022-10-13
WO2021143844A1 (zh) 2021-07-22
CN113141521A (zh) 2021-07-20

Similar Documents

Publication Publication Date Title
US9900363B2 (en) Network streaming of coded video data
JP4538908B2 (ja) データ変換装置及び方法
CA2412722C (en) Video error resilience
US9020042B2 (en) Audio/video speedup system and method in a server-client streaming architecture
CN103024603B (zh) 一种用于解决播放网络视频时短时停顿的装置及方法
JP2005176352A (ja) 移動通信端末機の動画像ストリーミングサービスのための無線動画像ストリーミングファイル、サービス方法及びシステム
JP2000115772A (ja) マルチメディアの再生システムにおけるディジタルのビデオおよびオ―ディオの再生の適応型同期化のための方法および装置
CN102598688A (zh) 流式传输经编码视频数据
CN102724551A (zh) 一种视频编码系统和方法
JP2003114845A (ja) メディア変換方法およびメディア変換装置
CN105992049A (zh) 一种rtmp直播回看方法及系统
CN102254560A (zh) 一种移动数字电视录像中的音频处理方法
KR100894235B1 (ko) 컨텐츠의 배포 방법, 인코드 방법 및 수신 재생 방법과 장치 그리고 프로그램
CN113141521B (zh) 一种音视频数据编码方法、装置、电子设备及存储介质
CN105657448B (zh) 一种编码视频流的转发方法、装置及系统
JPH1118051A (ja) Iフレーム抽出方法
JP5854208B2 (ja) 多段高速再生のための映像コンテンツ生成方法
CN113409801A (zh) 用于实时音频流播放的噪音处理方法、系统、介质和装置
CN113207040A (zh) 一种视频远程快速回放的数据处理方法、装置及系统
JP6753097B2 (ja) 符号化システム、符号化装置、再生装置及び符号化方法
JP3543716B2 (ja) ストリーム生成方法及び装置
KR0147941B1 (ko) 고속재생을 위한 부호화시스템
CN117097907A (zh) 音视频的转码装置、方法、设备、介质及产品
CN114125550A (zh) 一种视频处理方法、装置、设备及可读存储介质
CN1532720A (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