CN111629158A - 一种音频流和视频流同步切换方法及装置 - Google Patents

一种音频流和视频流同步切换方法及装置 Download PDF

Info

Publication number
CN111629158A
CN111629158A CN201910151206.7A CN201910151206A CN111629158A CN 111629158 A CN111629158 A CN 111629158A CN 201910151206 A CN201910151206 A CN 201910151206A CN 111629158 A CN111629158 A CN 111629158A
Authority
CN
China
Prior art keywords
video
stream
video stream
audio
switching
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.)
Granted
Application number
CN201910151206.7A
Other languages
English (en)
Other versions
CN111629158B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910151206.7A priority Critical patent/CN111629158B/zh
Priority to KR1020217020566A priority patent/KR102519381B1/ko
Priority to JP2021540224A priority patent/JP7171929B2/ja
Priority to PCT/CN2019/123843 priority patent/WO2020173165A1/zh
Priority to EP19917441.8A priority patent/EP3883238B1/en
Publication of CN111629158A publication Critical patent/CN111629158A/zh
Application granted granted Critical
Publication of CN111629158B publication Critical patent/CN111629158B/zh
Priority to US17/402,110 priority patent/US11368634B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/268Signal distribution or switching
    • 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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising 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
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/48Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 specially adapted for particular use
    • G10L25/51Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 specially adapted for particular use for comparison or discrimination
    • G10L25/57Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 specially adapted for particular use for comparison or discrimination for processing of video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/765Media network packet handling intermediate
    • 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/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23424Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
    • 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/23608Remultiplexing multiplex streams, e.g. involving modifying time stamps or remapping the packet identifiers
    • 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/2368Multiplexing of audio and video streams
    • 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/242Synchronization processes, e.g. processing of PCR [Program Clock References]
    • 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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising 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
    • H04N21/43072Synchronising 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 of multiple content streams on the same device
    • 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/4344Remultiplexing of multiplex streams, e.g. by modifying time stamps or remapping the packet identifiers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Marketing (AREA)
  • Business, Economics & Management (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Studio Circuits (AREA)

Abstract

本申请公开一种音频流和视频流同步切换方法及装置,用于解决现有无法保证切换后的音频流和视频流同步的问题。切换设备接收切换指令后,确定第一视频流的切换点的视频参数值,以及确定第二视频流的切换点的视频参数值,视频参数值包括时间戳和/或序列号;从而根据第一视频流的切换点的时间戳确定第一音频流的切换点的音频参数值,以及根据第二视频流的切换点的时间戳确定第二音频流的切换点的音频参数值,音频参数值包括时间戳和/或序列号;进而根据确定的切换点执行切换。也就是说在确定视频流的切换点后,根据视频流的切换点来确定音频流的切换点,音频流的切换点与视频流的切换点在时间维度上尽可能接近,从而保证音频流和视频流的同步。

Description

一种音频流和视频流同步切换方法及装置
技术领域
本申请涉及多媒体通信技术领域,尤其涉及一种音频流和视频流同步切换方法及装置。
背景技术
在多媒体通信技术领域,如电视(television,TV)制播领域,音频流和视频流分开传输,音频流切换和视频流切换各自独立完成,因此,无法保证切换后的音频流和视频流同步。
发明内容
本申请实施例提供一种音频流和视频流同步切换方法及装置,用于解决现有无法保证切换后的音频流和视频流同步的问题。
第一方面,本申请实施例提供一种音频流和视频流同步切换方法,包括:
切换设备接收切换指令,所述切换指令指示从传输的第一音频流切换到第二音频流以及从传输的第一视频流切换到第二视频流;所述切换设备确定所述第一视频流的切换点的视频参数值,以及确定所述第二视频流的切换点的视频参数值,所述视频参数值包括时间戳和/或序列号;所述切换设备根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的音频参数值,所述音频参数值包括时间戳和/或序列号;所述网络设备将所述第一视频流中视频参数值大于所述第一视频流的切换点的视频参数值的报文切换为所述第二视频流中视频参数值大于所述第二视频流的切换点的视频参数值的报文,并将第一音频流中音频参数值大于所述第一音频流的切换点的音频参数值的报文切换为所述第二音频流中音频参数值大于所述第二音频流的切换点的音频参数值的报文。
本申请实施例中采用的方案,与现有采用单独执行视频流和音频流的切换不同,而是在确定视频流的切换点后,根据视频流的切换点来确定音频流的切换点,音频流的切换点与视频流的切换点在时间维度上尽可能接近,从而保证音频流和视频流的同步。
例如,音频流中包括的报文可以是实时传输协议(real-time transportprotocol,RTP)报文。视频流中包括的报文可以是RTP报文。
在一种可能的设计中,所述切换设备确定第一视频流的切换点的视频参数值以及所述第二视频流的切换点的视频参数值,包括:
所述切换设备根据第一视频流的第一报文的时间戳和第二视频流的第二报文的时间戳,确定所述第一视频流和第二视频流的同步关系,所述第一报文所属的第一视频帧的接收时间段与所述第二报文所属的第二视频帧的接收时间段存在重叠;
所述切换设备根据所述同步关系和所述第一报文的视频参数值确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的视频参数值确定所述第二视频流的切换点的视频参数值。
现有在确定视频流切换点时,需要逐报文扫描视频流确定切换点,而本申请中通过上述设计,根据存在接收到时间段存在重叠的两个视频帧中的报文的视频参数值来确定待切换的两个视频流的切换点,简单有效。
在一种可能的设计中,当所述视频参数值包括时间戳时,所述切换设备根据所述同步关系和所述第一报文的视频参数值确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的视频参数值确定所述第二视频流的切换点的视频参数值,包括:
所述切换设备根据所述同步关系、所述第一报文的时间戳和所述第一视频流的视频帧时长确定所述第一视频流的切换点的时间戳,以及根据所述同步关系、所述第二报文的时间戳和所述第二视频流的视频帧时长确定所述第二视频流的切换点的时间戳。
上述设计,当视频流切换采用时间戳时,提供一种简单有效的确定视频流的切换点的时间戳的方式,复杂度较低。
在一种可能的设计中,所述第一视频流的切换点的时间戳,以及所述第二视频流的切换点的时间戳满足如下条件:
若所述第一视频流和所述第二视频流同步,则TS_sw_v1=FT_TS1+N*T1,TS_sw_v2=FT_TS2+N*T2;或者,
若所述第一视频流晚于所述第二视频流,则TS_sw_v1=FT_TS1+(N+1)*T1,TS_sw_v2=FT_TS2+N*T2;或者,
若所述第一视频流早于所述第二视频流,则TS_sw_v1=FT_TS1+N*T1,TS_sw_v2=FT_TS2+(N+1)*T2;
其中,T1表示所述第一视频流的视频帧时长,T2表示所述第二视频流的视频帧时长,TS_sw_v1表示所述第一视频流的切换点的时间戳,TS_sw_v2表示所述第二视频流的切换点的时间戳,N为大于0的整数。
上述设计,提供一种确定视频流的切换点的时间戳的方法,简单易行,复杂度低。
在一种可能的设计中,所述音频参数值包括时间戳时,所述切换设备根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的音频参数值,包括:
所述切换设备根据所述第一视频流的切换点的时间戳、所述第一视频流的视频帧时长、所述第一视频流的时钟频率和所述第一音频流的采样率确定所述第一音频流的切换点的时间戳,以及所述切换设备根据所述第二视频流的切换点的时间戳、所述第二视频流的视频帧时长、所述第二视频流的时钟频率和所述第一音频流的采样率确定所述第一音频流的切换点的时间戳。
上述设计,提供一种具体的根据视频流的切换点的时间戳确定音频流的切换点的时间戳的方式,简单易行,复杂度低。
在一种可能的设计中,所述第一音频流的切换点的时间戳和所述第二音频流的切换点的时间戳满足如下条件:
TS_sw_a1=(TS_sw_v1+T1-TS_ref_v)*frequency_a1/frequency_v1+TS_ref_a;
TS_sw_a2=(TS_sw_v2+T2-TS_ref_v)*frequency_a2/frequency_v2+TS_ref_a;
其中,TS_sw_a1表示第一音频流的切换点的时间戳,TS_sw_v1表示第一视频流的切换点的时间戳,TS_sw_a2表示第二音频流的切换点的时间戳,TS_sw_v2表示第二视频流的切换点的时间戳,T1表示所述第一视频流的视频帧时长,T2表示所述第二视频流的视频帧时长,TS_ref_v表示以第一时间为基准确定的视频流的参考时间戳,TS_ref_a表示以第一时间为基准确定的音频流参考时间戳,所述第一时间为所述切换设备上的任一历史时间,frequency_a1为所述第一音频流的采样率,frequency_a2为所述第二音频流的采样率,frequency_v1为所述第一视频流的时钟频率,frequency_v2为所述第二视频流的时钟频率。
在一种可能的设计中,所述第一音频流的采样率基于接收到的所述第一音频流中的任两个报文的时间戳和序列号确定,或者,所述第二音频流的采样率基于接收到的所述第二音频流中的任两个报文的时间戳和序列号确定。
在一种可能的设计中,所述音频参数值包括序列号,所述切换设备根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的音频参数值,包括:
所述切换设备根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的时间戳,并根据所述第一音频流的切换点的时间戳确定所述第一音频流的切换点的序列号;以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的时间戳,并根据所述第二音频流的切换点的时间戳确定所述第二音频流的切换点的序列号。
上述设计,提供一种具体的根据视频流的切换点的时间戳确定音频流的切换点的序列号的方式,简单易行,复杂度低。
在一种可能的设计中,所述第一音频流的切换点的序列号和所述第二音频流的切换点的序列号满足如下条件:
SN_sw_a1=SN1+(TS_sw_a1–TS1)/AvgTS1;
SN_sw_a2=SN2+(TS_sw_a2–TS2)/AvgTS2;
其中,AvgTS1=packetTime1*frequency_a1,AvgTS2=packetTime2*frequency_a2,packetTime1为所述第一音频流的报文时长,packetTime2为所述第二音频流的报文时长,frequency_a1表示所述第一音频流的采样率,frequency_a2表示所述第二音频流的采样率,TS_sw_a1表示所述第一音频流的切换点的时间戳,TS_sw_a2表示所述第二音频流的切换点的时间戳;SN_sw_a1表示所述第一音频流的切换点的序列号,SN_sw_a2表示所述第二音频流的切换点的序列号;SN1表示第一音频流中第三报文的序列号,TS1表示所述第三报文的时间戳,SN2表示所述第二音频流中第四报文的序列号,TS2表示所述第四报文的时间戳;所述第三报文为所接收到的第一音频流中的任一报文,所述第四报文为所接收到的第二音频流中的任一报文。
上述设计,提供一种具体的确定音频流的切换点的序列号的方式,简单易行,复杂度低。
在一种可能的设计中,当所述视频参数值包括序列号时,所述切换设备根据所述同步关系和所述第一报文的视频参数值确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的视频参数值确定所述第二视频流的切换点的视频参数值,包括:
所述切换设备根据所述同步关系、所述第一报文的序列号和所述第一视频流的视频帧的报文数量确定所述第一视频流的切换点的序列号,以及根据所述同步关系、所述第二报文的序列号和所述第二视频流的视频帧的报文数量确定所述第二视频流的切换点的序列号。
上述设计,提供一种具体的确定视频流的切换点的序列号的方式,简单易行,复杂度低。
在一种可能的设计中,所述第一视频流的切换点的序列号,以及所述第二视频流的切换点的序列号满足如下条件:
若所述第一视频流和所述第二视频流同步,则SN_sw_v1=FT_SN1+N*M1,SN_sw_v2=FT_SN2+N*M2;或者,
若所述第一视频流晚于所述第二视频流,则SN_sw_v1=FT_SN1+(N+1)*M1,SN_sw_v2=FT_SN2+N*M2;或者,
若所述第一视频流早于所述第二视频流,则SN_sw_v1=FT_SN1+N*M1,SN_sw_v2=FT_SN2+(N+1)*M2;
其中,M1表示所述第一视频帧包括的报文数量,M2表示所述第二视频帧包括的报文数量,SN_sw_v1表示所述第一视频流的切换点的序列号,SN_sw_v2表示所述第二视频流的切换点的序列号,FT_SN1表示所述第一报文的序列号,FT_SN2表示所述第二报文的序列号,N为大于0的整数。
上述设计,提供一种具体的确定视频流的切换点的序列号的方式,简单易行,复杂度低。
在一种可能的设计中,所述第一视频流的视频帧的报文数量基于接收到的所述第一视频流中的相邻两个视频帧的帧尾报文的序列号差确定,所述第二视频流的视频帧的报文数量基于接收到的所述第二视频流中的相邻两个视频帧的帧尾报文的序列号差确定;或者,所述第一视频流的视频帧的报文数量基于接收到的所述第一视频流中的相邻两个视频帧的帧头报文的序列号差确定,所述第二视频流的视频帧的报文数量基于接收到的所述第二视频流中的相邻两个视频帧的帧头报文的序列号差确定。
上述设计中,通过相邻两个帧尾报文或者帧头报文的序列号差来确定视频帧的报文数量,简单易行,复杂度低。
在一种可能的设计中,所述第一视频流的视频帧时长基于接收到的所述第一视频流中的相邻两个视频帧的帧尾报文的时间戳差确定,所述第二视频流的视频帧时长基于接收到的所述第二视频流中的相邻两个视频帧的帧尾报文的时间戳差确定;或者,所述第一视频流的视频帧时长基于接收到的所述第一视频流中的相邻两个视频帧的帧头报文的时间戳差确定,所述第二视频流的视频帧时长基于接收到的所述第二视频流中的相邻两个视频帧的帧头报文的时间戳差确定。
上述设计中,通过相邻两个帧尾报文或者帧头报文的时间戳差来确定视频帧时长,简单易行,复杂度低。
在一种可能的设计中,所述第一视频流中的相邻两个视频帧为在接收到所述切换指令前接收到的所述第一视频流中两个视频帧,所述第二视频流中的相邻两个视频帧为在接收所述切换指令前接收到的所述第二视频流中的两个视频帧;
所述第一视频帧为接收到切换指令时接收到的所述第一视频流中的报文所在的视频帧的前一个视频帧,所述第二视频帧为接收到切换指令时接收到的所述第二视频流中的报文所在的视频帧的前一个视频帧;或者,所述第一视频帧为接收到切换指令时接收到的所述第一视频流中的报文所在的视频帧的后一个视频帧,所述第二视频帧为接收到切换指令时接收到的所述第二视频流中的报文所在的视频帧的后一个视频帧。
上述设计中,在接收到切换指令前已确定视频帧时长、视频帧包括的报文数量,根据接收到切换指令时所接收的视频帧中报文确定切换点,在一定程度上可以降低切换时延。
在一种可能的设计中,所述第一视频流中的相邻两个视频帧为在接收到所述切换指令时接收到的所述第一视频流中报文所在的视频帧及其下一个视频帧,所述第二视频流中的相邻两个视频帧为在接收所述切换指令时接收到的所述第二视频流的报文所在的视频帧及其下一个视频帧;
所述第一视频帧为在接收到所述切换指令时接收到的所述第一视频流中报文所在的视频帧的下一个视频帧,所述第二视频帧为在接收到所述切换指令时接收到的所述第二视频流中报文所述的视频帧的下一个视频帧。
上述设计中,在接收到切换指令后再确定视频帧时长和视频帧包括的报文数量,从而能够有针对性的确定哪几个视频流的视频帧时长和报文数量,在一定程度上可以提高资源利用率。
在一种可能的设计中,所述第一报文为所述第一视频帧的帧尾报文,所述第二报文为所述第二视频帧的帧尾报文;或者,所述第一报文为所述第一视频帧的帧头报文,所述第二报文为所述第二视频帧的帧头报文。
上述设计,通过视频流的帧尾报文来确定切换点,简单易行,复杂度低。
基于与第一方面提供的方法同样的发明构思,本申请实施例提供一种音频流和视频流同步切换装置,包括:
接收单元,用于接收切换指令,所述切换指令指示从传输的第一音频流切换到第二音频流以及从传输的第一视频流切换到第二视频流;
处理单元,用于确定第一视频流的切换点的视频参数值以及所述第二视频流的切换点的视频参数值,所述视频参数值包括时间戳和/或序列号;根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的视频参数值确定所述第二音频流的切换点的音频参数值,所述音频参数值包括时间戳和/或序列号;
发送单元,用于将所述第一视频流中视频参数值大于所述第一视频流的切换点的视频参数值的报文切换为所述第二视频流中视频参数值大于所述第二视频流的切换点的视频参数值的报文,并将第一音频流中音频参数值大于所述第一音频流的切换点的音频参数值的报文切换为所述第二音频流中音频参数值大于所述第二音频流的切换点的音频参数值的报文。
在一种可能的设计中,所述处理单元,在确定第一视频流的切换点的视频参数值以及所述第二视频流的切换点的视频参数值时,具体用于:
根据第一视频流的第一报文的时间戳和第二视频流的第二报文的时间戳,确定所述第一视频流和第二视频流的同步关系,所述第一报文所属的第一视频帧的接收时间段与所述第二报文所属的第二视频帧的接收时间段存在重叠;
根据所述同步关系和所述第一报文的视频参数值确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的视频参数值确定所述第二视频流的切换点的视频参数值。
在一种可能的设计中,当所述视频参数值包括时间戳时,所述处理单元,在根据所述同步关系和所述第一报文的视频参数值确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的视频参数值确定所述第二视频流的切换点的视频参数值时,具体用于:
根据所述同步关系、所述第一报文的时间戳和所述第一视频流的视频帧时长确定所述第一视频流的切换点的时间戳,以及根据所述同步关系、所述第二报文的时间戳和所述第二视频流的视频帧时长确定所述第二视频流的切换点的时间戳。
在一种可能的设计中,所述第一视频流的切换点的时间戳,以及所述第二视频流的切换点的时间戳满足如下条件:
若所述第一视频流和所述第二视频流同步,则TS_sw_v1=FT_TS1+N*T1,TS_sw_v2=FT_TS2+N*T3;或者,
若所述第一视频流晚于所述第二视频流,则TS_sw_v1=FT_TS1+(N+1)*T1,TS_sw_v2=FT_TS2+N*T2;或者,
若所述第一视频流早于所述第二视频流,则TS_sw_v1=FT_TS1+N*T1,TS_sw_v2=FT_TS2+(N+2)*T2;
其中,T1表示所述第一视频流的视频帧时长,T2表示所述第二视频流的视频帧时长均为T,TS_sw_v1表示所述第一视频流的切换点的时间戳,TS_sw_v2表示所述第二视频流的切换点的时间戳,N为大于0的整数。
在一种可能的设计中,所述音频参数值包括时间戳,所述处理单元,在根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的音频参数值时,具体用于:
根据所述第一视频流的切换点的时间戳、所述第一视频流的视频帧时长、所述第一视频流的时钟频率和所述第一音频流的采样率确定所述第一音频流的切换点的时间戳,以及根据所述第二视频流的切换点的时间戳、所述第二视频流的视频帧时长、所述第二视频流的时钟频率和所述第一音频流的采样率确定所述第一音频流的切换点的时间戳。
在一种可能的设计中,所述第一音频流的切换点的时间戳和所述第二音频流的切换点的时间戳满足如下条件:
TS_sw_a1=(TS_sw_v1+T1-TS_ref_v)*frequency_a1/frequency_v1+TS_ref_a;
TS_sw_a2=(TS_sw_v2+T2-TS_ref_v)*frequency_a2/frequency_v2+TS_ref_a;
其中,TS_sw_a1表示第一音频流的切换点的时间戳,TS_sw_v1表示第一视频流的切换点的时间戳,TS_sw_a2表示第二音频流的切换点的时间戳,TS_sw_v2表示第二视频流的切换点的时间戳,T1表示所述第一视频流的视频帧时长,T2表示所述第二视频流的视频帧时长,TS_ref_v表示以第一时间为基准确定的视频流的参考时间戳,TS_ref_a表示以第一时间为基准确定的音频流参考时间戳,所述第一时间为上的任一历史时间,frequency_a1为所述第一音频流的采样率,frequency_a2为所述第二音频流的采样率,frequency_v1为所述第一视频流的时钟频率,frequency_v2为所述第二视频流的时钟频率。
在一种可能的设计中,所述第一音频流的采样率基于接收到的所述第一音频流中的任两个报文的时间戳和序列号确定,或者,所述第二音频流的采样率基于接收到的所述第二音频流中的任两个报文的时间戳和序列号确定。
在一种可能的设计中,所述音频参数值包括序列号,
所述处理单元,在根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的音频参数值时,具体用于:
根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的时间戳,并根据所述第一音频流的切换点的时间戳确定所述第一音频流的切换点的序列号;以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的时间戳,并根据所述第二音频流的切换点的时间戳确定所述第二音频流的切换点的序列号。
在一种可能的设计中,所述第一音频流的切换点的序列号和所述第二音频流的切换点的序列号满足如下条件:
SN_sw_a1=SN1+(TS_sw_a1–TS1)/AvgTS1;
SN_sw_a2=SN2+(TS_sw_a2–TS2)/AvgTS2;
其中,AvgTS1=packetTime1*frequency_a1,AvgTS2=packetTime2*frequency_a2,packetTime1为所述第一音频流的报文时长,packetTime2为所述第二音频流的报文时长,frequency_a1表示所述第一音频流的采样率,frequency_a2表示所述第二音频流的采样率,TS_sw_a1表示所述第一音频流的切换点的时间戳,TS_sw_a2表示所述第二音频流的切换点的时间戳;SN_sw_a1表示所述第一音频流的切换点的序列号,SN_sw_a2表示所述第二音频流的切换点的序列号;SN1表示第一音频流中第三报文的序列号,TS1表示所述第三报文的时间戳,SN2表示所述第二音频流中第四报文的序列号,TS2表示所述第四报文的时间戳;所述第三报文为所接收到的第一音频流中的任一报文,所述第四报文为所接收到的第二音频流中的任一报文。
在一种可能的设计中,当所述视频参数值包括序列号,所述处理单元,在根据所述同步关系和所述第一报文的视频参数值确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的视频参数值确定所述第二视频流的切换点的视频参数值时,具体用于:
根据所述同步关系、所述第一报文的序列号和所述第一视频流的视频帧的报文数量确定所述第一视频流的切换点的序列号,以及根据所述同步关系、所述第二报文的序列号和所述第二视频流的视频帧的报文数量确定所述第二视频流的切换点的序列号。
在一种可能的设计中,所述第一视频流的切换点的序列号,以及所述第二视频流的切换点的序列号满足如下条件:
若所述第一视频流和所述第二视频流同步,则SN_sw_v1=FT_SN1+N*M1,SN_sw_v2=FT_SN2+N*M2;或者,
若所述第一视频流晚于所述第二视频流,则SN_sw_v1=FT_SN1+(N+1)*M1,SN_sw_v2=FT_SN2+N*M2;或者,
若所述第一视频流早于所述第二视频流,则SN_sw_v1=FT_SN1+N*M1,SN_sw_v2=FT_SN2+(N+1)*M2;
其中,M1表示所述第一视频帧包括的报文数量,M2表示所述第二视频帧包括的报文数量,SN_sw_v1表示所述第一视频流的切换点的序列号,SN_sw_v2表示所述第二视频流的切换点的序列号,FT_SN1表示所述第一报文的序列号,FT_SN2表示所述第二报文的序列号,N为大于0的整数。
在一种可能的设计中,所述第一视频流的视频帧的报文数量基于接收到的所述第一视频流中的相邻两个视频帧的帧尾报文的序列号差确定,所述第二视频流的视频帧的报文数量基于接收到的所述第二视频流中的相邻两个视频帧的帧尾报文的序列号差确定;或者,所述第一视频流的视频帧的报文数量基于接收到的所述第一视频流中的相邻两个视频帧的帧头报文的序列号差确定,所述第二视频流的视频帧的报文数量基于接收到的所述第二视频流中的相邻两个视频帧的帧头报文的序列号差确定。
在一种可能的设计中,所述第一视频流的视频帧时长基于接收到的所述第一视频流中的相邻两个视频帧的帧尾报文的时间戳差确定,所述第二视频流的视频帧时长基于接收到的所述第二视频流中的相邻两个视频帧的帧尾报文的时间戳差确定;或者,所述第一视频流的视频帧时长基于接收到的所述第一视频流中的相邻两个视频帧的帧头报文的时间戳差确定,所述第二视频流的视频帧时长基于接收到的所述第二视频流中的相邻两个视频帧的帧头报文的时间戳差确定。
在一种可能的设计中,所述第一视频流中的相邻两个视频帧为在接收到所述切换指令前接收到的所述第一视频流中两个视频帧,所述第二视频流中的相邻两个视频帧为在接收所述切换指令前接收到的所述第二视频流中的两个视频帧;
所述第一视频帧为接收到切换指令时接收到的所述第一视频流中的报文所在的视频帧的前一个视频帧,所述第二视频帧为接收到切换指令时接收到的所述第二视频流中的报文所在的视频帧的前一个视频帧;或者,所述第一视频帧为接收到切换指令时接收到的所述第一视频流中的报文所在的视频帧的后一个视频帧,所述第二视频帧为接收到切换指令时接收到的所述第二视频流中的报文所在的视频帧的后一个视频帧。
在一种可能的设计中,所述第一视频流中的相邻两个视频帧为在接收到所述切换指令时接收到的所述第一视频流中报文所在的视频帧及其下一个视频帧,所述第二视频流中的相邻两个视频帧为在接收所述切换指令时接收到的所述第二视频流的报文所在的视频帧及其下一个视频帧;
所述第一视频帧为在接收到所述切换指令时接收到的所述第一视频流中报文所在的视频帧的下一个视频帧,所述第二视频帧为在接收到所述切换指令时接收到的所述第二视频流中报文所述的视频帧的下一个视频帧。
在一种可能的设计中,所述第一报文为所述第一视频帧的帧尾报文,所述第二报文为所述第二视频帧的帧尾报文;或者,所述第一报文为所述第一视频帧的帧头报文,所述第二报文为所述第二视频帧的帧头报文。
第三方面,本申请实施例还提供了一种装置,所述装置应用于所述切换设备,有益效果可以参见第一方面的描述此处不再赘述。所述通信装置的结构中包括处理器和收发器,还可以包括存储器,所述处理器被配置为支持所述终端设备执行上述第一方面方法中相应的功能。所述存储器与所述处理器耦合,其保存所述通信装置必要的程序指令和数据。所述收发器,用于与其他设备进行通信。
第四方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
第五方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
第六方面,本申请还提供一种计算机芯片,所述芯片与存储器相连,所述芯片用于读取并执行所述存储器中存储的软件程序,执行上述第一方面所述的方法。
附图说明
图1为本申请实施例提供的切换系统结构示意图;
图2为本申请实施例提供的视频流示意图;
图3为本申请实施例提供的音视频流同步示意图;
图4A为本申请实施例提供的音频流和视频流同步切换方法流程图;
图4B为本申请实施例提供的RTP报文头结构示意图;
图5为本申请实施例提供的两个视频流包括的视频帧示意图;
图6为本申请实施例提供的待切换的视频流1和视频流2、音频流1和音频流2的示意图;
图7为本申请实施例提供的音视频同步切换流程示意图;
图8A为本申请实施例提供的切换前修改组播地址和序列号的方式示意图;
图8B为本申请实施例提供的切换后修改组播地址和序列号的方式示意图;
图9为本申请实施例提供的多条视频流和多条音频流同时执行切换的示意图;
图10为本申请实施例提供的装置1000结构示意图;
图11为本申请实施例提供的装置1100结构示意图。
具体实施方式
本申请实施例可以应用于广播、电视台制播网络的总控系统、演播室、播出域等对承载在IP网络上的音频流有切换需求的场景。
图1示例性地示出一种切换系统结构示意图。系统包括P个音频发送设备、Q个视频发送设备,切换设备,音频接收设备,视频接收设备,P和Q均为大于1的整数。音频发送设备用于发出音频流给切换设备,视频发送设备用于发出视频流给切换设备。切换设备负责将P个音频发送设备输出的P路音频流中的一路音频流,以及将Q个视频发送设备输出Q路视频流中的一路视频流传输给下游设备,以通过下游设备将音频流传输给音频接收设备,将视频流传输给视频接收设备。
本申请实施例中的切换设备可以是用于制播IP网络中的IP网络交换设备,比如路由器、交换机、虚拟交换机,还可以是一台或者多台服务器,或者是一个虚拟化平台,或者是云计算服务中心等。
示例性的,切换系统中还可以包括管理设备,用于向切换设备发送切换指令。其中,该管理设备与切换设备之间可以通过有线网络或者无线网络连接。
可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(local area network,LAN)、城域网(metropolitan area network,MAN)、广域网(wide area network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。
动画和电视工程师协会(the society of motion picture and televisionengineers,SMPTE)2110标准让音频、视频和辅助数据得以分开,每个实体流都可以分开传送、切换、汇聚重组,提升附加字幕、标题、图文电视及多语言音频制作播出的便捷程度。辅助数据可以是字幕、标题、图文电视、多语言音频等。SMPTE 2110标准让音频、视频和辅助数据流的分开传输引入了一个新的需求,即在切换时,必须保证音频和视频同步切换。而目前由于音频流和视频流分开传输,音频流切换和视频流切换各自独立完成,导致无法准确完成同步切换。
本申请实施例中,将由音频数据构成的流称为音频流,将由视频数据构成的流称为视频流。其中音频数据可以是人类能够听到的声音所构成数据,比如说话声、歌声、乐器产生的声音所构成的数据,还可以是制作产生的多语言的音频数据等。视频数据可以是人眼无法辨别单幅的静态画面,看上去是平滑连续的视觉效果,这样连续的画面所对应的数据可以称为视频数据,比如,视频数据可以包括影像数据、制作的字幕或者标题构成的数据、图文电视数据等。
另外,本申请实施例中,可以将切换前传输的视频流可以称为切出视频流,切换后传输的视频流可以称为切入视频流。可以将切换前传输的音频流可以称为切出音频流,切换后传输的音频流可以称为切入音频流。本申请实施例后续描述时以第一音频流为切出音频流,第二音频流为切入音频流,第一视频流为切出视频流,第二视频流为切入视频流为例。
在IP网络环境下,音频流和视频流同步切换需要满足如下要求:
1、视频流要实现净切换:视频流切换时需要在视频帧边界切换,并且切换时切出视频流和切入视频流能够在时间维度上正好衔接,不能多帧或少帧,即不会发生视频损伤(如黑屏、花屏、滚屏或者静帧等)。
如图2所示,切入视频流A在第4帧开始转发,切出视频流B在第4帧开始丢弃。
2、音频流跟随视频流同步切换:音频流的切换点与视频流的切换点在时间维度上尽可能接近,音频流不能提前或滞后视频流切换。
如下图3所示,视频流在V4帧开始切换,此时V4帧的时间戳为TS_v,那么音频流的切换点A51报文的时间戳TS_a,要与TS_v在同一时间维度上尽可能接近。
但IP网络设备在设计之初,并没有考虑到制播网的特点,也没有考虑对视频流进行处理。IP网络设备以报文为单位进行转发,不会对其中承载的视频流识别帧边界进行转发(切换),更不会在时间维度上对齐视频流和音频流。因此,现在使用切换设备对视频流和音频流进行切换时发现:切换设备未考虑音频流和视频流间关系、开始/停止组播转发时位置随机,导致切换画面出现各种损伤,如像素点缺失、重叠、帧不同步等,音视频不同步等。
基于此,本申请实施例提供一种音频流和视频流同步切换方法及装置,用以解决现有技术中存在的无法完成同步切换的问题。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
参见图4A所示,为本申请实施例提供的音频流和视频流同步切换方法流程图。方法包括步骤S401-S405。
S401,切换设备接收切换指令,所述切换指令指示从传输的第一音频流切换到第二音频流以及从传输的第一视频流切换到第二视频流。
S402,所述切换设备确定所述第一视频流的切换点的视频参数值,以及确定所述第二视频流的切换点的视频参数值。所述视频参数值包括时间戳和/或序列号。
S403,所述切换设备根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的音频参数值,所述音频参数值包括时间戳和/或序列号。
应理解的是,在视频参数值仅包括序列号时,所述切换设备在执行S403之前,先确定所述第一视频流的切换点的时间戳,以及所述第二视频流的切换点的时间戳。
S404,所述网络设备将所述第一视频流中视频参数值大于所述第一视频流的切换点的视频参数值的报文切换为所述第二视频流中视频参数值大于所述第二视频流的切换点的视频参数值的报文,并将第一音频流中音频参数值大于所述第一音频流的切换点的音频参数值的报文切换为所述第二音频流中音频参数值大于所述第二音频流的切换点的音频参数值的报文。
在步骤S402中,所述切换设备确定所述第一视频流的切换点的视频参数值,以及确定所述第二视频流的切换点的视频参数值时,可以通过如下方式实现:
所述切换设备根据第一视频流的第一报文的时间戳和第二视频流的第二报文的时间戳,确定所述第一视频流和第二视频流的同步关系,所述第一报文所属的第一视频流中的第一视频帧的接收时间与所述第二报文所属的第二视频流中的第二视频帧的接收时间段存在重叠;所述切换设备根据所述同步关系和所述第一报文的时间戳确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的时间戳确定所述第二视频流的切换点的视频参数值,所述视频参数值包括时间戳和/或序列号。
需要说明的是,第一视频帧和第二视频帧的接收时间段存在重叠是指封装所述第一视频帧的报文的接收时间段和封装所述第二视频帧的报文的接收时间段存在重叠。
示例性的,第一报文可以是第一视频帧的帧尾报文,第二报文是第二视频帧的帧尾报文,或者第一报文是第一视频帧中的第i个报文,第二报文是第二视频帧中的第i个报文,或者,第一报文可以是第一视频帧的帧头报文,第二报文可以是第二视频帧的帧头报文。本申请实施例中所述的报文可以是实时传输协议(real-time transport protocol,RTP)报文。
需要说明的是,视频的每个视频帧封装在多个报文中传输,将封装每个视频帧的多个报文中的最后一个报文称为帧尾报文。本申请实施例中所说的视频帧指的是未压缩视频帧,可以是YUV(其中,“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度(Chrominance、Chroma))视频帧或RGB(其中,R表示红色(red),G表示绿色(green),B表示蓝色(blue))视频帧,同一视频流的单个视频帧的报文数量(即封装该视频流的一个视频帧所需的报文的数量)一般是相同的,通常可以多达数千个。
以RTP报文为例,根据请求评议(request for comments,RFC)3550制定的RTP报文头格式,参见图4B所示,RTP报文头中的标记(marker,M)字段的值用于表示该RTP报文是否为帧尾报文。如果M的值为1,表示该RTP报文为帧尾报文,如果为0,表示该RTP报文不是帧尾报文。音频的每个音频帧通常各封装在一个报文中传输。图4B中,其它字段的含义说明如下:
V表示版本,V=2表示RTP版本。P为填充标识,占1比特位,如设置填充位,在包尾将包含附加填充字,它不属于有效载荷。X为扩展位。PT表示载荷类型。sequence number表示RTP报文的序列号,序列号随每增加一个RTP报文而增加1。Timestamp表示时间戳。SSRC(synchornization source)表示同步源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。
在步骤S405中所述切换设备将第一音频流中音频参数值大于所述第一音频流的切换点的音频参数值的报文切换为所述第二音频流中音频参数值大于所述第二音频流的切换点的音频参数值的报文,即所述切换设备丢弃第一音频流中音频参数值大于所述第一音频流的切换点的音频参数值的报文,并转发所述第二音频流中音频参数值大于所述第二音频流的切换点的音频参数值的报文。需要说明的是,所述切换设备在确定所述第一音频流的切换点的音频参数值后,有可能会接收到第一音频流中音频参数值小于或等于所述第一音频流的切换点的音频参数值的报文,则可以转发这部分,在第一音频流中,音频参数值小于或等于所述第一音频流的切换点的音频参数值的报文。另外,对于在确定所述第二音频流的切换点的音频参数值后接收的小于或等于所述第二音频流的切换点的音频参数值的报文,则可以丢弃掉。
同理,在所述切换设备将第一视频流中视频参数值大于所述第一视频流的切换点的视频参数值的报文切换为所述第二视频流中视频参数值大于所述第二视频流的切换点的视频参数值的报文,即所述切换设备丢弃第一视频流中视频参数值大于所述第一视频流的切换点的视频参数值的报文,并转发所述第二视频流中视频参数值大于所述第二视频流的切换点的视频参数值的报文。需要说明的是,所述切换设备在确定所述第一视频流的切换点的视频参数值后,有可能会接收到第一视频流中视频参数值小于或等于所述第一视频流的切换点的视频参数值的报文,则可以转发这部分,在第一视频流中,视频参数值小于或等于所述第一视频流的切换点的视频参数值的报文。另外,对于在确定所述第二视频流的切换点的视频参数值后接收的小于或等于所述第二视频流的切换点的视频参数值的报文,则可以丢弃掉。
在一种可能的示例中,切换设备可以通过同一端口或者不同的端口来输出音频流和视频流。一种示例中,以同一端口输出音频流和视频流的情况下,切换设备中包括至少两个输出端口的情况下,比如端口1和端口2。端口1用于连接监控设备,端口2用于连接下游设备。在执行切换之前,切换设备通过端口1将第一音频流、第二音频流,以及第一视频流和第二视频流发送给监控设备,通过端口2将第一音频流和第一视频流发送给下游设备,第二音频流和第二视频流在端口2不执行转发,可以认为是丢弃。在执行切换后,切换设备还是通过端口1将第一音频流、第二音频流,以及第一视频流和第二视频流发送给监控设备,在端口2,将第二音频流和第二视频流转发给下游设备,而第一音频流和第一视频流不再转发给下游设备,可以认为第一音频流和第一视频流在端口2是丢弃。另一种示例中,以不同端口输出音频流和视频流的情况下,切换设备中包括至少四个输出端口的情况下,比如端口1、端口2、端口3以及端口4。端口1用于传输音频流,且连接监控设备,端口2用于传输音频流,且连接下游设备,端口3用于传输视频流,且连接监控设备,端口4用于传输视频流,且连接下游设备。在执行切换之前,切换设备通过端口1将第一音频流和第二音频流发送给监控设备,通过端口2将第一音频流发送给下游设备,第二音频流在端口2不执行转发,可以认为是丢弃。切换设备通过端口3将第一视频流和第二视频流发送给监控设备,通过端口4将第一视频流发送给下游设备,第二视频流在端口4不执行转发,可以认为是丢弃。在执行切换后,切换设备还是通过端口1将第一音频流和第二音频流发送给监控设备,在端口2,将第二音频流转发给下游设备,而第一音频流不再转发给下游设备,可以认为第一音频流在端口2是丢弃。切换设备通过端口3将第一视频流和第二视频流发送给监控设备,在端口4,将第二视频流转发给下游设备,而第一视频流不再转发给下游设备,可以认为第一视频流在端口4是丢弃。
可选地,所述切换指令中还可以携带端口号,用于指示执行切换输出音频流和视频流的端口。
本申请实施例中,所述切换设备在分别针对视频流和音频流进行切换时,确定的切换点的音频参数值可以与切换点的视频参数值可以相同也可以不同,比如,针对视频流进行切换时采用的视频参数值可以采用时间戳和/或序列号,而针对音频流进行切换时采用的音频参数值可以采用时间戳和/或序列号。其中,组合起来存在如下8种方式:
1)、视频参数值为时间戳,音频参数值为序列号;
2)、视频参数值为序列号,音频参数值为时间戳;
3)、视频参数值为时间戳,音频参数值为时间戳;
4)、视频参数值为序列号,音频参数值为序列号;
5)、视频参数值为时间戳和序列号,音频参数值为时间戳;
6)、视频参数值为时间戳和序列号,音频参数值为序列号;
7)、视频参数值为时间戳,音频参数值为时间戳和序列号;
8)、视频参数值为序列号,音频参数值为序列号和时间戳。
如下针对视频的时间戳、视频的序列号以及音频的时间戳、音频的序列号的确定方式进行详细描述。
在一种示例中,以所述视频参数值包括时间戳为例,所述切换设备根据所述同步关系和所述第一报文的时间戳确定所述第一视频流的切换点的时间戳,以及根据所述同步关系以及所述第二报文的时间戳确定所述第二视频流的切换点的时间戳时,可以通过如下方式实现:
所述切换设备根据所述同步关系、所述第一报文的时间戳和所述第一视频流的视频帧时长确定所述第一视频流的切换点的时间戳,以及根据所述同步关系、所述第二报文的时间戳和所述第二视频流的视频帧时长确定所述第二视频流的切换点的时间戳。
本申请实施例中,本申请实施例中用于确定同步关系的第一视频帧和第二视频帧的接收时间存在重叠,也就是说,第一视频帧和第二视频帧接收时间尽可能邻近。
以第一报文和第二报文为帧尾报文为例。切换设备可以将确定切换点之前(如接收到切换指令之前)接收的第一视频流和第二视频流的倒数第x个(如倒数第一个)帧尾报文分别作为第一报文和第二报文,其中x为自然数。需要说明的是,如果在收到切换指令后立即确定切换点,可以认为接收到切换指令的时间即为确定切换点的时间;如果收到切换指令后再在既接收到第一视频流的至少一个帧尾报文又接收到第二视频流的至少一个帧尾报文后确定切换点,则既接收到第一视频流的至少一个帧尾报文又接收到第二视频流的至少一个帧尾报文的时间即为确定切换点的时间,如,在接收到切换指令之后相继接收到第一视频流的帧尾报文a和第二视频流的帧尾报文b,在接收到帧尾报文b后立即确定切换点,则接收到帧尾报文b的时间即为确定切换点的时间,将帧尾报文a和帧尾报文b分别作为第一报文和第二报文,又如,在接收到切换指令之后相继接收到第一视频流的帧尾报文c、帧尾报文d和第二视频流的帧尾报文e,在接收到帧尾报文e后立即确定切换点,则接收到帧尾报文e的时间即为确定切换点的时间,将帧尾报文d和帧尾报文e分别作为第一报文和第二报文。切换设备也可以将接收到切换指令之后接收的第一视频流和第二视频流的第y个(如第一个)帧尾报文分别作为第一报文和第二报文,其中y为自然数。相应地,第一报文和第二报文分别所属的视频帧就是第一视频帧和第二视频帧。由于第一视频流和第二视频流的失步程度通常不会超过一帧,即第一报文和第二报文的接收时间通常不会超过一帧的时长,所以第一视频帧的接收时间段与第二视频帧的接收时间段一般会存在重叠。
在具体实现时,确定第一报文和第二报文时,存在多种具体的确定方式,如下示例3种:
第一种可行的方式,第一视频帧为接收到切换指令时所接收的第一视频流中的视频帧,第二视频帧为接收到切换指令时所接收的第二视频流中的视频帧。
比如,参见图5所示的第一视频流和第二视频流,第一视频帧为A3,第二视频帧为B3。
也就是说,第一报文是接收到切换指令后所接收到的第一视频流中的第一个帧尾报文,该第一视频流中的第一个帧尾报文为接收到切换指令时所接收到的第一视频流中的视频帧的帧尾报文。第二报文是接收到切换指令后所接收到的第二视频流中的第一个帧尾报文,该第二视频流中的第一个帧尾报文为接收到切换指令时所接收到的第二视频流中的视频帧的帧尾报文。
第二种可行的方式,第一视频帧为接收到切换指令时所接收的第一视频流中的视频帧的前一个视频帧,第二视频帧为接收到切换指令时所接收的第二视频流中的视频帧的前一个视频帧。
比如,参见图5所示的第一视频流和第二视频流,第一视频帧为A2,第二视频帧为B2。
也就是说,第一报文是接收到切换指令前所接收到的第一视频流中的最后一个帧尾报文,该切换指令前所接收到的第一视频流中的最后一个帧尾报文为接收到切换指令时所接收到的第一视频流中的视频帧的前一个视频帧的帧尾报文。第二报文是接收到切换指令前所接收到的第二视频流中的最后一个帧尾报文,该切换指令前所接收到的第二视频流中的最后一个帧尾报文为接收到切换指令时所接收到的第二视频流中的视频帧的前一个视频帧的帧尾报文。
第三种可行的方式,两个视频流的视频帧时长并非预先确定的,并且是在接收到切换指令后确定的,则第一视频帧可以是在完成确定视频帧时长时所接收到的第一视频流的视频帧,第二视频帧可以是在完成确定视频帧时长时所接收到的第二视频流的视频帧。当然,如果还需要计算其它音视频信息的情况下,比如音频流的采样率、音频流的报文时长、视频帧包括的报文数量等,则第一视频帧可以是在完成确定所需确定的所有音视频信息时所接收到的第一视频流的视频帧,第二视频帧可以是在完成确定所需确定的所有参数时所接收到的第二视频流的视频帧。
也就是说,第一报文是完成确定音视频信息后所接收到的第一视频流中的第一个帧尾报文,该第一视频流中的第一个帧尾报文为完成确定音视频信息时所接收到的第一视频流中的视频帧的帧尾报文。第二报文是完成确定音视频信息后所接收到的第二视频流中的第一个帧尾报文,该第二视频流中的第一个帧尾报文为完成确定音视频信息时所接收到的第二视频流中的视频帧的帧尾报文。
作为一种示例,如下示例性描述根据第一视频帧的第一报文和第二视频帧的第二报文确定两个视频流的同步关系,以第一报文和第二报文均为帧尾报文为例,通过比较第一视频流选择的帧尾报文(第一报文)和第二视频流选择的帧尾报文(第二报文)的时间戳确定第一视频流和第二视频流的同步关系。考虑到切入视频流、切出视频流不太可能完全同步,本申请实施例中可以将同步关系可以分为基本同步、切出视频流落后于切入视频流、切出视频流领先切入视频流三种情况。考虑到不同的设备本身就有精度偏差,同一个时刻从不同发送设备发出的视频流,其时间戳TS可能会有偏差;而且视频流中是以报文为单位,报文转发的抖动也会引入一些同步偏差。因此,如果两个视频流的帧尾报文的时间戳偏差小于第一阈值则认为两个视频流同步,为了描述方便,后续描述时,将第一阈值称为同步偏差。比如,第一阈值可以基于两个视频流的视频帧时长确定,本申请实施例中两个视频流的视频帧时长相同,比如均为T。第一阈值可以配置为T/4。第一阈值还可以基于视频源端时钟同步精度来确定,比如根据实际情况也可以配置为T/5、T/10等值。
作为一种示例,在确定所述第一视频流的切换点的时间戳,以及所述第二视频流的切换点的时间戳时,可以通过多种方式实现,以下示例三种可行的方式。
第一种可行的方式是,如果第一视频流和第二视频流同步,可以将第一视频流的第一报文的时间戳作为第一视频流的切换点的时间戳,将第二视频流的第二报文的时间戳作为第二视频流的切换点的时间戳。该方式可以适用于采用选择第一视频帧和第二视频帧的第二种可行的方式或者第三种可行的方式。
第二种可行的方式是,如果第一视频流和第二视频流同步,可以针对第一视频流和第二视频流在第一种可行的实现方式确定的切换点的时间戳的基础上增加一定时延后作为切换点的时间戳。该方式可以适用于采用确定第一报文和第二报文的第一种可行的方式、第二种可行的方式或者第三种可行的方式。
示例性的,若所述第一视频流和所述第二视频流同步,则TS_sw_v1=FT_TS1+N*T1,TS_sw_v2=FT_TS2+N*T2。
其中,T1表示第一视频流的视频帧时长,T2表示所述第二视频流的视频帧时长,TS_sw_v1表示所述第一视频流的切换点的时间戳,TS_sw_v2表示所述第二视频流的切换点的时间戳,FT_TS1表示所述第一报文的时间戳,FT_TS2表示所述第二报文的时间戳,N为大于0的整数。作为一种示例,第一视频流的视频帧时长与第二视频流的视频帧时长可以相同。
第三种可行的方式是,如果第一视频流和第二视频流失步(即不同步),可以针对第一视频流和/或第二视频流增加一定时延(比如失步时长)后作为切换点的时间戳。如果第二视频流早于第一视频流,第一视频流增加一定时延(比如失步时长)作为切换点,从而第一视频流同步至第二视频流。考虑到乱序的情况的话,可以再在第二视频流和增加一定时延的第一视频流的基础上再分别增加一定时延作为切换点;如果第二视频流晚于第一视频流,第二视频流增加一定时延(比如失步时长)作为切换点,从而第二视频流同步至第一视频流,考虑到乱序的情况的话,可以在同步后的第一视频流和第二视频流的基础上再分别增加一定时延作为切换点。该方式可以适用于采用选择第一报文和第二报文的第一种可行的方式、第二种可行的方式或者第三种可行的方式。
示例1,若所述第一视频流晚于所述第二视频流,则TS_sw_v1=FT_TS1+(N+1)*T1,TS_sw_v2=FT_TS2+N*T2;或者,
若所述第一视频流早于所述第二视频流,则TS_sw_v1=FT_TS1+N*T1,TS_sw_v2=FT_TS2+(N+1)*T2。
示例2,若所述第一视频流晚于所述第二视频流,则TS_sw_v1=FT_TS1+(N+K1)*T1,TS_sw_v2=FT_TS2+N*T2;其中,T1=T2=T,
Figure BDA0001981522620000151
Figure BDA0001981522620000152
表示向上取整,0≤L<1;N为大于0的整数。
作为一种示例,考虑到切入视频流、切出视频流不太可能完全同步,在确定不同步的两个视频流的切换点的时间戳时,可以将同步偏差考虑进来,比如L表示同步偏差系数。例如,L=T/4时,所述第一视频流晚于所述第二视频流时,第二报文时间戳与第一报文的时间戳差大于T/4时且小于5T/4,则K1=1。
若所述第一视频流早于所述第二视频流,则TS_sw_v1=FT_TS1+N*T1,TS_sw_v2=FT_TS2+(N+K2)*T2;其中,其中,T1=T2=T,
Figure BDA0001981522620000161
比如,L=0时,第一报文时间戳与第二报文的时间戳差小于视频帧时长T,则K2=1。
在一种示例中,以所述视频参数值包括序列号为例,则所述切换设备根据所述同步关系和所述第一报文的视频参数值确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的视频参数值确定所述第二视频流的切换点的视频参数值时,可以通过如下方式实现:
一种方式是:根据同步关系、所述第一报文的时间戳和所述第一视频流的视频帧时长确定所述第一视频流的切换点的时间戳,根据所述第一视频流的切换点的时间戳确定所述第一视频流的切换点的序列号;以及根据所述同步关系、所述第二报文的时间戳和所述第二视频流的视频帧时长确定所述第二视频流的切换点的时间戳,根据所述第二视频流的切换点的时间戳确定第二视频流的切换点的序列号。例如,在确定切换点的时间戳后,根据切换点的时间戳、第一报文的序列号、视频帧包括的报文数量来确定切换点的序列号。具体的,切换点与第一报文之间的关系,可以根据第一报文的时间戳以及切换点的时间戳确定,比如第一报文和切换点之间相差一个视频帧,则可以在第一报文的序列号的基础上加上视频帧包括的报文数量即为切换点的序列号。
另一种方式是:所述切换设备根据所述同步关系、所述第一报文的序列号和所述第一视频流的视频帧的报文数量确定所述第一视频流的切换点的序列号,以及根据所述同步关系、所述第二报文的序列号和所述第二视频流的视频帧的报文数量确定所述第二视频流的切换点的序列号。
示例性的,所述第一视频流的视频帧的报文数量基于接收到的所述第一视频流中的相邻两个视频帧的帧尾报文的序列号差确定,所述第二视频流的视频帧的报文数量基于接收到的所述第二视频流中的相邻两个视频帧的帧尾报文的序列号差确定;或者,所述第一视频流的视频帧的报文数量基于接收到的所述第一视频流中的相邻两个视频帧的帧头报文的序列号差确定,所述第二视频流的视频帧的报文数量基于接收到的所述第二视频流中的相邻两个视频帧的帧头报文的序列号差确定。其中,第一视频流的视频帧的报文数量与第二视频流的视频帧的报文数量相等时,可以仅确定第一视频流的视频帧的报文数量或者仅确定第二视频流的视频帧的报文数量。
作为一种示例,在根据所述同步关系、所述第一报文的序列号和所述第一视频流的视频帧的报文数量确定所述第一视频流的切换点的序列号,以及根据所述同步关系、所述第二报文的序列号和所述第二视频流的视频帧的报文数量确定所述第二视频流的切换点的序列号,可以通过多种方式实现,以下示例三种可行的方式。
第一种可行的方式是,如果第一视频流和第二视频流同步,可以将第一视频流的第一报文的序列号作为第一视频流的切换点的序列号,将第二视频流的第二报文的序列号作为第二视频流的切换点的序列号。该方式可以适用于采用选择第一视频帧和第二视频帧的第二种可行的方式或者第三种可行的方式。
第二种可行的方式是,如果第一视频流和第二视频流同步,可以针对第一视频流和第二视频流在第一种可行的实现方式确定的切换点的序列号的基础上增加一定数量的报文后作为切换点的序列号。该方式可以适用于采用选择第一报文和第二报文的第一种可行的方式、第二种可行的方式或者第三种可行的方式。
示例性的,若所述第一视频流和所述第二视频流同步,则SN_sw_v1=FT_SN1+N*M1,SN_sw_v2=FT_SN2+N*M2。
其中,M1表示所述第一视频帧包括的报文数量,M2表示所述第二视频帧包括的报文数量。SN_sw_v1表示所述第一视频流的切换点的序列号,SN_sw_v2表示所述第二视频流的切换点的序列号,FT_SN1表示所述第一报文的序列号,FT_SN2表示所述第二报文的序列号,N为大于0的整数。比如,所述第一视频流的视频帧包括的报文数量和所述第二视频流的视频帧包括的报文数量相同,即M1=M2。
第三种可行的方式是,如果第一视频流和第二视频流失步(即不同步),可以针对第一视频流和/或第二视频流增加一定数量的报文后作为切换点。如果第二视频流早于第一视频流,第一视频流增加一定数量的报文作为切换点,从而第一视频流同步至第二视频流。考虑到乱序的情况的话,可以再在第二视频流和增加一定数量的报文的第一视频流的基础上再分别增加一定数量报文作为切换点;如果第二视频流晚于第一视频流,第二视频流增加一定数量报文作为切换点,从而第二视频流同步至第一视频流,考虑到乱序的情况的话,可以在同步后的第一视频流和第二视频流的基础上再分别增加一定数量报文作为切换点。该方式可以适用于采用选择第一视频帧和第二视频帧的第一种可行的方式、第二种可行的方式或者第三种可行的方式。
示例性的,所述第一视频流的切换点的序列号,以及所述第二视频流的切换点的序列号满足如下条件:
示例1,若所述第一视频流晚于所述第二视频流,则SN_sw_v1=FT_SN1+(N+1)*M1,SN_sw_v2=FT_SN2+N*M2;或者,
若所述第一视频流早于所述第二视频流,则SN_sw_v1=FT_SN1+N*M1,SN_sw_v2=FT_SN2+(N+1)*M2。
示例2,若所述第一视频流晚于所述第二视频流,则SN_sw_v1=FT_SN1+(N+K1)*M1,SN_sw_v2=FT_SN2+N*M2;或者,
若所述第一视频流早于所述第二视频流,则SN_sw_v1=FT_SN1+N*M1,SN_sw_v2=FT_SN2+(N+K2)*M2;
其中,
Figure BDA0001981522620000171
Figure BDA0001981522620000172
表示向上取整,T表示所述第一视频流的视频帧时长或者所述第二视频流的视频帧时长,所述第一视频流的视频帧时长和所述第二视频流的视频帧时长相同,0≤L<1,FT_TS1表示所述第一报文的时间戳,FT_TS2表示所述第二报文的时间戳。
作为一种示例,所述切换设备根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的音频参数值时,音频参数值可以是时间戳。也就是在确定音频流的切换点时,根据视频流的切换点的时间戳确定音频流的切换点的时间戳。具体的,所述切换设备根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的时间戳,以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的时间戳,可以通过如下方式实现:
所述切换设备根据所述第一视频流的切换点的时间戳、所述第一视频流的视频帧时长、所述第一视频流的时钟频率和所述第一音频流的采样率确定所述第一音频流的切换点的时间戳,以及所述切换设备根据所述第二视频流的切换点的时间戳、所述第二视频流的视频帧时长、所述第二视频流的时钟频率和所述第一音频流的采样率确定所述第一音频流的切换点的时间戳。
示例性的,所述第一音频流的切换点的时间戳和所述第二音频流的切换点的时间戳满足如下条件:
TS_sw_a1=(TS_sw_v1+T-TS_ref_v)*frequency_a1/frequency_v1+TS_ref_a;
TS_sw_a2=(TS_sw_v2+T-TS_ref_v)*frequency_a1/frequency_v1+TS_ref_a;
其中,TS_sw_a1表示第一音频流的切换点的时间戳,TS_sw_v1表示第一视频流的切换点的时间戳,TS_sw_a2表示第二音频流的切换点的时间戳,TS_sw_v2表示第二视频流的切换点的时间戳,T为所述第一视频流的视频帧时长或者所述第二视频流的视频帧时长,所述第一视频流的视频帧时长和所述第二视频流的视频帧时长相同,TS_ref_v表示以第一时间为基准确定的视频流的参考时间戳,TS_ref_a表示以第一时间为基准确定的音频流参考时间戳,所述第一时间为所述切换设备上的任一历史时间,frequency_a1为所述第一音频流的采样率,frequency_v2为所述第二音频流的采样率,frequency_v1为所述第一视频流的时钟频率,frequency_v2为所述第二视频流的时钟频率。作为一种示例,本申请实施例中,所述第一视频流的时钟频率和所述第二视频流的时钟频率可以相同或者近似相等,所述第一音频流的采样率于第二音频流的采样率可以相同或者近似相等。
所述切换设备上的任一历史时间是指历史某个时刻距离SMPTE规定的时间历元的秒数。比如,所述切换设备上的任一历史时间可以是在确定切换点的时间戳时的设备当前时间、或者确定切换点的时间戳前的设备所经历的任一时间。
示例性的,以在确定音频流参考时间戳和视频流参考时间戳时,将在确定切换点的时间戳时的设备当前时间作为第一时间为例,即可以根据在确定切换点的时间戳时设备当前时间作为第一时间来确定音频流参考时间戳和视频流参考时间戳。
比如,获取设备当前时间curtime,并根据curtime计算视频流参考时间戳TS_ref_v和音频流参考时间戳TS_ref_a:
TS_ref_v=(curtime*frequency_v)mod(2^32);
TS_ref_a=(curtime*frequency_a)mod(2^32)。
其中,设备当前时间可以是当前时间距离SMPTE规定的时间历元的秒数。32表示时间戳所占的比特数。当然还可以是其它数值,32仅为一种示例。
另外,当音频流的采样率未知时,可通过学习音频流相邻两个报文的时间戳差来估算采样率,所述第一音频流的采样率基于接收到的所述第一音频流中的任两个报文的时间戳和序列号确定,或者,所述第二音频流的采样率基于接收到的所述第二音频流中的任两个报文的时间戳和序列号确定。当然第一音频流的采样率与第二音频流的采样率相同时,可以仅确定所述第一音频流的采样率和所述第一音频流的采样率中的一个即可。
另外,为了提高确定两个报文的时间戳差的准确度,可以通过估计多组相邻报文的时间戳差的平均值来估算采样率。
参见表1所示,示例性地示出了SMPTE 2110规定的44.1kHz、48kHz、96k三种采样率,以及125us和1ms两种报文时长与序列号相邻的两个报文时间戳差的理论值。
表1
Figure BDA0001981522620000181
Figure BDA0001981522620000191
相邻两个报文的时间戳差avgTS可通过任两个报文时间戳之差T及两个报文序列号之差M来计算:
avgTS=T/M。
在通过任两个报文的时间戳差avgTS来估算采样率时,可以通过如下方式实现:
若avgTS<A,则frequency_a=44.1kHz。示例性的,A取值可以是小于或者等于6且大于5.5的数,比如A取值为6。
若avgTS>=A且avgTS<B,则frequency_a=48kHz。示例性的,B取值可以是小于12且大于6的数,比如B取值为9。
若avgTS>=B且avgTS<C,则frequency_a=96kHz。示例性的,C取值可以是小于44且大于12的数,比如C取值为15。
若avgTS>=D且avgTS<E,则frequency_a=44.1kHz。示例性的,D取值可以是大于或者等于C且小于44.1的数,比如D取值为40。E取值可以是小于或者等于48的数,且大于44.1的数,比如E取值为46。
若avgTS>=E且avgTS<F,frequency_a=48kHz。示例性的,F取值可以是小于或者等于96的数,且大于48的数,比如F取值为50。
若avgTS>=F且avgTS<G,frequency_a=96kHz。示例性的,G取值可以大于96的数,比如G取值为120。
另外,avgTS不满足上述任一条件时,可以默认采样率为预设的采样率。预设的采样率为上述44.1kHz、48kHz和96kHz中的一个,比如为48kHz。
在一种可能的示例中,在对音频流进行切换时,采用的音频参数值包括序列号时,可以根据音频流的切换点的时间戳来确定音频流的切换点的序列号。具体的,所述切换设备根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的时间戳,并根据所述第一音频流的切换点的时间戳确定所述第一音频流的切换点的序列号;以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的时间戳,并根据所述第二音频流的切换点的时间戳确定所述第二音频流的切换点的序列号。
示例性的,所述第一音频流的切换点的序列号和所述第二音频流的切换点的序列号满足如下条件:
SN_sw_a1=SN1+(TS_sw_a1–TS1)/AvgTS1;
SN_sw_a2=SN2+(TS_sw_a2–TS2)/AvgTS2;
其中,AvgTS1=packetTime1*frequency_a1,AvgTS2=packetTime2*frequency_a2,packetTime1为所述第一音频流的报文时长,packetTime2为所述第二音频流的报文时长,frequency_a1表示所述第一音频流的采样率,frequency_a2表示所述第二音频流的采样率,TS_sw_a1表示所述第一音频流的切换点的时间戳,TS_sw_a2表示所述第二音频流的切换点的时间戳;SN_sw_a1表示所述第一音频流的切换点的序列号,SN_sw_a2表示所述第二音频流的切换点的序列号;SN1表示第一音频流中第三报文的序列号,TS1表示所述第三报文的时间戳,SN2表示所述第二音频流中第四报文的序列号,TS2表示所述第四报文的时间戳;所述第三报文为所接收到的第一音频流中的任一报文,所述第四报文为所接收到的第二音频流中的任一报文。
示例性的,在确定音频流的报文时长时,可以根据相邻报文时间戳差来确定。示例1,根据表1可知125us和1ms分别对应的两个报文时间戳差的理论值差异较为明显,从而可以设置一个阈值dTSthres,可以根据实际接收计算出的报文时间戳差avgTS与该dTSthres的比较结果来确定报文时间为125us或者为1ms。比如,当avgTS<dTSthres时,音频流的报文时长为第一数值,比如tpacket=125us;当avgTS≥dTSthres时,音频流的报文时长为第二数值,比如tpacket=1ms。示例性的,dTSthres取值可以选择大于12且小于44.1的数值,为了保证较好判定报文时长,可以选择位于12和44.1中间的数值,比如25。示例2,在确定音频流的采样率时,根据确定的采样率来确定报文时长,比如,确定的采样率为5.5、6或者12时,报文时长为125us,当确定的采样率为44.1、48或者96时,报文时长为1ms。
此外,本申请实施例中音频流的报文时长和/或采样率可以是预先配置给切换设备的,也可以是由切换设备根据接收到的报文预先确定。用来确定报文时长和/或采样率的音频流中的报文可以是在接收到切换指令前接收的,也可以是在接收到切换指令后接收的。为了描述方便,后续将音频流的报文时长和/或采样率统称为音频流信息。下面以两种可能的示例进行说明。以确定报文时长和/或采样率的报文为两个报文为例。由于第一音频流和第二音频流的报文时长和采样率均相等,因此,可以在第一音频流和第二音频流选择一个音频流中报文,确定音频流的报文时长和/或采样率。后续描述时,以采用第一音频流中的两个报文来确定报文时长和采样率为例。
示例1,所述两个报文可以为在接收到所述切换指令后接收的第一音频流中的前两个报文。
示例2,所述两个报文可以为在接收到所述切换指令前接收的第一音频流中的两个报文。
另外,本申请实施例中视频流的视频帧时长和视频帧包括的报文数量可以是预先配置给切换设备的,也可以是由切换设备根据接收到的视频流中相邻的两个帧尾报文或者帧头报文来确定的。为了描述方便,后续将视频流的视频帧时长和视频帧包括的报文数量统称为视频流信息。一种方式是,所述第一视频流的视频帧时长可以基于接收到的所述第一视频流中的相邻两个视频帧的帧尾报文的时间戳差确定,所述第二视频流的视频帧时长基于接收到的所述第二视频流中的相邻两个视频帧的帧尾报文的时间戳差确定。换句话说,所述第一视频流的视频帧时长可以基于接收到的所述第一视频流中的相邻两个帧尾报文的时间戳差确定,第二视频流的视频帧时长可以基于接收到的所述第二视频流中的相邻两个帧尾报文的时间戳确定。所述第一视频流的视频帧包括的报文数量可以基于接收到的所述第一视频流中的相邻两个视频帧的帧尾报文的序列号差确定,所述第二视频流的视频帧包括的报文数量基于接收到的所述第二视频流中的相邻两个视频帧的帧尾报文的序列号差确定。换句话说,所述第一视频流的视频帧包括的报文数量可以基于接收到的所述第一视频流中的相邻两个帧尾报文的序列号差确定,所述第二视频流的视频帧包括的报文数量基于接收到的所述第二视频流中的相邻两个帧尾报文的序列号差确定。
另一种方式是,所述第一视频流的视频帧时长基于接收到的所述第一视频流中的相邻两个视频帧的帧头报文的时间戳差确定,所述第二视频流的视频帧时长基于接收到的所述第二视频流中的相邻两个视频帧的帧头报文的时间戳差确定。所述第一视频流的视频帧包括的报文数量可以基于接收到的所述第一视频流中的相邻两个视频帧的帧头报文的序列号差确定,所述第二视频流的视频帧包括的报文数量基于接收到的所述第二视频流中的相邻两个视频帧的帧头报文的序列号差确定。
作为一种示例,第一视频流与第二视频流的视频帧时长和视频帧包括的报文数量相同时,在确定视频帧时长和视频帧包括的报文数量时,可以在第一视频流和第二视频流中选择一个视频流,来确定视频流的视频帧时长。
示例3,所述第一视频流中的相邻两个视频帧为在接收到所述切换指令前接收到的所述第一视频流中两个视频帧,所述第二视频流中的相邻两个视频帧为在接收所述切换指令前接收到的所述第二视频流中的两个视频帧。也就是说,在接收到切换指令前即已计算好视频流的视频帧时长和视频帧包括的报文数量。
示例4,所述第一视频流中的相邻两个视频帧为在接收到所述切换指令时接收到的所述第一视频流中报文所在的视频帧及其下一个视频帧,所述第二视频流中的相邻两个视频帧为在接收所述切换指令时接收到的所述第二视频流的报文所在的视频帧及其下一个视频帧。也就是说,在接收到切换指令时才启动计算视频流的视频帧时长和视频帧包括的报文数量。
在本申请实施例中,在第一种场景下。音频流信息是预先配置给切换设备的,并且视频流信息也是预先配置给切换设备的。在确定第一报文和第二报文时,可以采用第一种可行的方式或者第二种可行的方式。具体的,以第一报文和第二报文均为帧尾报文为例,第一报文可以为接收到切换指令后所接收的第一视频流中的第一个帧尾报文,第二报文为接收到切换指令后所接收的第二视频流中的第一个帧尾报文,或者,第一报文为接收到切换指令前所接收的第一视频流中的最后一个帧尾报文,第二报文为接收到切换指令前所接收的第二视频流中的最后一个帧尾报文。
第二种场景下:音频流信息是预先配置给切换设备的,而视频流信息并非预配置给切换设备。采用示例3所述的相邻两个视频帧来确定视频流信息时,则在确定第一报文和第二报文时,可以采用第一种可行的方式或者第二种可行的方式,当采用示例4所述的相邻两个视频帧来确定视频流信息时,则在选择第一报文和第二报文时,可以采用第三种可行的方式。具体的,第一报文可以是在完成确定视频流信息后所接收到的第一视频流中的第一个帧尾报文,第二报文可以是在完成确定视频流信息后所接收到的第二视频流中的第一个帧尾报文;或者,第一报文可以是在完成确定视频流信息前所接收到的第一视频流中的最后一个帧尾报文,第二报文可以是在完成确定视频流信息前所接收到的第二视频流中的最后一个帧尾报文。
第三种场景下,视频流信息是预先配置给切换设备的,而音频流信息并非预配置给切换设备。采用示例2所述的两个报文来确定音频流信息时,则在选择第一报文和第二报文时,可以采用第一种可行的方式或者第二种可行的方式,当采用示例1所述的两个报文来确定音频流信息时,则在确定第一报文和第二报文时,可以采用第三种可行的方式。具体的,第一报文可以是在完成确定音频流信息后所接收到的第一视频流的第一个帧尾报文,第二报文可以是在完成确定音频流信息后所接收到的第二视频流的第一个帧尾报文。或者,第一报文可以是在完成确定音频流信息前所接收到的第一视频流中的最后一个帧尾报文,第二报文可以是在完成确定音频流信息欠所接收到的第二视频流中的最后一个帧尾报文。
第四种场景下,视频流信息并非是预先配置给切换设备的,音频流信息也并非是预配置给切换设备的。采用示例2所述的两个报文来确定音频流信息,并且采用示例3所述的相邻两个视频帧来确定视频流信息时,则在选择第一报文和第二报文时,可以采用第一种可行的方式或者第二种可行的方式。在该第四种场景下,采用其它示例时,比如示例2和示例4,或者示例1和示例3,或者示例1和示例四,则在确定第一报文和第二报文时,可以采用第三种可行的方式。比如,示例1和示例4,则第一报文可以是在完成确定音频流信息和视频流信息后所接收到的第一视频流的第一个帧尾报文,第二报文可以是在完成确定音频流信息和视频流信息后所接收到的第二视频流的第一个帧尾报文。
下面以基于视频流的时间戳和序列号对视频流进行切换为例,所述切换设备将所述第一视频流中视频参数值大于所述第一视频流的切换点的视频参数值的报文切换为所述第二视频流中视频参数值大于所述第二视频流的切换点的视频参数值的报文,具体可以通过如下方式实现:
针对切出视频流(第一视频流):
1、当一个第一视频流的报文到达时,获取当前报文的RTP时间戳RTP.TS1和RTP序列号RTP.SN1。
2、比较当前报文的RTP.TS1与第一视频流的切换点的时间戳SW_TS1,计算两者的差值diff_TS 1=|RTP.TS1-SW_TS 1|。
3、如果diff_T1大于阈值threshold_TS1,表示当前报文远离切换点,如果RTP.TS1小于或者等于SW_TS1,表示是切换点前的报文所以转发该报文;如果RTP.TS1大于SW_TS1,表示是切换点后的报文所以丢弃该报文。其中,阈值threshold_TS1大于或者等于0,且小于视频帧时长。
4、如果diff_TS1小于或者等于阈值threshold_TS1,表示当前报文在切换点附近,继续比较当前报文的RTP.S1与切换点的SW_SN1;如果RTP.SN1大于SW_SN1表明是切换点后的报文所以丢弃该报文,如果RTP.SN1小于或者等于SW_SN1表明是切换点前的报文所以转发该报文。
需要说明的是,阈值threshold_TS1可以根据切换设备能够容忍的时间戳误差来确定,比如,相邻两个视频帧的时间戳差均固定为T(即视频帧时长),那么该阈值threshold_TS1可设置为0。再比如,可能不是所有的相邻两个视频帧的时间戳差都为T,可能存在偏差,例如,切换设备可容忍的偏差为T/4时,那么该阈值threshold_TS1可设置为T/4。
针对切入视频流(第二视频流):
1、当一个第二视频流的报文到达时,获取当前报文的RTP时间戳RTP.TS2和RTP序列号RTP.SN2。
2、比较当前报文的RTP.TS2与第二视频流的切换点的时间戳SW_TS2,计算两者的差值diff_TS2=|RTP.TS 2-SW_TS2|。
3、如果diff_TS2大于阈值threshold_TS1,表示当前报文远离切换点,如果RTP.TS2小于或者等于SW_TS2,表示是切换点前的报文所以丢弃该报文;如果RTP.TS2大于SW_TS2,表示是切换点后的报文所以转发该报文。
4、如果diff_TS2小于或者等于阈值threshold_TS1,表示当前报文在切换点附近,继续比较当前报文的RTP.S2与切换点的SW_SN2;如果RTP.SN2大于SW_SN2表明是切换点后的报文所以转发该报文,如果RTP.SN2小于等于SW_SN2表明是切换点前的报文所以丢弃该报文。
在一种可能的实现方式中,在针对视频流进行切换处理时,可以根据切换设备能够容忍的时间戳误差,来确定选择基于时间戳来执行切换、或者基于序列号来执行切换,或者基于时间戳或者序列号执行切换。比如,同一视频流中相邻两个视频帧的时间戳差均固定为T(即视频帧时长),在该情况下,可以通过基于时间戳来执行切换,具体通过比较报文时间戳和切换点时间戳,对于切入视频流,如果报文时间戳大于切换点时间戳则转发报文,报文时间戳小于或者等于切换点时间戳则丢弃报文。在该情况下,也可以通过基于序列号来执行切换,具体通过比较报文序列号和切换点的序列号,对于切入视频流,如果报文序列号大于切换点的序列号则转发报文,报文序列号小于或者等于切换点序列号则丢弃报文。再比如,可能不是所有的相邻两个视频帧的时间戳差都为T,可能存在偏差,则可以基于序列号来执行切换,或者基于时间戳和序列号来执行切换。针对具体的基于时间戳和序列号来执行切换的方式如前所述,此处不再赘述。
下面以基于音频流的时间戳对音频流进行切换为例,所述切换设备将所述第一音频流中音频参数值大于所述第一音频流的切换点的音频参数值的报文切换为所述第二音频流中音频参数值大于所述第二音频流的切换点的音频参数值的报文,具体可以通过如下方式实现:
1、当一个第一音频流的报文到达时,获取当前报文的RTP时间戳RTP.TS3和RTP序列号RTP.SN3。
2、比较当前报文的RTP.TS3与第一音频流的切换点的时间戳SW_TS3,计算两者的差值diff_TS 3=|RTP.TS3-SW_TS 3|。
3、如果diff_T3大于阈值threshold_TS2,表示当前报文远离切换点,如果RTP.TS3小于或者等于SW_TS3,表示是切换点前的报文所以转发该报文;如果RTP.TS3大于SW_TS3,表示是切换点后的报文所以丢弃该报文。其中,阈值threshold_TS2大于或者等于0,且小于报文时长。
4、如果diff_TS3小于或者等于阈值threshold_TS2,如果RTP.TS3小于或者等于SW_TS3,表示是切换点后的报文所以丢弃该报文;如果RTP.TS3大于SW_TS3,表示是切换点前的报文所以转发该报文。
针对切入音频流(第二音频流):
1、当一个第二音频流的报文到达时,获取当前报文的RTP时间戳RTP.TS4和RTP序列号RTP.SN4。
2、比较当前报文的RTP.TS4与第二音频流的切换点的时间戳SW_TS4,计算两者的差值diff_TS4=|RTP.TS 4-SW_TS4|;
3、如果diff_TS4大于阈值threshold_TS2,表示当前报文远离切换点,如果RTP.TS4小于或者等于SW_TS4,表示是切换点前的报文所以转发该报文;如果RTP.TS4大于SW_TS4,表示是切换点后的报文所以丢弃该报文;
4、如果diff_TS4小于或者等于阈值threshold_TS2,如果RTP.TS4小于或者等于SW_TS4,表示是切换点后的报文所以转发该报文;如果RTP.TS4大于SW_TS4,表示是切换点前的报文所以丢弃该报文。
下面结合具体应用场景对本申请实施例进行详细说明。
此处以待切换的两个音频流和两个视频流均符合SMPTE 2110标准,音频流和视频流中包括的报文为RTP报文为例。
首先,以两条音频流之间切换、两条视频流切换为例。参见图6所示,为两条待切换的音频流,和两条待切换的视频流。图6中音频流1为切出音频流,音频流2为切入音频流,视频流1为切出视频流,视频流2为切入视频流。
本申请实施例中,针对待切换的两个音频流和两个视频流分别建立一个切换子表,用于记录待切换的两个音频流和两个视频流的切换状态,以及最新报文的信息等。因此,在确定用于确定第一视频流的切换点的参数值的第一报文和第一视频流的切换点的参数值的第二报文时,可以根据两个视频流对应的切换子表来确定。后续为了描述方便将音频流和视频流统称为媒体流。
参见表2所示,示例一种切换子表。
表2
Figure BDA0001981522620000241
切换子表中包括的字段的相关说明如下:
输出端口:表示媒体流从切换设备的哪个端口出。应理解的是,从同一个端口出的媒体流之间可以实现净切换。
流状态:表示该媒体流的当前状态。媒体流的当前状态有如下四种:正常转发流、正常丢弃流、切入流和切出视频流。
流类型:表示媒体类型,包括两种:视频流、音频流。
报文时间戳差:当流类型为视频流时,报文时间戳差记录的是视频流中相邻两个视频帧的帧尾报文的RTP时间戳差;当流类型为音频流时,报文时间戳差记录的是音频流中相邻两个报文的RTP时间戳差。
报文序列号差:当流类型为视频流时,报文序列号差记录的是视频流中相邻两个视频帧尾报文的RTP序列号差;当流类型为音频流时,报文序列号差记录的是音频流中相邻两个报文的RTP序列号差。
报文时间戳:当流类型为视频流时,报文时间戳记录的是视频帧的帧尾报文的RTP时间戳,当流类型为音频流时,报文时间戳记录的是音频流的报文的RTP时间戳。
报文序列号:当流类型为视频流时,报文序列号记录的是视频帧的帧尾报文的RTP序列号,当流类型为音频流时,报文序列号记录的是音频流中报文的RTP序列号。
切换点时间戳:表示确定的切换点位置的RTP报文的时间戳。
切换点序列号:表示确定的切换点位置的RTP报文的序列号。
此外,本申请实施例中还可以建立音频切换总表和视频切换总表,用于实现音视频同步切换。切换总表记录用于切换的媒体流的准备切换的相关信息等。
参见表3所示,示例一种切换总表。
表3
Figure BDA0001981522620000251
切换总表中包括的字段的相关说明如下:
切入流最新报文时戳:该值等于所有切入视频流的切换子表中记录的最新报文的时间戳;
切出视频流最新报文时戳:该值等于所有切出视频流的切换子表中记录的最新报文的时间戳;
切入流位图:切入媒体流准备好切换的位图信息。若4条切入媒体流(2条视频流和2条音频流),则位图可以为4bit,每一bit代表一条媒体流信息,“1”代表对应的媒体流已准备好切换,“0”代表未准备好切换。
切出视频流位图:切出媒体流准备好切换的位图信息。若4条切出媒体流,则位图为4bit,每一bit代表一条媒体流信息,“1”代表对应媒体流已准备好切换,“0”代表未准备好切换。
切入流的切换点的时间戳:表示针对切入视频流的切换点的时间戳。
切出视频流的切换点的时间戳:表示针对切出视频流的切换点的时间戳。
切换点计算完成标记:表示被跟随媒体流是否完成计算切换点。
参见图7所示,示例一种音频流和视频流同步切换方法流程示意图。图7中以接收到切换指令前已经预先获知两条音频流的音频流信息和两条视频流的视频流信息为例。
在接收切换指令前,所有媒体流正常转发或正常丢弃。当前共有4条媒体流:
视频流1:流序号为1,流类型为视频流,流状态为正常转发流;
音频流1:流序号为2,流类型为音频流,流状态为正常转发流;
视频流2:流序号为1,流类型为视频流,流状态为正常丢弃流;
音频流2:流序号为2,流类型为音频流,流状态为正常丢弃流。
S801a,转发视频流1中的报文,不转发视频流2中的报文。
S801b,转发音频流1中的报文,不转发音频流2中的报文。
S802a,更新视频流1的切换子表和视频流2的切换子表。
S802b,更新音频流1的切换子表和音频流2的切换子表。
具体的,根据接收到的媒体流的中报文更新切换子表中的“报文时间戳”和“报文序列号”。针对视频流1和视频流,根据接收到的每个帧尾报文的RTP时间戳和RTP序列号分别更新各自的切换子表中字段“报文时间戳”和“报文序列号”。针对音频流1和音频流2,根据接收到的每个报文的RTP时间戳和RTP序列号分别更新各自的切换子表中“报文时间戳”和“报文序列号”。
S803,接收到切换指令。切换指令用于指示将音频流1切换为音频流2,将视频流1切换为视频流2。
具体的,分别将各自切换子表中的“流状态”改为切出视频流或切入流,同时记录此次切换中同步切换的总媒体流数对。例如收到切换指令后,将视频流1,音频流1分别对应的切换子表中的流状态修改为切出视频流,将视频流2,音频流2的分别对应的切换子表中的流状态修改为切入流,记录此次切换中同步切换的总媒体流数对为2。
S804,更新切换总表。
具体的,更新切换总表中的切出视频流位图、切入流位图、切入流最新报文时间戳和切出视频流最新报文时间戳,具体更新规则如下:
1)、只有当各个媒体流的切换子表中的流状态为切出视频流或切入流,且媒体流的切换点还未计算完成,才需更新切换总表。
2)、更新切换总表中的切入流位图和切出视频流位图,例如视频流1,此时切换子表中流状态为切出视频流,根据流序号1找到切出视频流位图的第1位,当切出视频流位图的第1位的值为0时,将切出视频流位图的第1位置为1,此时切出视频流位图为0001。针对音频流1,流状态为切出视频流,根据流序号2找到切出视频流位图的第2位,当切出视频流位图的第2位的值为0时,将切出视频流位图的第2位置为1,此时切出视频流位图为0011。例如视频流2,此时切换子表中流状态为切入流,根据流序号1找到切入流位图的第1位,当切入流位图的第1位的值为0时,将切入流位图的第1位置为1,此时切入流位图为0001。针对音频流2,流状态为切入流,根据流序号2找到切入流位图的第2位,当切入流位图的第2位的值为0时,将切入流位图的第2位置为1,此时切入流位图为0011。
3)、当流类型为视频流时,还需进一步更新切换总表中的切入流最新报文时间戳和切出视频流最新报文时间戳。更新规则如下:首先将切换子表中报文时间戳与切换总表中对应的最新报文时间戳进行比较,只有切换子表中的报文时间戳大于切换总表中的报文时间戳时,才将报文时间戳更新至切换总表中。比如,切入视频流包括两个,视频流A和视频流B。针对视频流A,根据切换子表的报文时间戳更新切换总表中的切入流报文时间戳。针对视频流B,根据切换子表中的报文时间戳再更新切换总表中的切入流报文时间戳。当视频流A的切换子表的报文时间戳大于视频流B的切换子表中的报文时间戳时,则切换总表中的切入流报文时间戳为视频流A的切换子表中记录的报文时间戳。
4)、计算媒体流的切换点,统计切出视频流位图和切入流位图中为1的位数,当切出视频流位图和切入流位图中为1的位数均等于此次切换的总流数时,表示此次需要切换的所有媒体流都已更新过切换总表,可以计算切换点,例如此时切换中总流数对等于2,视频流1,音频流1更新完切换总表后,切出视频流位图的值为0011,其中值为1的位等于2,表示切出视频流均准备好可以计算切换点了;视频流2,音频流2更新完切换总表后,切入流位图的值为0011,其中值为1的位等于2,表示切出视频流均准备好可以计算切换点了。
S805,当流类型为视频流时,根据切换总表中的切出视频流最新报文时间戳和切入流最新报文时间戳计算视频流的切换点的时间戳。
具体计算方式根据前面所述,此处不再赘述。针对切入视频流计算完切换点的时间戳后,将切换点的时间戳更新至切换总表中切入流切换点的时间戳TS_sw_v1,针对切出视频流计算完切换点的时间戳后,将切出视频流的切换点的时间戳更新至切换总表中切出视频流切换点的时间戳TS_sw_v1。然后将切换总表中的切换点计算完成标记置为1。
S806、当流类型为音频流时,根据切换总表中视频点的切换点时间戳确定音频流的切换点时间戳。
具体的,根据切换总表中的视频流的切入流切换点时间戳TS_sw_v2计算音频流的切入流的切换点时间戳,根据切换总表中的视频流的切出视频流切换点时间戳TS_sw_v1计算音频流的切出视频流的切换点时间戳。
进而还可以根据音频流1的切换点的时间戳确定音频流1的切换点序列号SN_sw_a1,根据音频流2的切换点的时间戳确定音频流2的切换点序列号SN_sw_a1。
需要说明的是,只有当切换总表中的切换点计算完成标记为1时,才可以启动计算音频流的切换点的时间戳。
完成计算媒体流切换点后,以报文为单位,按照“流报文的转发和丢弃规则”决定媒体流每个报文是转发还是丢弃。
S807a,将视频流1中时间戳大于视频流1的切换点时间戳的报文丢弃,将视频流2中时间戳大于视频流2的切换点时间戳的报文转发。
S807b,将音频流1中时间戳大于音频流1的切换点时间戳的报文丢弃,将音频流2中时间戳大于音频流2的切换点时间戳的报文转发。
另外,转发音频流2(切入流)中的报文时,修改组播地址和序列号等信息。媒体流切换后,需要在报文向下游设备发送前对报文的组播地址和序列号、RTP.SSRC,以及SMPTE定义的HBRMT层等进行修改,以便于修改后的报文和当前正在输出的报文能够衔接,以实现下游设备对切换不感知。
RTP.SSRC表示同步信源标识符,一般占用32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。这里的同步信源是指产生媒体流的信源,例如麦克风、摄像机、RTP混合器等。接收者将根据SSRC标识符来区分不同的信源,进行RTP报文的分组。
如果下游设备能够容忍组播地址、RTP.SN、RTP.SSRC、HBRMT.FRCount(FRCount是SMPTE定义的High Bit Rate Media Payload Header中的Frame Count字段,表示该流中累积的视频帧数,共8位,超过256帧后翻转)的变化,也可省略对应的修改步骤。
考虑到对于一个视频流输出端口(或者音频流输出端口),可能需要在多条输入视频流(或者音频流)间反复切换。所以,当前的切出视频流很可能是之前的切入流,系统可以对切入流和切出视频流进行组播地址和RTP.SN、RTP.SSRC等的统一,达到组播地址、RTP.SSRC等始终保持不变,RTP.SN始终保持连续。
下面简单描述下修改组播地址和序列号的方式:
切换前,切出视频流(音频流1或者视频流1)的报文到达切换设备后被转发,同时修改切出视频流的组播地址和SN号:组播地址从239.0.1.1修改为239.0.2.1,RTP.SSRC修改为0x12345678,RTP.SN号:RTP.SN(输出流)=RTP.SN(切出视频流)+C1,C1为常数,通过输出流与切出视频流时间戳相同的报文的SN差获得,如图8A所示,C1等于1000。此时,如果切出视频流是最初未切换就输出的流,当前输出流的组播地址、RTP.SSRC、RTP.SN也可以与该切出视频流相同,则不需要修改。切入流的报文到达切换设备后被丢弃。
切换后,切出视频流的报文到达切换设备后被丢弃。切入流的报文到达切换设备后被转发,同时修改组播地址和SN号:组播地址从239.0.1.2修改为239.0.2.1,RTP.SSRC修改为0x12345678,RTP.SN号:RTP.SN(输出流)=RTP.SN(切入流)+C2,C2为常数,通过输出流与切入流时间戳相同的报文的SN差获得,如图8B所示,C2等于900。
可选地,在音频流1和音频流2、视频流1和视频流2切换开始后处理一定数量的报文或者预设时长后,进入了稳定状态,切换完成,可以更新音频流1和音频流2、视频流1和视频流2分别对应的切换子表中的流类型为正常转发流和正常丢弃流。从而可以不逐包检查时间戳和序列号来判断该报文是转发还是丢弃,而是基于流的类型来决定是转发还是丢弃,整个切换过程完成。另外,还可以复位切换流表中除流类型以及序列号偏移以外的其它字段。
本申请实施例前面描述的是,音频流与视频流同步切换时,音频流跟随视频流进行切换,即音频流的切换点的音频参数值是基于视频流的切换点的视频参数值确定的。作为一种示例,本申请实施例中可以置给音频流增加一个标记,比如跟随切换标记,当跟随切换标记为1时,表示音频流需跟随视频流进行切换,此时计算切换点时,根据切换总表中记录的视频流的切换点时间戳来计算音频流的切换点时间戳,如前所述。
当跟随切换标记为0时,表示音频流不需跟随视频流进行切换,也就是说,针对音频流单独确定音频流的切换点的音频参数值,不再需要根据视频流的切换点时间戳来计算音频流的切换点时间戳。
下面针对单独确定音频流的切换点的音频参数值的实现方式进行描述:
切换设备接收切换指令,根据音频流1的报文1的时间戳和音频流2的报文2的时间戳确定切换点的时间戳。所述切换设备将音频流1中音频参数值大于所述切换点的音频参数值的报文切换为所述音频流2中音频参数值大于所述切换点的音频参数值的报文。也就是音频流1和音频流2共用一个切换点时间戳。其中,报文1是接收到切换指令后接收到的音频流1中的报文,报文2是接收到切换指令后接收到的音频流2中的报文。报文1和报文2的接收时间相同。
根据音频流1的报文1的时间戳和音频流2的报文2的时间戳确定切换点的时间戳,可以通过如下方式实现:
获取报文1的时间戳和报文2的时间戳中最大时间戳,根据最大时间戳确定切换点的时间戳。
切换点的时间戳满足如下所示条件:
TS_sw_in=TS_sw_out=TS+N*frequency;
其中,TS=max(TS_out,TS_in),TS_out为报文1的时间戳,TS_in为报文2的时间戳,TS为TS_out和TS_in中最大的值,N为固定值,取值范围(5-100),frequency为音频流的采样率。
在一种可能的实施方式中,如果音频流的采样率是预先配置给切换设备的或者是在接收到切换指令前确定得到,则报文1可以是接收到切换指令时所接收到的音频流1中的报文,报文2可以是接收到切换指令时所接受到的音频流2中的报文。如果音频流的采样率时在接收到切换指令时启动计算的,则报文1可以是完成确定采样率时所接收到的音频流1中的报文,报文2可以是完成确定采样率时所接收到的音频流2中的报文。
示例性的,切换设备在确定切换点的时间戳时,可以根据音频流1和音频流2分别对应的切换子表中记录的报文时间戳来确定切换点的时间戳,换句话说,接收到切换指令时,音频流1的切换子表中记录的报文时间戳,即为报文1的时间戳,音频流2的切换子表中记录的报文时间戳,即为报文2的时间戳。
另外,本申请实施例也适用于多对音频流与多对视频流同步切换的情况。比如,在Y条音频流切换到另外Y条音频流,X条视频流切换到另外X条视频流,Y为大于或者等于2的正整数,X为大于或者等于2的正整数。X可以与Y相等或者不相等。比如,参见图10,以两条音频流切换到另外两条音频流,两条视频流切换到另外两条视频流为例。多条媒体流之间切换与媒体音频流之间切换的不同之处在于,切换过程中在计算视频流的切换点时间戳和/或序列号之前,首先要确定切入视频流包括的两条视频流中时间戳领先的视频流,以及确定切出视频流中包括的两条视频流中时间戳领先的视频流。基于切入视频流中时间戳领先的视频流和切出视频流中时间戳领先的视频流确定同步关系,并基于同步关系以及切入视频流中时间戳领先的视频流戳确定切入视频流的切换点时间戳,基于同步关系以及切出视频流中时间戳领先的视频流确定切出视频流的切换点的时间戳。然后再根据切入视频流的切换点的时间戳确定切入音频流的切换点的时间戳,以及根据切出流的切换点的时间戳确定切出音频流的切换点的时间戳。比如,参见图9所示,切入视频流包括视频流a、视频流b。切出视频流包括视频流c和视频流d。切入音频流包括音频流a、音频流b。切出音频流包括音频流c和音频流d。从图9可以看出,切入视频流中视频流b领先视频流a,切出视频流中视频流c领先视频流d。在分别确定切入视频流和切出视频流的切入点时间戳和/或序列号时,可以基于视频流b和视频流c的时间戳来确定,具体确定方式如前所述,此处不再赘述。
基于与上述方法实施例同样的发明构思,如图10所示,本申请实施例还提供了一种装置,所述装置可以包括:接收单元1001、处理单元1002和发送单元1003。
在一种可能的实施方式中,该装置实现上述方法中切换设备的功能。该装置可以是切换设备,也可以是切换设备中一个或者多个处理器,或者一个或者多个芯片。具体的,接收单元1001、处理单元1002和发送单元1002可以执行上述任意方法实施例中切换设备所执行的相应功能,详细的不再这里赘述。
本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能单元可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
基于相同的构思,如图11所示,为本申请提供的一种装置1100。装置1100中包括至少一个处理器1110,例如,执行上述实施例中。装置还可以包括至少一个存储器1120,用于存储程序指令和/或数据。存储器1120和处理器1110耦合。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器1110可能和存储器1120协同操作。处理器1110可能执行存储器1120中存储的程序指令,以供处理器1110调用,实现上述处理器1110的功能。可选的,所述至少一个存储器1120中的至少一个可以包括于处理器1110中。装置1100中还可以包括通信接口1130,装置1100可以通过通信接口1130和其它设备进行信息交互。通信接口1130可以是电路、总线、收发器或者其它任意可以用于进行信息交互的装置。
该装置1100应用于切换设备,具体装置1100可以是切换设备,也可以是能够支持切换设备实现上述任一实施例所述的方法中切换设备的功能的装置。示例性地,该装置1100中的至少一个处理器1110用于实现上述任一实施例所述的方法中切换设备的功能。
示例性地,装置1100可以是芯片或芯片系统。可选的,在本申请实施例中芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
本申请实施例中不限定上述通信接口1130、处理器1110以及存储器1120之间的具体连接介质。本申请实施例在图11中以存储器1120、处理器1110以及通信接口1130之间通过总线连接,总线在图11中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
在本申请实施例中,存储器可以是非易失性存储器,比如硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-access memory,RAM)。存储器还可以是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于以上实施例,本申请实施例还提供了一种计算机存储介质,该存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时可实现上述任意一个或多个实施例提供的方法。该计算机存储介质可以包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
基于以上实施例,本申请实施例还提供了一种芯片,该芯片包括处理器,用于实现上述任意一个或多个实施例所涉及的功能,例如获取或处理上述方法中所涉及的信息或者消息。可选地,该芯片还包括存储器,该存储器,用于处理器所执行必要的程序指令和数据。该芯片,可以由芯片构成,也可以包含芯片和其他分立器件。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (34)

1.一种音频流和视频流同步切换方法,其特征在于,包括:
切换设备接收切换指令,所述切换指令指示从传输的第一音频流切换到第二音频流以及从传输的第一视频流切换到第二视频流;
所述切换设备确定第一视频流的切换点的视频参数值以及所述第二视频流的切换点的视频参数值,所述视频参数值包括时间戳和/或序列号;
所述切换设备根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的视频参数值确定所述第二音频流的切换点的音频参数值,所述音频参数值包括时间戳和/或序列号;
所述网络设备将所述第一视频流中视频参数值大于所述第一视频流的切换点的视频参数值的报文切换为所述第二视频流中视频参数值大于所述第二视频流的切换点的视频参数值的报文,并将第一音频流中音频参数值大于所述第一音频流的切换点的音频参数值的报文切换为所述第二音频流中音频参数值大于所述第二音频流的切换点的音频参数值的报文。
2.如权利要求1所述的方法,其特征在于,所述切换设备确定第一视频流的切换点的视频参数值以及所述第二视频流的切换点的视频参数值,包括:
所述切换设备根据第一视频流的第一报文的时间戳和第二视频流的第二报文的时间戳,确定所述第一视频流和第二视频流的同步关系,所述第一报文所属的第一视频帧的接收时间段与所述第二报文所属的第二视频帧的接收时间段存在重叠;
所述切换设备根据所述同步关系和所述第一报文的视频参数值确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的视频参数值确定所述第二视频流的切换点的视频参数值。
3.如权利要求2所述的方法,其特征在于,当所述视频参数值包括时间戳时,所述切换设备根据所述同步关系和所述第一报文的视频参数值确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的视频参数值确定所述第二视频流的切换点的视频参数值,包括:
所述切换设备根据所述同步关系、所述第一报文的时间戳和所述第一视频流的视频帧时长确定所述第一视频流的切换点的时间戳,以及根据所述同步关系、所述第二报文的时间戳和所述第二视频流的视频帧时长确定所述第二视频流的切换点的时间戳。
4.如权利要求3所述的方法,其特征在于,所述第一视频流的切换点的时间戳,以及所述第二视频流的切换点的时间戳满足如下条件:
若所述第一视频流和所述第二视频流同步,则TS_sw_v1=FT_TS1+N*T1,TS_sw_v2=FT_TS2+N*T2;或者,
若所述第一视频流晚于所述第二视频流,则TS_sw_v1=FT_TS1+(N+1)*T1,TS_sw_v2=FT_TS2+N*T2;或者,
若所述第一视频流早于所述第二视频流,则TS_sw_v1=FT_TS1+N*T1,TS_sw_v2=FT_TS2+(N+1)*T2;
其中,T1表示所述第一视频流的视频帧时长,T2表示所述第二视频流的视频帧时长,TS_sw_v1表示所述第一视频流的切换点的时间戳,TS_sw_v2表示所述第二视频流的切换点的时间戳,FT_TS1表示所述第一报文的时间戳,FT_TS2表示所述第二报文的时间戳,N为大于0的整数。
5.如权利要求1-4任一项所述的方法,其特征在于,所述音频参数值包括时间戳时,所述切换设备根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的音频参数值,包括:
所述切换设备根据所述第一视频流的切换点的时间戳、所述第一视频流的视频帧时长、所述第一视频流的时钟频率和所述第一音频流的采样率确定所述第一音频流的切换点的时间戳,以及所述切换设备根据所述第二视频流的切换点的时间戳、所述第二视频流的视频帧时长、所述第二视频流的时钟频率和所述第一音频流的采样率确定所述第一音频流的切换点的时间戳。
6.如权利要求5所述的方法,其特征在于,所述第一音频流的切换点的时间戳和所述第二音频流的切换点的时间戳满足如下条件:
TS_sw_a1=(TS_sw_v1+T1-TS_ref_v)*frequency_a1/frequency_v1+TS_ref_a;
TS_sw_a2=(TS_sw_v2+T2-TS_ref_v)*frequency_a2/frequency_v2+TS_ref_a;
其中,TS_sw_a1表示第一音频流的切换点的时间戳,TS_sw_v1表示第一视频流的切换点的时间戳,TS_sw_a2表示第二音频流的切换点的时间戳,TS_sw_v2表示第二视频流的切换点的时间戳,T1表示所述第一视频流的视频帧时长,T2表示所述第二视频流的视频帧时长,TS_ref_v表示以第一时间为基准确定的视频流的参考时间戳,TS_ref_a表示以第一时间为基准确定的音频流参考时间戳,所述第一时间为所述切换设备上的任一历史时间,frequency_a1为所述第一音频流的采样率,frequency_a2为所述第二音频流的采样率,frequency_v1为所述第一视频流的时钟频率,frequency_v2为所述第二视频流的时钟频率。
7.如权利要求6所述的方法,其特征在于,所述第一音频流的采样率基于接收到的所述第一音频流中的任两个报文的时间戳和序列号确定,或者,所述第二音频流的采样率基于接收到的所述第二音频流中的任两个报文的时间戳和序列号确定。
8.如权利要求1-7任一项所述的方法,其特征在于,所述音频参数值包括序列号,
所述切换设备根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的音频参数值,包括:
所述切换设备根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的时间戳,并根据所述第一音频流的切换点的时间戳确定所述第一音频流的切换点的序列号;以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的时间戳,并根据所述第二音频流的切换点的时间戳确定所述第二音频流的切换点的序列号。
9.如权利要求8所述的方法,其特征在于,所述第一音频流的切换点的序列号和所述第二音频流的切换点的序列号满足如下条件:
SN_sw_a1=SN1+(TS_sw_a1–TS1)/AvgTS1;
SN_sw_a2=SN2+(TS_sw_a2–TS2)/AvgTS2;
其中,AvgTS1=packetTime1*frequency_a1,AvgTS2=packetTime2*frequency_a2,packetTime1为所述第一音频流的报文时长,packetTime2为所述第二音频流的报文时长,frequency_a1表示所述第一音频流的采样率,frequency_a2表示所述第二音频流的采样率,TS_sw_a1表示所述第一音频流的切换点的时间戳,TS_sw_a2表示所述第二音频流的切换点的时间戳;SN_sw_a1表示所述第一音频流的切换点的序列号,SN_sw_a2表示所述第二音频流的切换点的序列号;SN1表示第一音频流中第三报文的序列号,TS1表示所述第三报文的时间戳,SN2表示所述第二音频流中第四报文的序列号,TS2表示所述第四报文的时间戳;所述第三报文为所接收到的第一音频流中的任一报文,所述第四报文为所接收到的第二音频流中的任一报文。
10.如权利要求2-9任一项所述的方法,其特征在于,当所述视频参数值包括序列号时,所述切换设备根据所述同步关系和所述第一报文的视频参数值确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的视频参数值确定所述第二视频流的切换点的视频参数值,包括:
所述切换设备根据所述同步关系、所述第一报文的序列号和所述第一视频流的视频帧的报文数量确定所述第一视频流的切换点的序列号,以及根据所述同步关系、所述第二报文的序列号和所述第二视频流的视频帧的报文数量确定所述第二视频流的切换点的序列号。
11.如权利要求10所述的方法,其特征在于,所述第一视频流的切换点的序列号,以及所述第二视频流的切换点的序列号满足如下条件:
若所述第一视频流和所述第二视频流同步,则SN_sw_v1=FT_SN1+N*M1,SN_sw_v2=FT_SN2+N*M2;或者,
若所述第一视频流晚于所述第二视频流,则SN_sw_v1=FT_SN1+(N+1)*M1,SN_sw_v2=FT_SN2+N*M2;或者,
若所述第一视频流早于所述第二视频流,则SN_sw_v1=FT_SN1+N*M1,SN_sw_v2=FT_SN2+(N+1)*M2;
其中,M1表示所述第一视频帧包括的报文数量,M2表示所述第二视频帧包括的报文数量,SN_sw_v1表示所述第一视频流的切换点的序列号,SN_sw_v2表示所述第二视频流的切换点的序列号,FT_SN1表示所述第一报文的序列号,FT_SN2表示所述第二报文的序列号,N为大于0的整数。
12.如权利要求10或11所述的方法,其特征在于,所述第一视频流的视频帧的报文数量基于接收到的所述第一视频流中的相邻两个视频帧的帧尾报文的序列号差确定,所述第二视频流的视频帧的报文数量基于接收到的所述第二视频流中的相邻两个视频帧的帧尾报文的序列号差确定;或者,所述第一视频流的视频帧的报文数量基于接收到的所述第一视频流中的相邻两个视频帧的帧头报文的序列号差确定,所述第二视频流的视频帧的报文数量基于接收到的所述第二视频流中的相邻两个视频帧的帧头报文的序列号差确定。
13.如权利要求3-7任一项所述的方法,其特征在于,所述第一视频流的视频帧时长基于接收到的所述第一视频流中的相邻两个视频帧的帧尾报文的时间戳差确定,所述第二视频流的视频帧时长基于接收到的所述第二视频流中的相邻两个视频帧的帧尾报文的时间戳差确定;或者,所述第一视频流的视频帧时长基于接收到的所述第一视频流中的相邻两个视频帧的帧头报文的时间戳差确定,所述第二视频流的视频帧时长基于接收到的所述第二视频流中的相邻两个视频帧的帧头报文的时间戳差确定。
14.如权利要求12或13所述的方法,其特征在于,所述第一视频流中的相邻两个视频帧为在接收到所述切换指令前接收到的所述第一视频流中两个视频帧,所述第二视频流中的相邻两个视频帧为在接收所述切换指令前接收到的所述第二视频流中的两个视频帧;
所述第一视频帧为接收到切换指令时接收到的所述第一视频流中的报文所在的视频帧的前一个视频帧,所述第二视频帧为接收到切换指令时接收到的所述第二视频流中的报文所在的视频帧的前一个视频帧;或者,所述第一视频帧为接收到切换指令时接收到的所述第一视频流中的报文所在的视频帧的后一个视频帧,所述第二视频帧为接收到切换指令时接收到的所述第二视频流中的报文所在的视频帧的后一个视频帧。
15.如权利要求12或13所述的方法,其特征在于,所述第一视频流中的相邻两个视频帧为在接收到所述切换指令时接收到的所述第一视频流中报文所在的视频帧及其下一个视频帧,所述第二视频流中的相邻两个视频帧为在接收所述切换指令时接收到的所述第二视频流的报文所在的视频帧及其下一个视频帧;
所述第一视频帧为在接收到所述切换指令时接收到的所述第一视频流中报文所在的视频帧的下一个视频帧,所述第二视频帧为在接收到所述切换指令时接收到的所述第二视频流中报文所述的视频帧的下一个视频帧。
16.如权利要求2-15任一项所述的方法,其特征在于,所述第一报文为所述第一视频帧的帧尾报文,所述第二报文为所述第二视频帧的帧尾报文;或者,所述第一报文为所述第一视频帧的帧头报文,所述第二报文为所述第二视频帧的帧头报文。
17.一种音频流和视频流同步切换装置,其特征在于,包括:
接收单元,用于接收切换指令,所述切换指令指示从传输的第一音频流切换到第二音频流以及从传输的第一视频流切换到第二视频流;
处理单元,用于确定第一视频流的切换点的视频参数值以及所述第二视频流的切换点的视频参数值,所述视频参数值包括时间戳和/或序列号;根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的视频参数值确定所述第二音频流的切换点的音频参数值,所述音频参数值包括时间戳和/或序列号;
发送单元,用于将所述第一视频流中视频参数值大于所述第一视频流的切换点的视频参数值的报文切换为所述第二视频流中视频参数值大于所述第二视频流的切换点的视频参数值的报文,并将第一音频流中音频参数值大于所述第一音频流的切换点的音频参数值的报文切换为所述第二音频流中音频参数值大于所述第二音频流的切换点的音频参数值的报文。
18.如权利要求17所述的装置,其特征在于,所述处理单元,在确定第一视频流的切换点的视频参数值以及所述第二视频流的切换点的视频参数值时,具体用于:
根据第一视频流的第一报文的时间戳和第二视频流的第二报文的时间戳,确定所述第一视频流和第二视频流的同步关系,所述第一报文所属的第一视频帧的接收时间段与所述第二报文所属的第二视频帧的接收时间段存在重叠;
根据所述同步关系和所述第一报文的视频参数值确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的视频参数值确定所述第二视频流的切换点的视频参数值。
19.如权利要求18所述的装置,其特征在于,当所述视频参数值包括时间戳时,所述处理单元,在根据所述同步关系和所述第一报文的视频参数值确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的视频参数值确定所述第二视频流的切换点的视频参数值时,具体用于:
根据所述同步关系、所述第一报文的时间戳和所述第一视频流的视频帧时长确定所述第一视频流的切换点的时间戳,以及根据所述同步关系、所述第二报文的时间戳和所述第二视频流的视频帧时长确定所述第二视频流的切换点的时间戳。
20.如权利要求19所述的装置,其特征在于,所述第一视频流的切换点的时间戳,以及所述第二视频流的切换点的时间戳满足如下条件:
若所述第一视频流和所述第二视频流同步,则TS_sw_v1=FT_TS1+N*T1,TS_sw_v2=FT_TS2+N*T2;或者,
若所述第一视频流晚于所述第二视频流,则TS_sw_v1=FT_TS1+(N+1)*T1,TS_sw_v2=FT_TS2+N*T2;或者,
若所述第一视频流早于所述第二视频流,则TS_sw_v1=FT_TS1+N*T1,TS_sw_v2=FT_TS2+(N+1)*T2;
其中,T1表示所述第一视频流的视频帧时长,T2表示所述第二视频流的视频帧时长,TS_sw_v1表示所述第一视频流的切换点的时间戳,TS_sw_v2表示所述第二视频流的切换点的时间戳,FT_TS1表示所述第一报文的时间戳,FT_TS2表示所述第二报文的时间戳,N为大于0的整数。
21.如权利要求17-20任一项所述的装置,其特征在于,所述音频参数值包括时间戳,所述处理单元,在根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的音频参数值时,具体用于:
根据所述第一视频流的切换点的时间戳、所述第一视频流的视频帧时长、所述第一视频流的时钟频率和所述第一音频流的采样率确定所述第一音频流的切换点的时间戳,以及根据所述第二视频流的切换点的时间戳、所述第二视频流的视频帧时长、所述第二视频流的时钟频率和所述第一音频流的采样率确定所述第一音频流的切换点的时间戳。
22.如权利要求21所述的装置,其特征在于,所述第一音频流的切换点的时间戳和所述第二音频流的切换点的时间戳满足如下条件:
TS_sw_a1=(TS_sw_v1+T1-TS_ref_v)*frequency_a1/frequency_v1+TS_ref_a;
TS_sw_a2=(TS_sw_v2+T2-TS_ref_v)*frequency_a2/frequency_v2+TS_ref_a;
其中,TS_sw_a1表示第一音频流的切换点的时间戳,TS_sw_v1表示第一视频流的切换点的时间戳,TS_sw_a2表示第二音频流的切换点的时间戳,TS_sw_v2表示第二视频流的切换点的时间戳,T1表示所述第一视频流的视频帧时长,T2表示所述第二视频流的视频帧时长,TS_ref_v表示以第一时间为基准确定的视频流的参考时间戳,TS_ref_a表示以第一时间为基准确定的音频流参考时间戳,所述第一时间为上的任一历史时间,frequency_a1为所述第一音频流的采样率,frequency_a2为所述第二音频流的采样率,frequency_v1为所述第一视频流的时钟频率,frequency_v2为所述第二视频流的时钟频率。
23.如权利要求22所述的装置,其特征在于,所述第一音频流的采样率基于接收到的所述第一音频流中的任两个报文的时间戳和序列号确定,或者,所述第二音频流的采样率基于接收到的所述第二音频流中的任两个报文的时间戳和序列号确定。
24.如权利要求17-23任一项所述的装置,其特征在于,所述音频参数值包括序列号,
所述处理单元,在根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的音频参数值,以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的音频参数值时,具体用于:
根据所述第一视频流的切换点的时间戳确定所述第一音频流的切换点的时间戳,并根据所述第一音频流的切换点的时间戳确定所述第一音频流的切换点的序列号;以及根据所述第二视频流的切换点的时间戳确定所述第二音频流的切换点的时间戳,并根据所述第二音频流的切换点的时间戳确定所述第二音频流的切换点的序列号。
25.如权利要求24所述的装置,其特征在于,所述第一音频流的切换点的序列号和所述第二音频流的切换点的序列号满足如下条件:
SN_sw_a1=SN1+(TS_sw_a1–TS1)/AvgTS1;
SN_sw_a2=SN2+(TS_sw_a2–TS2)/AvgTS2;
其中,AvgTS1=packetTime1*frequency_a1,AvgTS2=packetTime2*frequency_a2,packetTime1为所述第一音频流的报文时长,packetTime2为所述第二音频流的报文时长,frequency_a1表示所述第一音频流的采样率,frequency_a2表示所述第二音频流的采样率,TS_sw_a1表示所述第一音频流的切换点的时间戳,TS_sw_a2表示所述第二音频流的切换点的时间戳;SN_sw_a1表示所述第一音频流的切换点的序列号,SN_sw_a2表示所述第二音频流的切换点的序列号;SN1表示第一音频流中第三报文的序列号,TS1表示所述第三报文的时间戳,SN2表示所述第二音频流中第四报文的序列号,TS2表示所述第四报文的时间戳;所述第三报文为所接收到的第一音频流中的任一报文,所述第四报文为所接收到的第二音频流中的任一报文。
26.如权利要求18-25任一项所述的装置,其特征在于,当所述视频参数值包括序列号,所述处理单元,在根据所述同步关系和所述第一报文的视频参数值确定所述第一视频流的切换点的视频参数值,以及根据所述同步关系以及所述第二报文的视频参数值确定所述第二视频流的切换点的视频参数值时,具体用于:
根据所述同步关系、所述第一报文的序列号和所述第一视频流的视频帧的报文数量确定所述第一视频流的切换点的序列号,以及根据所述同步关系、所述第二报文的序列号和所述第二视频流的视频帧的报文数量确定所述第二视频流的切换点的序列号。
27.如权利要求26所述的装置,其特征在于,所述第一视频流的切换点的序列号,以及所述第二视频流的切换点的序列号满足如下条件:
若所述第一视频流和所述第二视频流同步,则SN_sw_v1=FT_SN1+N*M1,SN_sw_v2=FT_SN2+N*M2;或者,
若所述第一视频流晚于所述第二视频流,则SN_sw_v1=FT_SN1+(N+1)*M1,SN_sw_v2=FT_SN2+N*M2;或者,
若所述第一视频流早于所述第二视频流,则SN_sw_v1=FT_SN1+N*M1,SN_sw_v2=FT_SN2+(N+1)*M2;
其中,M1表示所述第一视频帧包括的报文数量,M2表示所述第二视频帧包括的报文数量,SN_sw_v1表示所述第一视频流的切换点的序列号,SN_sw_v2表示所述第二视频流的切换点的序列号,FT_SN1表示所述第一报文的序列号,FT_SN2表示所述第二报文的序列号,N为大于0的整数。
28.如权利要求26或27所述的装置,其特征在于,所述第一视频流的视频帧的报文数量基于接收到的所述第一视频流中的相邻两个视频帧的帧尾报文的序列号差确定,所述第二视频流的视频帧的报文数量基于接收到的所述第二视频流中的相邻两个视频帧的帧尾报文的序列号差确定;或者,所述第一视频流的视频帧的报文数量基于接收到的所述第一视频流中的相邻两个视频帧的帧头报文的序列号差确定,所述第二视频流的视频帧的报文数量基于接收到的所述第二视频流中的相邻两个视频帧的帧头报文的序列号差确定。
29.如权利要求19-23任一项所述的装置,其特征在于,所述第一视频流的视频帧时长基于接收到的所述第一视频流中的相邻两个视频帧的帧尾报文的时间戳差确定,所述第二视频流的视频帧时长基于接收到的所述第二视频流中的相邻两个视频帧的帧尾报文的时间戳差确定;或者,所述第一视频流的视频帧时长基于接收到的所述第一视频流中的相邻两个视频帧的帧头报文的时间戳差确定,所述第二视频流的视频帧时长基于接收到的所述第二视频流中的相邻两个视频帧的帧头报文的时间戳差确定。
30.如权利要求28或29所述的装置,其特征在于,所述第一视频流中的相邻两个视频帧为在接收到所述切换指令前接收到的所述第一视频流中两个视频帧,所述第二视频流中的相邻两个视频帧为在接收所述切换指令前接收到的所述第二视频流中的两个视频帧;
所述第一视频帧为接收到切换指令时接收到的所述第一视频流中的报文所在的视频帧的前一个视频帧,所述第二视频帧为接收到切换指令时接收到的所述第二视频流中的报文所在的视频帧的前一个视频帧;或者,所述第一视频帧为接收到切换指令时接收到的所述第一视频流中的报文所在的视频帧的后一个视频帧,所述第二视频帧为接收到切换指令时接收到的所述第二视频流中的报文所在的视频帧的后一个视频帧。
31.如权利要求28或29所述的装置,其特征在于,所述第一视频流中的相邻两个视频帧为在接收到所述切换指令时接收到的所述第一视频流中报文所在的视频帧及其下一个视频帧,所述第二视频流中的相邻两个视频帧为在接收所述切换指令时接收到的所述第二视频流的报文所在的视频帧及其下一个视频帧;
所述第一视频帧为在接收到所述切换指令时接收到的所述第一视频流中报文所在的视频帧的下一个视频帧,所述第二视频帧为在接收到所述切换指令时接收到的所述第二视频流中报文所述的视频帧的下一个视频帧。
32.如权利要求28-31任一项所述的装置,其特征在于,所述第一报文为所述第一视频帧的帧尾报文,所述第二报文为所述第二视频帧的帧尾报文;或者,所述第一报文为所述第一视频帧的帧头报文,所述第二报文为所述第二视频帧的帧头报文。
33.一种音频流和视频流同步切换装置,其特征在于,包括:处理器以及与所述处理器耦合的存储器,所述存储器存储有计算机程序,当所述处理器执行所述计算机程序时,使得所述装置执行权利要求1至16中任一所述的方法。
34.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质保存有计算机程序,当所述计算机程序被执行时,可以使得计算机执行权利要求1至16中任一所述的方法。
CN201910151206.7A 2019-02-28 2019-02-28 一种音频流和视频流同步切换方法及装置 Active CN111629158B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201910151206.7A CN111629158B (zh) 2019-02-28 2019-02-28 一种音频流和视频流同步切换方法及装置
KR1020217020566A KR102519381B1 (ko) 2019-02-28 2019-12-07 오디오 스트림과 비디오 스트림을 동기식으로 전환하는 방법 및 장치
JP2021540224A JP7171929B2 (ja) 2019-02-28 2019-12-07 オーディオストリーム及びビデオストリーム同期切替方法及び装置
PCT/CN2019/123843 WO2020173165A1 (zh) 2019-02-28 2019-12-07 一种音频流和视频流同步切换方法及装置
EP19917441.8A EP3883238B1 (en) 2019-02-28 2019-12-07 Method and apparatus for simultaneously switching audio stream and video stream
US17/402,110 US11368634B2 (en) 2019-02-28 2021-08-13 Audio stream and video stream synchronous switching method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910151206.7A CN111629158B (zh) 2019-02-28 2019-02-28 一种音频流和视频流同步切换方法及装置

Publications (2)

Publication Number Publication Date
CN111629158A true CN111629158A (zh) 2020-09-04
CN111629158B CN111629158B (zh) 2021-08-03

Family

ID=72238739

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910151206.7A Active CN111629158B (zh) 2019-02-28 2019-02-28 一种音频流和视频流同步切换方法及装置

Country Status (6)

Country Link
US (1) US11368634B2 (zh)
EP (1) EP3883238B1 (zh)
JP (1) JP7171929B2 (zh)
KR (1) KR102519381B1 (zh)
CN (1) CN111629158B (zh)
WO (1) WO2020173165A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110858925B (zh) * 2018-08-22 2021-10-15 华为技术有限公司 一种实现视频流切换的方法、设备、系统和存储介质
US11838357B1 (en) * 2021-07-29 2023-12-05 Amazon Technologies, Inc. Incremental stream switching in distributed systems
IT202200003209A1 (it) 2022-02-21 2023-08-21 Univ Bologna Alma Mater Studiorum Procedimento per la produzione di una miscela utilizzabile come jet fuel a partire da alcoli c2-c4 e relativo impianto
CN115174979B (zh) * 2022-06-20 2023-12-29 阿里巴巴(中国)有限公司 流媒体传输网络及传输控制方法、装置、设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101282482A (zh) * 2008-05-04 2008-10-08 中兴通讯股份有限公司 视频数据与音频数据同步播放的装置、系统和方法
CN101536497A (zh) * 2006-11-07 2009-09-16 汤姆森许可贸易公司 用于减少频道变化时间以及在频道变化期间同步音频/视频内容的方法
CN101662689A (zh) * 2008-08-25 2010-03-03 华为技术有限公司 交互电视频道切换方法及系统、音视频流发送方法及装置
US20160029075A1 (en) * 2012-11-06 2016-01-28 Broadcom Corporation Fast switching of synchronized media using time-stamp management
CN105376613A (zh) * 2015-12-10 2016-03-02 华为技术有限公司 一种快速频道切换方法、服务器及iptv系统
CN105657579A (zh) * 2015-10-29 2016-06-08 乐视致新电子科技(天津)有限公司 直播音频切换方法、流媒体服务器及客户端
CN105657524A (zh) * 2016-01-13 2016-06-08 上海视云网络科技有限公司 一种视频间无缝切换的方法
US20180367839A1 (en) * 2017-06-16 2018-12-20 Oohms Ny Llc Method and system for synchronization of audio content for a remotely displayed video

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6806909B1 (en) * 1997-03-03 2004-10-19 Koninklijke Philips Electronics N.V. Seamless splicing of MPEG-2 multimedia data streams
AU2001267581A1 (en) * 2000-07-15 2002-01-30 Filippo Costanzo Audio-video data switching and viewing system
US9955122B2 (en) * 2008-04-11 2018-04-24 Mobitv, Inc. Dynamic advertisement stream replacement
US8781003B2 (en) * 2008-07-17 2014-07-15 Cisco Technology, Inc. Splicing of encrypted video/audio content
EP2448265A1 (en) * 2010-10-26 2012-05-02 Google, Inc. Lip synchronization in a video conference
US10158927B1 (en) * 2012-09-05 2018-12-18 Google Llc Systems and methods for detecting audio-video synchronization using timestamps
US9860458B2 (en) 2013-06-19 2018-01-02 Electronics And Telecommunications Research Institute Method, apparatus, and system for switching transport stream
GB2516316A (en) * 2013-07-19 2015-01-21 Sony Corp Video network
TWI561070B (en) * 2014-01-03 2016-12-01 Mstar Semiconductor Inc Decoder and decoding method for audio video stream synchronization
JP6796233B2 (ja) * 2016-09-05 2020-12-09 株式会社メディアリンクス 映像切替システム
CN106488255B (zh) * 2016-10-24 2019-05-14 广州酷狗计算机科技有限公司 一种切换媒体流的方法及装置
CN107277594B (zh) * 2017-07-06 2020-04-28 广州华多网络科技有限公司 一种视音频与弹幕同步方法及装置
US11122310B2 (en) * 2017-09-14 2021-09-14 Media Links Co., Ltd. Video switching system
CN109348247B (zh) * 2018-11-23 2021-03-30 广州酷狗计算机科技有限公司 确定音视频播放时间戳的方法、装置及存储介质
US10778361B1 (en) * 2019-03-04 2020-09-15 Mellanox Technologies Tlv Ltd. Stream synchronization

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101536497A (zh) * 2006-11-07 2009-09-16 汤姆森许可贸易公司 用于减少频道变化时间以及在频道变化期间同步音频/视频内容的方法
CN101282482A (zh) * 2008-05-04 2008-10-08 中兴通讯股份有限公司 视频数据与音频数据同步播放的装置、系统和方法
CN101662689A (zh) * 2008-08-25 2010-03-03 华为技术有限公司 交互电视频道切换方法及系统、音视频流发送方法及装置
US20160029075A1 (en) * 2012-11-06 2016-01-28 Broadcom Corporation Fast switching of synchronized media using time-stamp management
CN105657579A (zh) * 2015-10-29 2016-06-08 乐视致新电子科技(天津)有限公司 直播音频切换方法、流媒体服务器及客户端
CN105376613A (zh) * 2015-12-10 2016-03-02 华为技术有限公司 一种快速频道切换方法、服务器及iptv系统
CN105657524A (zh) * 2016-01-13 2016-06-08 上海视云网络科技有限公司 一种视频间无缝切换的方法
US20180367839A1 (en) * 2017-06-16 2018-12-20 Oohms Ny Llc Method and system for synchronization of audio content for a remotely displayed video

Also Published As

Publication number Publication date
EP3883238A4 (en) 2022-03-23
WO2020173165A1 (zh) 2020-09-03
EP3883238B1 (en) 2024-04-03
KR20210094078A (ko) 2021-07-28
KR102519381B1 (ko) 2023-04-06
US11368634B2 (en) 2022-06-21
US20210377458A1 (en) 2021-12-02
JP7171929B2 (ja) 2022-11-15
JP2022517587A (ja) 2022-03-09
CN111629158B (zh) 2021-08-03
EP3883238A1 (en) 2021-09-22

Similar Documents

Publication Publication Date Title
CN111629158B (zh) 一种音频流和视频流同步切换方法及装置
US11758209B2 (en) Video distribution synchronization
JP3666625B2 (ja) データ記録方法およびデータ記録装置
US20060038878A1 (en) Data transmission method and data trasmission system
US9462195B2 (en) System and method for distributed video and or audio production
US10778361B1 (en) Stream synchronization
AU2013217470A1 (en) Method and apparatus for converting audio, video and control signals
CN110891182B (zh) 一种实现视频流切换的方法、装置和系统
US11336561B2 (en) System and method for isochronous switching of packetized media streams
US11483495B2 (en) Method, apparatus, and system for implementing video stream switching
EP3627778B1 (en) Video network
CN111327923B (zh) 一种音频流切换方法及装置
JP5159973B1 (ja) 伝送パケットの配信方法
KR102671249B1 (ko) 비디오 스트림을 스위칭하기 위한 방법, 장치, 및 시스템
Laabs SDI over IP

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