CN101984672B - 多线程的音视频同步控制方法及装置 - Google Patents
多线程的音视频同步控制方法及装置 Download PDFInfo
- Publication number
- CN101984672B CN101984672B CN 201010530498 CN201010530498A CN101984672B CN 101984672 B CN101984672 B CN 101984672B CN 201010530498 CN201010530498 CN 201010530498 CN 201010530498 A CN201010530498 A CN 201010530498A CN 101984672 B CN101984672 B CN 101984672B
- Authority
- CN
- China
- Prior art keywords
- video
- audio
- data
- thread
- frequency
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明公开了一种多线程的音视频同步控制方法及装置,所述方法包括:将所述传输流或节目流拆分成音频基本流、视频基本流、以及各自时间信息;解码并得到待输出的音频数据和图像数据;根据所述时间信息分别选择符合本地系统时钟要求的待输出音频数据和图像数据进行输出,并选择时间信息与本地系统时钟值最接近的音频数据和图像数据,计算所述音频数据对应时间和图像数据对应时间的差值,在所述视频数据对应时间大于音频数据对应时间时,重复输出所述视频数据进行显示,否则跳过该视频数据对视频播放进行跳帧处理,使音视频同步输出。本发明不需要补充大量的视频编码数据和音频图像数据,从而很大程度地降低对系统资源的使用。
Description
技术领域
本发明涉及一种数字音视频技术领域,尤其涉及一种多线程的音视频同步控制方法及装置。
背景技术
目前流行的视频编解码标准,例如MPEG-1、MPEG-2、MPEG-4、H.26x等都是采用传统的混合编码结构,该结构采用时间和空间的预测、变换、量化和熵编码方法,将视频帧编码为不同的帧类型:帧内预测帧(I帧)、帧间预测帧(P帧)和双向预测帧(B帧),这必将导致视频解码速度因视频内容而有所不同,而视频的播放帧率是固定的,从而导致了视频解码速度与显示速度不匹配等问题,而且音频和视频是分开编码和传输,而在播放时要求同步输出,如果不采用比较好的控制方法,很容易导致音视频输出不同步的现象。
解决这个问题的方法,现有技术一般是采用较大的缓冲区来缓冲编码数据和编码后的图像和音频帧。由于图像内容的不确定性又给缓冲区大小的确定带来了困难,缓冲区太小则数据溢出,缓冲区太大又造成内存空间的浪费。
另一种现有技术可参阅2007年5月30日公开的中国发明专利第200610157163.6号所揭露的一种移动多媒体广播视音频同步播放的方法,所述方法在子帧头中设一个起始播放时间字段,用来表示该频道数据的起始播放时间;将视频、音频数据分别分割为多个视频、音频单元,根据每个视频、音频单元的起始播放时间与该整个频道数据的起始播放时间的时间差,在每个视频、音频段头中为每个视频、音频单元设置一个相对播放时间字段,来记录每个视频、音频单元的播放相对时间差;每个视频、音频单元的实际播放时间是起始播放时间与该视频、音频单元的相对播放时间的和。终端接收到数据后计算出每个视音频单元的实际播放时间进行播放,就能实现视频音频的同步播放。但这种方法并没有考虑图像和声音内容的不确定性,而且分割视频和音频也带来困难和麻烦。
发明内容
本发明主要解决的技术问题是提供一种资源占用少并且可实现音视频同步播放的多线程的音视频同步控制方法及装置。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种多线程的音视频同步控制方法,包括:将所述传输流或节目流拆分成音频基本流、视频基本流、以及分别对应所述音频基本流、视频基本流中数据元素的各自时间信息;分别解码所述音频基本流和视频基本流中的比特流,得到待输出的音频数据和图像数据;解码后根据所述时间信息分别选择符合本地系统时钟要求的待输出音频数据和图像数据进行输出,并选择时间信息与本地系统时钟值最接近的音频数据和图像数据,计算选择得到的音频数据对应时间和选择得到的图像数据对应时间的差值,在所述选择得到的视频数据对应时间大于选择得到的音频数据对应时间时,重复输出所述视频数据进行显示,在所述选择得到的视频数据对应时间小于选择得到的音频数据对应时间时,跳过该视频数据对视频播放进行跳帧处理,使音视频同步输出。
其中,将所述传输流或节目流拆分的步骤之前,包括:创建解复用线程、音频解码线程、视频解码线程、音频同步输出线程和视频同步输出线程,所述解复用线程用于将所述传输流或节目流拆分;将所述传输流或节目流拆分的步骤之后,包括:将音频基本流插入音频基本流队列尾部,将视频基本流插入视频基本流队列尾部,激活解码线程;若音频基本流队列或视频基本流队列溢出则解复用线程挂起等待;在将音频基本流插入音频基本流队列尾部、将视频基本流插入视频基本流队列尾部并激活解码线程之后,包括:启动音频解码线程和视频解码线程,进行所述分别解码音频基本流队列和视频基本流队列中的比特流的步骤,并将解码后的音频数据和图像数据和各自相应时间信息分别插入音频输出队列和视频输出队列;在将解码后的音频数据和图像数据和各自相应时间信息分别插入音频输出队列和视频输出队列之后,包括:根据解码后的时间戳与本地系统时钟的差值,启动音频同步输出线程和视频同步输出线程。
其中,所述时间信息包括时间戳。
其中,根据所述时间信息分别选择符合本地系统时钟要求的待输出音频数据和图像数据进行输出的步骤包括:计算当前时刻的本地系统时钟,查找音频输出队列中时间戳值与本地系统时钟值最接近的队列元素,作为符合本地系统时钟要求的待输出音频数据;以及计算当前时刻的本地系统时钟,查找视频输出队列中时间戳值与本地系统时钟值最接近的队列元素,作为符合本地系统时钟要求的待输出图像数据。
其中,所述激活解码线程通过对信号量进行申请资源的P操作完成。
其中,所述解复用线程与音频解码线程、视频解码线程间的同步处理采用信号量机制完成,通过对信号的申请资源/释放资源的PV操作协调解复用线程与音频解码线程、视频解码线程间的同步。
其中,采用所述信号量机制完成解复用线程与音频解码线程、视频解码线程间的同步处理包括:音频解码:(a)音频解码线程阻塞于音频信号量,在解复用线程激活信号量后开始解码;(b)对音频基本流队列头的音频基本流进行解码;(c)将解码后一帧音频数据插入音频输出队列尾部,并激活音频输出条件变量;(d)将音频基本流队列中的时间戳值保存在音频输出队列中;所述音频输出队列通过该队列的长度判断其是否溢出,若音频输出队列溢出则音频解码线程挂起等待;视频解码:(a)视频解码线程阻塞于音频信号量,在解复用线程激活信号量后开始解码;(b)对视频基本流队列头的视频基本流进行解码;(c)将解码后的一帧图像数据插入视频输出队列尾部,并激活视频输出条件变量;(d)将视频基本流队列中的时间戳值保存在视频输出队列中;所述视频输出队列通过该队列的长度判断其是否溢出,若视频输出队列溢出则视频解码线程挂起等待。
为解决上述技术问题,本发明采用的另一个技术方案是:提供一种多线程的音视频同步控制装置,包括:解复用模块,用于将所述传输流或节目流拆分成音频基本流、视频基本流、以及分别对应所述音频基本流、视频基本流中数据元素的各自时间信息;音频解码器,用于解码所述音频基本流中的比特流,得到待输出的音频数据;视频解码器,用于解码所述视频基本流中的比特流,得到待输出的图像数据;输出模块,用于解码后根据所述时间信息分别选择符合本地系统时钟要求的待输出音频数据和图像数据进行输出;同步模块,用于选择时间信息与本地系统时钟值最接近的音频数据和图像数据,计算选择得到的音频数据对应时间和选择得到的图像数据对应时间的差值,在所述选择得到的视频数据对应时间大于选择得到的音频数据对应时间时,控制所述输出模块重复输出所述视频数据进行显示,在所述选择得到的视频数据对应时间小于选择得到的音频数据对应时间时,控制所述输出模块跳过该视频数据对视频播放进行跳帧处理,使音视频同步输出。
其中,包括用于保存音频基本流的音频基本流队列、用于保存视频基本流的视频基本流队列、用于保存解码后的音频数据的音频输出队列、用于保存解码后的视频数据的视频输出队列。
其中,所述解复用模块具体用于对系统层的传输流或节目流进行解复用,将其拆分成音频基本流和视频基本流后分别插入音频基本流队列和视频基本流队列,并获取相应的时间戳;所述音频解码器和视频解码器具体用于分别对音频基本流队列和视频基本流队列中的数据进行解码,将解码后的音频数据和视频数据分别插入音频输出队列和视频输出队列;所述解码后的音频数据为脉冲调制编码数据。
本发明的有益效果是:区别于现有技术为实现音视频同步播放而需要补充大量视频编码数据和音频图像数据而很大程度地降低对系统资源的使用效率的情况,本发明所述方法利用系统层定义的时间信息和本地系统时间STC(System Time clock),使音视频都对照上述两个时间的差值来控制输出,从而使得音视频在同一的本地系统时钟的参考下按照音视频本身时间信息严格输出,在遇到播放内容量波动情况下,分别采用重复播放、跳帧两种手段实现严格的音视频同步输出,从而实现音视频同步播放,不仅有效地实现音视频的同步输出,而且不需要补充大量的视频编码数据和音频图像数据,从而很大程度地降低对系统资源的使用,适合于各种应用平台,比如适合于嵌入式平台;此外软件架构清晰,实现复杂度低。
附图说明
图1是本发明多线程的音视频同步控制方法的流程图;
图2是本发明多线程的音视频同步控制方法的多线程控制流程图;
图3是本发明多线程的音视频同步控制装置的系统框图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明多线程的音视频同步控制方法一实施例,是基于嵌入式Linux操作系统的平台开发与实现的,由操作系统对音视频传输流或节目流进行多线程的并行处理,当然本实施例仅列举了Linux操作系统进行说明,在其他实施例中,其他类型的操作系统也可适用。具体实施过程如图1所示,包括下述步骤:
步骤101:将所述传输流或节目流拆分成音频基本流、视频基本流、以及分别对应所述音频基本流、视频基本流中数据元素的各自时间信息;
步骤102:分别解码所述音频基本流和视频基本流中的比特流,得到待输出的音频数据和图像数据;
步骤103:解码后根据所述时间信息分别选择符合本地系统时钟要求的待输出音频数据和图像数据进行输出,并选择时间信息与本地系统时钟值最接近的音频数据和图像数据,计算选择得到的音频数据对应时间和选择得到的图像数据对应时间的差值,在所述选择得到的视频数据对应时间大于选择得到的音频数据对应时间时,重复输出所述视频数据进行显示,在所述选择得到的视频数据对应时间小于选择得到的音频数据对应时间时,跳过该视频数据对视频播放进行跳帧处理,使音视频同步输出。
以上实施例,是利用系统层定义的时间信息和本地系统时间,使音视频都对照上述两个时间的差值来控制输出,从而使得音视频在同一的本地系统时钟的参考下按照音视频本身时间信息严格输出,在遇到播放内容量波动情况下,分别采用以下两种技术手段实现严格的音视频同步输出:
1)在所述选择得到的视频数据对应时间大于选择得到的音频数据对应时间时,也即视频数据快于音频数据时,进行视频的重复播放处理,使视频数据能“停下来等”音频数据的播放;
2)在所述选择得到的视频数据对应时间小于选择得到的音频数据对应时间时,也即视频数据慢于音频数据时,对视频进行跳帧处理,使视频数据能“赶上”音频数据的播放。
通过以上技术手段,实现音视频同步播放,不仅有效地实现音视频的同步输出,而且不需要补充大量的视频编码数据和音频图像数据,从而很大程度地降低对系统资源的使用,适合于各种应用平台,比如适合于嵌入式平台;此外软件架构清晰,实现复杂度低。
在一个实施例中,是具体应用电子运算设备中,即在将所述传输流或节目流拆分的步骤之前,包括:创建解复用线程、音频解码线程、视频解码线程、音频同步输出线程和视频同步输出线程,所述解复用线程用于将所述传输流或节目流拆分;
将所述传输流或节目流拆分的步骤之后,包括:将音频基本流插入音频基本流队列尾部,将视频基本流插入视频基本流队列尾部,激活解码线程;若音频基本流队列或视频基本流队列溢出则解复用线程挂起等待;
在将音频基本流插入音频基本流队列尾部、将视频基本流插入视频基本流队列尾部并激活解码线程之后,包括:启动音频解码线程和视频解码线程,进行所述分别解码音频基本流队列和视频基本流队列中的比特流的步骤,并将解码后的音频数据和图像数据和各自相应时间信息分别插入音频输出队列和视频输出队列;
在将解码后的音频数据和图像数据和各自相应时间信息分别插入音频输出队列和视频输出队列之后,包括:根据解码后的时间戳与本地系统时钟的差值,启动音频同步输出线程和视频同步输出线程。
当然,实现本发明的方式并不限于创建多个线程和排队队列的方式。
在一实施例中,所述时间信息包括时间戳。而根据所述时间信息分别选择符合本地系统时钟要求的待输出音频数据和图像数据进行输出的步骤包括:
1)计算当前时刻的本地系统时钟,查找音频输出队列中时间戳值与本地系统时钟值最接近的队列元素,作为符合本地系统时钟要求的待输出音频数据;以及
2)计算当前时刻的本地系统时钟,查找视频输出队列中时间戳值与本地系统时钟值最接近的队列元素,作为符合本地系统时钟要求的待输出图像数据。
当然如果采用延时播放或提前播放形式,则查找音频输出队列中时间戳值与本地系统时钟值相隔预定时间的队列元素,并非最接近的队列元素。在其他实施例中不限于采用时间戳来进行时间比对,可以是各种形式的时间信息或参数。
在一个实施例中,所述激活解码线程是通过对信号量进行申请资源的P操作完成。所述解复用线程与音频解码线程、视频解码线程间的同步处理采用信号量机制完成,通过对信号的申请资源/释放资源的PV操作协调解复用线程与音频解码线程、视频解码线程间的同步。
以下结合图1和图2,详细介绍本发明的其中一个具体实施例:
步骤1、创建五个线程,分别是解复用线程、音频解码线程、视频解码线程、音频同步输出线程和视频同步输出线程。
步骤2、启动解复用线程完成对系统层的传输流或节目流的解复用处理,将传输流或节目流拆分成音频基本流、视频基本流以及时间信息;然后将音频基本流插入音频基本流队列尾部,将视频基本流插入视频基本流队列尾部,激活解码线程;若音频基本流队列或视频基本流队列溢出则解复用线程挂起等待。
对于传输流,本步骤所述的音频基本流和视频基本流是通过PID值(进程标识符)区分的,首先解析PID值为0x00的数据包,从该数据包中的节目关联表PAT获得各个节目的节目映射表PMT的PID值,解码某个节目则解析该节目对应的节目映射表,从而获得该节目中音频基本流的PID值以及视频基本流的PID值,然后接收相应PID值的数据包,将数据重组成PES(Packetised Elementary Streams,带有包头的基本码流)分组后插入基本流队列。对于节目流,则是通过各个PES数据分组中的StreamID(流标识符)标志位区分音频和视频基本流。
本步骤所述的时间信息是指PES分组中的时间戳PTS与节目参考时钟PCR,将解析得到的PTS值保存在相应的队列中。解复用线程在将一整个PES分组的基本流插入基本流队列后,对信号量进行P操作(即对信号量申请资源)来激活解码线程;所述音频基本流队列或视频基本流队列通过该队列的长度判断其是否溢出,若溢出则解复用线程挂起等待。
步骤3、启动音频解码线程和视频解码线程分别解码音频基本流队列和视频基本流队列中的比特流,并将时间信息和解码后的音频数据和图像数据,分别插入音频输出队列和视频输出队列。其中解码后的音频数据为PCM数据(Pulse Code Modulation,脉冲调制编码数据)。
本步骤所述的音频解码过程如下:
(a)音频解码线程阻塞于音频信号量,在解复用线程激活信号量后开始解码;
(b)对音频基本流队列头的音频基本流进行解码;
(c)将解码后一帧音频PCM数据插入音频输出队列尾部,并激活音频输出条件变量;
(d)将音频基本流队列中的时间戳PTS值保存在音频输出队列中;所述音频输出队列通过该队列的长度判断其是否溢出,若音频输出队列溢出则音频解码线程挂起等待。
本步骤所述的视频解码过程如下:
(a)视频解码线程阻塞于音频信号量,在解复用线程激活信号量后开始解码;
(b)对视频基本流队列头的视频基本流进行解码;
(c)将解码后的一帧图像数据插入视频输出队列尾部,并激活视频输出条件变量;
(d)将视频基本流队列中的时间戳PTS值保存在视频输出队列中;所述视频输出队列通过该队列的长度判断其是否溢出,若视频输出队列溢出则视频解码线程挂起等待。
步骤4、根据解码后的时间戳与本地系统时钟的差值,启动音频同步输出线程和视频同步输出线程,选择符合输出时间的数据进行输出;并根据视频与音频的时间戳的差值,对视频播放进行跳帧处理,从而使得音视频同步输出。
本步骤所述的音频输出过程由以下步骤实现:
(a)音频输出线程阻塞于音频输出条件变量;
(b)在音频解码线程激活条件变量后,计算当前时刻的本地系统时钟STC;
(c)查找音频输出队列中时间戳PTS值与STC值最接近的队列元素,将该队列的音频PCM数据输出。
本步骤所述的视频输出过程由以下步骤实现:
(a)视频输出线程阻塞于视频输出条件变量;
(b)在视频解码线程激活条件变量后,计算当前时刻的本地系统时钟STC;
(c)查找视频输出队列中PTS值与STC值最接近的队列元素,计算视频PTS与音频PTS的差值,如果视频PTS值大于音频PTS值,则重复显示该队列元素中的图像,如果视频PTS值小于音频PTS值,则跳过该队列元素。
步骤2与步骤3线程间的同步处理采用的是信号量机制,通过对信号的PV操作协调解复用线程与解码线程间的同步,其中PV操作由P操作(即申请资源)和V操作(即释放一个资源)组成。步骤2和步骤3缓冲基本流数据与解码后的数据采用的是队列,在队列尾插入数据,在队列头操作数据。步骤3与步骤4线程间的同步处理采用的是条件变量,即通过激活条件变量来激活相应的输出线程。
本发明所述方法采用操作系统信号量、条件变量、系统层定义的节目参考时钟PCR(Program Clock Reference)和显示时间戳PTS(Presentation Time Stamp),从而使得音视频在同一的本地系统时钟STC(System Time clock)的参考下按照PTS时刻严格输出,从而实现了音视频同步播放,不仅有效地实现了音视频的同步输出,而且不需要补充大量的视频编码数据和音频图像数据,从而很大程度地降低了对系统资源的使用,适合于嵌入式平台;此外软件架构清晰,实现复杂度低。
参阅图3,本发明还提供一种多线程的音视频同步控制装置实施例,包括:
解复用模块,用于将所述传输流或节目流拆分成音频基本流、视频基本流、以及分别对应所述音频基本流、视频基本流中数据元素的各自时间信息;
音频解码器,用于解码所述音频基本流中的比特流,得到待输出的音频数据;
视频解码器,用于解码所述视频基本流中的比特流,得到待输出的图像数据;
输出模块,用于解码后根据所述时间信息分别选择符合本地系统时钟要求的待输出音频数据和图像数据进行输出;图3中输出模块包括音频输出模块和视频输出模块;
同步模块,用于选择时间信息与本地系统时钟值最接近的音频数据和图像数据,计算音频数据对应时间和图像数据对应时间的差值,在视频数据对应时间大于音频数据对应时间时,控制所述输出模块重复输出所述视频数据进行显示,在视频数据对应时间小于音频数据对应时间时,控制所述输出模块跳过该视频数据对视频播放进行重复与跳帧处理,使音视频同步输出。
其中,为便于实现,可以包括用于保存音频基本流的音频基本流队列、用于保存视频基本流的视频基本流队列、用于保存解码后的音频数据的音频输出队列、用于保存解码后的视频数据的视频输出队列。
在具体实施例中,所述解复用模块具体用于对系统层的传输流或节目流进行解复用,将其拆分成音频基本流和视频基本流后分别插入音频基本流队列和视频基本流队列,并获取相应的时间戳;
所述音频解码器和视频解码器具体用于分别对音频基本流队列和视频基本流队列中的数据进行解码,将解码后的音频数据和视频数据分别插入音频输出队列和视频输出队列;
所述解码后的音频数据为脉冲调制编码数据。
其中的输出模块是根据解码后数据的时间戳与本地系统时钟的差值,选择符合输出时间的数据进行输出,并根据视频与音频的时间戳的差值,对视频播放进行跳帧处理,从而使得音视频同步输出。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种多线程的音视频同步控制方法,其特征在于,包括:
创建解复用线程、音频解码线程、视频解码线程、音频同步输出线程和视频同步输出线程,所述解复用线程用于将传输流或节目流拆分;将传输流或节目流拆分成音频基本流、视频基本流、以及分别对应所述音频基本流、视频基本流中数据元素的各自时间信息;将音频基本流插入音频基本流队列尾部,将视频基本流插入视频基本流队列尾部,激活解码线程;若音频基本流队列或视频基本流队列溢出则解复用线程挂起等待;
启动音频解码线程和视频解码线程,分别解码所述音频基本流和视频基本流中的比特流,得到待输出的音频数据和视频数据;并将解码后的音频数据和视频数据和各自相应时间信息分别插入音频输出队列和视频输出队列;
根据解码后的时间戳与本地系统时钟的差值,启动音频同步输出线程和视频同步输出线程;解码后根据所述时间信息分别选择符合本地系统时钟要求的待输出音频数据和视频数据进行输出,并选择时间信息与本地系统时钟值最接近的音频数据和视频数据,计算选择得到的音频数据对应时间和选择得到的视频数据对应时间的差值,在所述选择得到的视频数据对应时间大于选择得到的音频数据对应时间时,重复输出所述视频数据进行显示,在所述选择得到的视频数据对应时间小于选择得到的音频数据对应时间时,跳过该视频数据对视频播放进行跳帧处理,使音视频同步输出。
2.根据权利要求1所述的多线程的音视频同步控制方法,其特征在于:所述时间信息包括时间戳。
3.根据权利要求2所述的多线程的音视频同步控制方法,其特征在于:根据所述时间信息分别选择符合本地系统时钟要求的待输出音频数据和视频数据进行输出的步骤包括:
计算当前时刻的本地系统时钟,查找音频输出队列中时间戳值与本地系统时钟值最接近的队列元素,作为符合本地系统时钟要求的待输出音频数据;以及
计算当前时刻的本地系统时钟,查找视频输出队列中时间戳值与本地系统时钟值最接近的队列元素,作为符合本地系统时钟要求的待输出视频数据。
4.根据权利要求3所述的多线程的音视频同步控制方法,其特征在于:所述激活解码线程通过对信号量进行申请资源的P操作完成。
5.根据权利要求1所述的多线程的音视频同步控制方法,其特征在于:所述解复用线程与音频解码线程、视频解码线程间的同步处理采用信号量机制完成,通过对信号的申请资源/释放资源的PV操作协调解复用线程与音频解码线程、视频解码线程间的同步。
6.根据权利要求5所述的多线程的音视频同步控制方法,其特征在于:采用所述信号量机制完成解复用线程与音频解码线程、视频解码线程间的同步处理包括:
音频解码:(a)音频解码线程阻塞于音频信号量,在解复用线程激活信号量后开始解码;(b)对音频基本流队列头的音频基本流进行解码;(c)将解码后一帧音频数据插入音频输出队列尾部,并激活音频输出条件变量;(d)将音频基本流队列中的时间戳值保存在音频输出队列中;所述音频输出队列通过该队列的长度判断其是否溢出,若音频输出队列溢出则音频解码线程挂起等待;
视频解码:(a)视频解码线程阻塞于视频信号量,在解复用线程激活信号量后开始解码;(b)对视频基本流队列头的视频基本流进行解码;(c)将解码后的一帧视频数据插入视频输出队列尾部,并激活视频输出条件变量;(d)将视频基本流队列中的时间戳值保存在视频输出队列中;所述视频输出队列通过该队列的长度判断其是否溢出,若视频输出队列溢出则视频解码线程挂起等待。
7.一种多线程的音视频同步控制装置,其特征在于,包括:
音频基本流队列,用于保存音频基本流;
视频基本流队列,用于保存视频基本流;
音频输出队列,用于保存解码后的音频数据;
视频输出队列,用于保存解码后的视频数据;
解复用模块,用于将传输流或节目流拆分成音频基本流、视频基本流、以及分别对应所述音频基本流、视频基本流中数据元素的各自时间信息;所述解复用模块具体用于对系统层的传输流或节目流进行解复用,将其拆分成音频基本流和视频基本流后分别插入音频基本流队列和视频基本流队列,并获取相应的时间戳;
音频解码器,用于解码所述音频基本流中的比特流,得到待输出的音频数据;
视频解码器,用于解码所述视频基本流中的比特流,得到待输出的视频数据;
所述音频解码器和视频解码器具体用于分别对音频基本流队列和视频基本流队列中的数据进行解码,将解码后的音频数据和视频数据分别插入音频输出队列和视频输出队列;所述解码后的音频数据为脉冲调制编码数据;
输出模块,用于解码后根据所述时间信息分别选择符合本地系统时钟要求的待输出音频数据和视频数据进行输出;
同步模块,用于选择时间信息与本地系统时钟值最接近的音频数据和视频数据,计算选择得到的音频数据对应时间和选择得到的视频数据对应时间的差值,在所述选择得到的视频数据对应时间大于选择得到的音频数据对应时间时,控制所述输出模块重复输出所述视频数据进行显示,在所述选择得到的视频数据对应时间小于选择得到的音频数据对应时间时,控制所述输出模块跳过该视频数据对视频播放进行跳帧处理,使音视频同步输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010530498 CN101984672B (zh) | 2010-11-03 | 2010-11-03 | 多线程的音视频同步控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010530498 CN101984672B (zh) | 2010-11-03 | 2010-11-03 | 多线程的音视频同步控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101984672A CN101984672A (zh) | 2011-03-09 |
CN101984672B true CN101984672B (zh) | 2012-10-17 |
Family
ID=43641842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010530498 Expired - Fee Related CN101984672B (zh) | 2010-11-03 | 2010-11-03 | 多线程的音视频同步控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101984672B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102685507B (zh) * | 2011-07-12 | 2014-07-09 | 天脉聚源(北京)传媒科技有限公司 | 一种mpeg-2传输流解码音视频同步方法和系统 |
CN103037211B (zh) * | 2011-09-29 | 2017-04-19 | 展讯通信(上海)有限公司 | 流媒体文件的解码处理方法与装置、播放设备 |
CN102780929A (zh) * | 2012-05-31 | 2012-11-14 | 新奥特(北京)视频技术有限公司 | 一种通过处理时码跳变以使视音频同步的方法 |
CN103517126A (zh) * | 2012-06-19 | 2014-01-15 | 华为技术有限公司 | 马赛克视频呈现的方法、显示控制装置及终端 |
CN103024517A (zh) * | 2012-12-17 | 2013-04-03 | 四川九洲电器集团有限责任公司 | 一种基于并行处理的流媒体音视频同步播放方法 |
CN103731625A (zh) * | 2013-12-13 | 2014-04-16 | 厦门雅迅网络股份有限公司 | 一种多路音视频同时同步播放的方法 |
CN108322811A (zh) * | 2018-02-26 | 2018-07-24 | 宝鸡文理学院 | 一种钢琴视频教学中的同步方法及系统 |
CN110832875B (zh) * | 2018-07-23 | 2022-02-22 | 深圳市大疆创新科技有限公司 | 视频处理方法、终端设备、机器可读存储介质 |
CN109275008B (zh) * | 2018-09-17 | 2021-04-13 | 海信视像科技股份有限公司 | 一种音视频同步的方法和装置 |
CN109729404B (zh) | 2019-01-15 | 2021-06-04 | 晶晨半导体(上海)股份有限公司 | 一种基于嵌入式的播放器的同步调制方法 |
CN110381030B (zh) * | 2019-06-20 | 2022-03-11 | 视联动力信息技术股份有限公司 | 一种同步请求的处理方法及装置 |
CN111083546B (zh) * | 2019-12-13 | 2022-01-11 | 北京东土科技股份有限公司 | 一种音视频传输控制方法、系统及服务器 |
CN110933449B (zh) * | 2019-12-20 | 2021-10-22 | 北京奇艺世纪科技有限公司 | 一种外部数据与视频画面的同步方法、系统及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1705356A (zh) * | 2004-06-01 | 2005-12-07 | 三洋电机株式会社 | 解码装置 |
CN101188770A (zh) * | 2007-12-17 | 2008-05-28 | 上海广电(集团)有限公司中央研究院 | 一种多进程控制的音视频同步输出方法 |
CN101394469A (zh) * | 2008-10-29 | 2009-03-25 | 北京创毅视讯科技有限公司 | 一种音视频同步方法、装置及一种数字电视芯片 |
CN101729908A (zh) * | 2009-11-03 | 2010-06-09 | 上海大学 | 一种传输流视音频同步复用方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060134911A (ko) * | 2003-09-02 | 2006-12-28 | 소니 가부시끼 가이샤 | 콘텐츠 수신 장치, 비디오 오디오 출력 타이밍 제어 방법및 콘텐츠 제공 시스템 |
-
2010
- 2010-11-03 CN CN 201010530498 patent/CN101984672B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1705356A (zh) * | 2004-06-01 | 2005-12-07 | 三洋电机株式会社 | 解码装置 |
CN101188770A (zh) * | 2007-12-17 | 2008-05-28 | 上海广电(集团)有限公司中央研究院 | 一种多进程控制的音视频同步输出方法 |
CN101394469A (zh) * | 2008-10-29 | 2009-03-25 | 北京创毅视讯科技有限公司 | 一种音视频同步方法、装置及一种数字电视芯片 |
CN101729908A (zh) * | 2009-11-03 | 2010-06-09 | 上海大学 | 一种传输流视音频同步复用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101984672A (zh) | 2011-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101984672B (zh) | 多线程的音视频同步控制方法及装置 | |
CN103237255A (zh) | 一种多线程的音视频同步控制方法及系统 | |
CN101068367B (zh) | 用于改变编解码器的方法和装置 | |
KR100929073B1 (ko) | 휴대 방송 시스템에서 다중 스트림 수신 장치 및 방법 | |
EP2757795B1 (en) | Video multiplexing apparatus, video multiplexing method, multiplexed video decoding apparatus, and multiplexed video decoding method | |
CN102404624B (zh) | 一种数字机顶盒用支持硬件解码的全格式媒体播放器 | |
US9609317B1 (en) | Video transcoder stream multiplexing systems and methods | |
JP2000188759A (ja) | 情報ストリ―ムの高フレ―ム精度シ―ムレス・スプライシング | |
CN103458271A (zh) | 音视频文件拼接方法和装置 | |
CN101212671A (zh) | 一种低延迟的实时复用传输流的方法 | |
US20220109897A1 (en) | Transmitting method, receiving method, transmitting device and receiving device | |
CN108122558B (zh) | 一种latm aac音频流的实时转容实现方法及装置 | |
US8194707B2 (en) | Method and system for dynamically allocating video multiplexing buffer based on queuing theory | |
CN103475900A (zh) | 手机电视业务视频帧的封装方法、装置及前端系统 | |
US10506265B2 (en) | Transmitting method, receiving method, transmitting device and receiving device | |
KR20130109969A (ko) | 단일 디코더로 채널 변경을 가능하게 하기 위한 수신기 및 수신기에서의 방법 | |
CN101984655A (zh) | 数字电视接收装置及其换台方法 | |
CN1338870A (zh) | 用于信息处理的装置和方法及记录媒体 | |
KR20100131365A (ko) | 채널 변경 지연을 줄이기 위한 스트리밍 서버, 이동 단말기 및 그 방법 | |
JP2009218873A (ja) | デジタル放送受信機、および、プログラム | |
CN104185028A (zh) | 一种视频播放方法及终端 | |
CN100518320C (zh) | 信号再现装置 | |
JP2823806B2 (ja) | 画像復号装置 | |
JP2018033194A (ja) | 符号化装置 | |
JP4967402B2 (ja) | 多重化ストリーム変換装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121017 Termination date: 20191103 |
|
CF01 | Termination of patent right due to non-payment of annual fee |