发明名称 一种多通道音视频同步播放处理方法
摘要 本发明涉及视频监控领域,提供一种可快速处理多通道音视频流、实现多通道音视频同步播放控制的多通道音视频同步播放处理方法,包括以下步骤:建立以共同的参考时间戳T为相对起点的时间戳标记轴T<sub>1</sub>-T<sub>n</sub>秒;建立由双向帧链表与数据流缓存队列构成的帧通道处理视频通道数据;建立由双向帧链表与数据流缓存队列构成的帧通道处理音频通道数据;多通道音视频同步播放控制,计算所有帧通道相对起始播放时间T<sub>1</sub>和结束时间T<sub>n</sub>,调整所有帧通道参考时间和帧编号,填充空帧,使每个帧通道的数据从同一个参考时间时间点T<sub>1</sub>开始到参考时间T<sub>n</sub>结束,当所有帧通道中的当前帧均有数据时即可播放当前帧,并移动到下一个帧等待播放,依此控制逐帧同步播放。
申请公布号 CN104378675A 申请公布日期 2015.02.25
申请号 CN201410741040.1 申请日期 2014.12.08
申请人 厦门雅迅网络股份有限公司 发明人 王国清;林文山;陈辉;夏欢
分类号 H04N21/43(2011.01)I;H04N21/8547(2011.01)I 主分类号 H04N21/43(2011.01)I
代理机构 厦门市精诚新创知识产权代理有限公司 35218 代理人 方惠春
主权项 一种多通道音视频同步播放处理方法,其特征在于:多通道音视频数据同步处理包括以下步骤:(1)、设定各个音频、视频通道对应的音频、视频数据基于同一个参考时钟的时间戳T标记轴T<sub>1</sub>‑T<sub>n</sub>秒,n为自然数;(2)、一个以上视频通道数据处理,其处理包括,a、为每个视频通道建立一个基于时间戳T标记轴T<sub>1</sub>‑T<sub>n</sub>秒排列的双向帧链表T<sub>1</sub>′‑T<sub>n</sub>′,n为自然数,该双向帧链表T<sub>1</sub>′‑T<sub>n</sub>′的每一个结点T<sub>n</sub>′代表相对起始时间第T<sub>n</sub>秒时间周期的结点,每个结点T<sub>n</sub>′根据每秒视频帧率F等量分割成F个帧f<sub>1</sub>‑f<sub>F</sub>,F为自然数,每个结点T<sub>n</sub>′内的每个帧f<sub>F</sub>包含帧地址A、帧长度L、帧编号N和关键帧编号K,帧地址A表示当前帧在视频数据流缓存队列中的偏移地址;帧长度L表示当前帧的大小;帧编号N表示帧在当前双向帧链表中的唯一编号,即从第1秒T<sub>1</sub>′的第一个帧f<sub>1</sub>从1开始累加;关键帧编号K表示当前帧之前距离当前帧最近的一个关键帧的帧编号;根据双向帧链表中的帧编号N建立视频数据流缓存队列f<sub>1</sub>‑f<sub>N</sub>,该视频数据流缓存队列f<sub>1</sub>‑f<sub>N</sub>用于缓存连续的视频数据裸流;b、将各个视频通道接收的视频数据流分别接收、逐帧解析并将各视频帧数据存储至各个视频数据流缓存队列f<sub>1</sub>‑f<sub>N</sub>中,同时将存储在视频数据流缓存队列f<sub>1</sub>‑f<sub>N</sub>中的视频帧数据根据时间戳将视频帧数据的帧地址A、帧长度L、帧编号N和关键帧编号K映射至对应时间戳的双向帧链表的对应帧结构,即对接收到的视频流数据进行逐帧解析,每解出一个视频帧数据,则按照如下步骤进行处理:①、将视频帧数据保存到对应视频流数据缓存队列f<sub>1</sub>‑f<sub>N</sub>中,同时记录该视频帧数据的偏移地址A和帧长度L,并累加当前帧编号N;②、如果该视频帧数据是关键帧则更新最新关键帧编号K为当前帧编号N;③、根据每一视频帧数据的时间戳T映射并保存到双向帧链表对应帧结构,填充属性值帧地址A、帧长度L、帧编号N和关键帧编号K;(3)、一个以上音频通道数据处理,其处理包括,a、为每个音频通道建立一个基于时间戳T标记轴T<sub>1</sub>‑T<sub>n</sub>秒排列的双向帧链表T<sub>1</sub>″‑T<sub>n</sub>″,n为自然数,该双向帧链表T<sub>1</sub>″‑T<sub>n</sub>″的每一个结点T<sub>n</sub>″代表相对起始时间第T<sub>n</sub>秒时间周期的结点,每个结点T<sub>n</sub>″根据每秒视频帧率F等量分割成F个帧f<sub>1</sub>′‑f<sub>F</sub>′,F为自然数,每个结点T<sub>n</sub>″内的每个帧f<sub>F</sub>′包含帧地址A′、帧长度L′、帧编号N′和关键帧编号K′,帧地址A′表示当前帧在音频数据流缓存队列中的偏移地址;帧长度L′表示当前帧的大小;帧编号N′表示帧在当前双向帧链表中的唯一编号,即从第1秒的第一个帧从1开始累加;关键帧编号K′表示当前帧之前距离当前帧最近的一个关键帧的帧编号;根据双向帧链表中的帧编号N′建立音频数据流缓存队列f<sub>1</sub>′‑f<sub>N</sub>′,该音频数据流缓存队列f<sub>1</sub>′‑f<sub>N</sub>′用于缓存连续的音频数据裸流;b、根据音频采样频率P Hz、采样值Bbit、采样周期T毫秒和视频帧率F fps,通过公式:<img file="FDA0000627289910000021.GIF" wi="345" he="111" />计算出音频帧固定值L Byte;c、接收并解码音频流数据进行处理,按照上一步b中计算出的音频帧大小L对解码后的音频流数据进行等量分割,每次取L长度的音频流数据为一个音频帧,并按照如下步骤进行处理:①、将音频帧数据保存到音频数据流缓存队列中,记录偏移地址A′和帧长度L′,并累加当前帧编号N′;②、根据每一音频帧数据的时间戳T映射并保存到双向帧链表对应帧结构,填充属性值帧地址A′、帧长度L′、帧编号N′和关键帧编号K′,其中音频帧的关键帧编号K′等同自身帧编号N′;(4)、多通道音视频同步播放控制,定义各个音频、视频通道上的双向帧链表与数据流缓存队列构成的一个帧通道,从而基于时间戳标记轴与各个帧通道进行同步播放控制,同步控制步骤:a、计算所有帧通道的相对起始参考时间,通过构建各个帧通道得出每个帧通道的起始参考时间T<sub>R</sub>,定义所有帧通道中最小起始参考时间T<sub>R</sub>为所有帧通道的最大相对起始播放时间T<sub>R‑MIN</sub>;b、以上一步啊中得出的T<sub>R‑MIN</sub>作为公有参考时间,调整所有帧通道的参考时间和帧编号,在每个帧通道的双向帧链表的头部依次填充T<sub>R</sub>*F‑T<sub>R‑MIN</sub>*F个空帧,保证每个帧通道的数据从同一个时间点开始播放,之后对各个帧通道的所有帧编号N通过调整公式N=N+T<sub>R</sub>*F‑T<sub>R‑MIN</sub>*F进行调整;c、实现同步播放控制,即当所有帧通道中的当前帧均有数据时即可开始同步播放,当某个帧通道数据已经接受完毕但其他通道还有数据时,则播放到大于该帧通道最大帧编号的帧时,对该帧通道后续默认填充空帧,以保证其他帧通道的帧正常播放,同时保证所有帧通道的长度相等。
地址 361000 福建省厦门市软件园二期观日路46号