Rtsp/rtp音视频流转换为ts流并通过asi接口输出的方法和装置的制造方法

xiaoxiao2021-2-23  118

Rtsp/rtp音视频流转换为ts流并通过asi接口输出的方法和装置的制造方法
【专利说明】RTSP/RTP音视频流转换为TS流并通过ASI接口输出的方法和装置
技术领域
[0001]本发明涉及发送和接收流传输数据的技术领域,具体来说,本发明涉及一种RTSP/RTP音视频流(内容)转换为TS流并通过ASI接口输出的方法和装置。
【背景技术】
[0002]一般地,实时流传输协议(RTSP)与实时传输协议(RTP) 一起被使用,其中RTSP用于发送端与接收端的会话,而RTP用于传输音视频内容。
[0003]在视频监控领域,IP摄像头大都是通过RTSP/RTP协议输出音视频内容,但是RTSP/RTP协议是一种基于TCP/IP的协议,所以只能在IP网络上使用,无法在有线数字电视网或者无线数字电视网中使用。而在数字电视领域,有线数字电视网或者无线数字电视网中音视频内容只能是传输流(TS流)格式的,而且有线数字电视网和无线数字电视网的局端设备的数字音视频接口基本都是如DVB异步接口等异步串行接口(Asynchronous SerialInterface,简称ASI接口)。

【发明内容】

[0004]本发明所要解决的技术问题是在视频监控领域和数字电视领域之间建立一个数据桥梁,提供一种将视频监控领域的RTSP/RTP音视频流转换为TS流并通过ASI接口输出的方法和装置,以用于数字电视领域。
[0005]为解决上述技术问题,本发明提供一种RTSP/RTP音视频流转换为TS流并通过ASI接口输出的方法,包括如下步骤:
[0006]A.通过RTSP协议建立与一网络视频发送端的RTSP连接,获取所述网络视频发送端发送的音视频流的音频解码信息和视频解码信息;
[0007]B.建立所述音视频流发送的RTP通道和接收端口,通知所述网络视频发送端发送所述音视频流的RTP包;
[0008]C.在不同的所述接收端口接收所述音视频流的音频RTP包和视频RTP包,通过所述音频RTP包和所述视频RTP包上携带的时间信息分别分割音频帧和视频帧,并将所述时间信息暂存起来;
[0009]D.将所述音频帧和所述视频帧的所有RTP包头分别去掉,然后将其余数据分别组合成一个完整的原始音频帧和一个完整的原始视频帧;
[0010]E.在所述原始音频帧的头部加上所述音频解码信息,在所述原始视频帧的I帧头部加上所述视频解码信息;
[0011 ] F.根据每一个音频帧的第一个所述音频RTP包和每一个视频帧的第一个所述视频RTP包暂存的所述时间信息,结合所述音频解码信息和所述视频解码信息中的采样率信息,分别计算出每一个所述原始音频帧和每一个所述原始视频帧的PTS值;
[0012]G.根据所述原始音频帧的DTS = PTS,所述原始视频帧中I帧的DTS = PTS-帧间隔,所述原始视频帧中其余帧的DTS =上一帧的DTS+帧间隔的方法,分别计算出所述原始音频帧和所述原始视频帧的DTS值;
[0013]H.按照DTS递增原则,统一重新排序所述原始音频帧和所述原始视频帧;
[0014]1.将所述原始音频帧和其PTS值以及所述原始视频帧和其PTS值、DTS值分别打包成一个或多个PES包,所述原始音频帧的所述PTS值和所述原始视频帧的所述PTS值、所述DTS值只分别出现在各自的第一个所述PES包中,每个所述PES包最大为65541字节,再将所述PES包按照TS格式,分割成一个或多个188字节或者204字节的TS包;
[0015]J.按照PCR = DTS-经验值的方法,计算出所述TS流的PCR值,并且在所述视频帧和所述音频帧的所述DTS值间隔超过一小于100ms的值的时候插入一 PCR包;
[0016]K.将所述音频帧的所述TS包、所述视频帧的所述TS包和所述PCR包,一起写入一先入先出的缓冲存储器中;以及
[0017]L.按照设定的所述ASI接口的输出码率,读取存储有所述音频帧的TS包、所述视频帧的TS包和所述PCR包的所述缓冲存储器,其中每隔一不超过100ms的时间间隔,插入所述TS流所必须的一个188字节或者204字节的PAT包和一个188字节或者204字节的PMT包输出到所述ASI接口;其中,设定的所述ASI接口的所述输出码率必须大于所述RTSP/RTP音视频流的码率。
[0018]可选地,在上述步骤L中,通过在所述缓冲存储器中适时插入空TS包以适配所述ASI接口的所述输出码率,实现所述ASI接口的恒定码率输出;其中,如果所述缓冲存储器中的数据量大于等于188字节或者204字节,那么就直接读取188字节或者204字节的数据输出到所述ASI接口;如果所述缓冲存储器中的数据量小于188字节或者204字节,那么就插入一个188字节或者204字节的所述空TS包输出到所述ASI接口,实现所述ASI接口的恒定码率输出。
[0019]可选地,在上述步骤C中,对于发送到同一个所述接收端口的所述音频RTP包或者所述视频RTP包,如果所述时间信息完全相同,那么这些所述音频RTP包或者所述视频RTP包都属于同一个所述音频帧或者同一个所述视频帧。
[0020]可选地,在上述步骤F中,PTS =时间信息*90000/采样率;由于原始的所述时间信息为32位,所以在计算之前,需要将所述时间信息扩展为64位,然后再进行计算;其中,扩展所述时间信息的方法为:64位的所述时间信息低32位等于原始的所述时间信息,当原始的所述时间信息出现翻转,那么64位的所述时间信息高32位累加1。
[0021]可选地,在上述步骤G中,所述帧间隔指的是所述原始视频帧的连续两帧之间的时间间隔值,其时间单位为1 /90000秒。
[0022]为解决上述技术问题,本发明还提供一种RTSP/RTP音视频流转换为TS流并通过ASI接口输出的装置,包括:
[0023]解码信息获取模块,通过RTSP协议建立与一网络视频发送端的RTSP连接,获取所述网络视频发送端发送的音视频流的音频解码信息和视频解码信息;
[0024]通道和端口建立模块,建立所述音视频流发送的RTP通道和接收端口,通知所述网络视频发送端发送所述音视频流的RTP包;
[0025]音视频帧分割模块,在不同的所述接收端口接收所述音视频流的音频RTP包和视频RTP包,通过所述音频RTP包和所述视频RTP包上携带的时间信息分别分割音频帧和视频帧,并将所述时间信息暂存起来;
[0026]包头去除和音视频帧组合模块,将所述音频帧和所述视频帧的所有RTP包头分别去掉,然后将其余数据分别组合成一个完整的原始音频帧和一个完整的原始视频帧;
[0027]解码信息添加模块,在所述原始音频帧的头部加上所述音频解码信息,在所述原始视频帧的I帧头部加上所述视频解码信息;
[0028]PTS值计算模块,根据每一个音频帧的第一个所述音频RTP包和每一个视频帧的第一个所述视频RTP包暂存的所述时间信息,结合所述音频解码信息和所述视频解码信息中的采样率信息,分别计算出每一个所述原始音频帧和每一个所述原始视频帧的PTS值;
[0029]DTS值计算模块,根据所述原始音频帧的DTS = PTS,所述原始视频帧中I帧的DTS =PTS-帧间隔,所述原始视频帧中其余帧的DTS =上一帧的DTS+帧间隔的方法,分别计算出所述原始音频帧和所述原始视频帧的DTS值;
[0030]音视频帧排序模块,按照DTS递增原则,统一重新排序所述原始音频帧和所述原始视频帧;
[0031]打包和分割模块,将所述原始音频帧和其PTS值以及所述原始视频帧和其PTS值、DTS值分别打包成一个或多个PES包,所述原始音频帧的所述PTS值和所述原始视频帧的所述PTS值、所述DTS值只分别出现在各自的第一个所述PES包中,每个所述PES包最大为65541字节,再将所述PES包按照TS格式,分割成一个或多个188字节或者204字节的TS包;
[0032]PCR值计算和PCR包插入模块,按照PCR = DTS_经验值的方法,计算出所述TS流的PCR值,并且在所述视频帧和所述音频帧的所述DTS值间隔超过一小于100ms的值的时候插入一 PCR包;
[0033] 缓存写入模块,将所述音频帧的所述TS包、所述视频帧的所述TS包和所述PCR包,一起写入一先入先出的缓冲存储器中;以及
[0034]读取和输出模块,按照设定的所述ASI接口的输出码率,读取存储有所述音频帧的TS包、所述视频帧的TS包和所述PCR包的所述缓冲存储器,其中每隔一不超过100ms的时间间隔,插入所述TS流所必须的一个188字节或者204字节的PAT包和一个188字节或者204字节的PMT包输出到所述ASI接口;其中,设定的所述ASI接口的所述输出码率必须大于所述RTSP/RTP音视频流的码率。
[0035]可选地,对于所述读取和输出模块,通过在所述缓冲存储器中适时插入空TS包以适配所述ASI接口的所述输出码率,实现所述ASI接口的恒定码率输出;其中,如果所述缓冲存储器中的数据量大于等于188字节或者204字节,那么就直接读取188字节或者204字节的数据输出到所述ASI接口;如果所述缓冲存储器中的数据量小于188字节或者204字节,那么就插入一个188字节或者204字节的所述空TS包输出到所述ASI接口,实现所述ASI接口的恒定码率输出。
[0036]可选地,对于所述音视频帧分割模块,对于发送到同一个所述接收端口的所述音频RTP包或者所述视频RTP包,如果所述时间信息完全相同,那么这些所述音频RTP包或者所述视频RTP包都属于同一个所述音频帧或者同一个所述视频帧。
[0037]可选地,对于所述PTS值计算模块,PTS=时间信息*90000/采样率;由于原始的所述时间信息为32位,所以在计算之前,需要将所述时间信息扩展为64位,然后再进行计算;其中,扩展所述时间信息的方法为:64位的所述时间信息低32位等于原始的所述时间信息,当原始的所述时间信息出现翻转,那么64位的所述时间信息高32位累加1。
[0038]可选地,对于所述DTS值计算模块,所述帧间隔指的是所述原始视频帧的连续两帧之间的时间间隔值,其时间单位为1 /90000秒。
[0039]与现有技术相比,本发明具有以下优点:
[0040]本发明提出了一种将视频监控领域的实时流传输协议(RTSP)与实时传输协议(RTP)的音视频流转换为TS流,并通过如DVB异步接口等ASI接口输出的方法和装置。本发明在视频监控领域和数字电视领域之间建立了一个数据桥梁,其可以将如IP摄像头等网络视频终端的实时图像,传送到有线数字电视网或者无线数字电视网中。本发明在具有数字电视网络但没有IP网络的地点实现IP摄像头图像的传输,同时也可以利用数字电视网络的高带宽特点实现大量IP摄像头图像的稳定传输。
【附图说明】
[0041]本发明的上述的以及其他的特征、性质和优势将通过下面结合附图和实施例的描述而变得更加明显,其中:
[0042]图1为本发明一个实施例的一种RTSP/RTP音视频流转换为TS流并通过ASI接口输出的方法流程示意图;
[0043]图2为本发明一个实施例的一种RTSP/RTP音视频流转换为TS流并通过ASI接口输出的装置模块示意图;
[0044]图3为图2所示实施例的一种RTSP/RTP音视频流转换为TS流并通过ASI接口输出的装置的实际硬件框图。
【具体实施方式】
[0045]下面结合具体实施例和附图对本发明作进一步说明,在以下的描述中阐述了更多的细节以便于充分理解本发明,但是本发明显然能够以多种不同于此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下根据实际应用情况作类似推广、演绎,因此不应以此具体实施例的内容限制本发明的保护范围。
[0046]RTSP/RTP音视频流转换为TS流并通过AS I接口输出的方法实施例
[0047]图1为本发明一个实施例的一种RTSP/RTP音视频流转换为TS流并通过ASI接口输出的方法流程示意图。需要注意的是,这个以及后续其他的附图均仅作为示例,其并非是按照等比例的条件绘制的,并且不应该以此作为对本发明实际要求的保护范围构成限制。如图1所示,为了实现本发明的目的,本发明一个实施例的方法流程可以包括如下步骤:
[0048]步骤S101:通过RTSP协议建立与一网络视频发送端(可以为但不限于IP摄像头或者视频会议终端)的RTSP连接,获取网络视频发送端发送的音视频流的音频解码信息和视频解码?目息。
[0049]步骤S102:建立音视频流发送的RTP通道和接收端口,通知网络视频发送端发送音视频流的RTP包。
[0050]步骤S103:在不同的接收端口接收音视频流的音频RTP包和视频RTP包,通过音频RTP包和视频RTP包上携带的时间信息分别分割音频帧和视频帧,并将时间信息暂存起来。其中,对于发送到同一个接收端口的音频RTP包或者视频RTP包,如果时间信息(T imeStamp,也叫时间标签)完全相同,那么可以认为这些音频RTP包或者视频RTP包都属于同一个音频帧或者同一个视频帧。
[0051]步骤S104:将音频帧和视频帧的所有RTP包头分别去掉,然后将其余数据分别组合成一个完整的原始音频帧和一个完整的原始视频帧。
[0052]步骤S105:在原始音频帧的头部加上获取的音频解码信息,在原始视频帧的I帧头部加上获取的视频解码信息。
[0053]步骤S106:根据每一个音频帧的第一个音频RTP包和每一个视频帧的第一个视频RTP包暂存的时间信息,结合音频解码信息和视频解码信息中的采样率信息,分别计算出每一个原始音频帧和每一个原始视频帧的PTS(Presentat1n Time Stamp,显示时间标签)值。其中,PTS =时间信息*90000/采样率。由于原始的时间信息为32位,所以在计算之前,需要将时间信息扩展为64位,然后再进行计算。其中,扩展时间信息的方法为:64位的时间信息低32位等于原始的时间信息,当原始的时间信息出现翻转,那么64位的时间信息高32位累加1。
[0054]步骤S107:根据原始音频帧的DTS = PTS,原始视频帧中I帧的DTS = PTS_帧间隔,原始视频帧中其余帧的DTS =上一帧的DTS+帧间隔的方法,分别计算出原始音频帧和原始视频帧的DTS(Decode Time Stamp,解码时间标签)值。其中,帧间隔指的是原始视频帧的连续两帧之间的时间间隔值,其时间单位可为1 /90000秒。
[0055]步骤S108:按照DTS递增原则,统一重新排序原始音频帧和原始视频帧。
[0056]步骤S109:将原始音频帧和其PTS值以及原始视频帧和其PTS值、DTS值分别打包成一fS#fPES(Packetized Elementary Streams,打包的基本码流)包,原始音频帧的PTS值和原始视频帧的PTS值、DTS值只分别出现在各自的第一个PES包中,每个PES包最大为65541字节;再将PES包按照TS格式,分割成一个或多个188字节或者204字节的TS包。
[0057]步骤S110:按照PCR = DTS-经验值(例如3600)的方法,计算出TS流的PCR(ProgramClock Reference,节目参考时钟)值,并且在视频帧和音频帧的DTS值间隔超过一小于100ms的值(例如90ms)的时候插入一 PCR包。
[0058]步骤S111:将音频帧的TS包、视频帧的TS包和PCR包,一起写入一先入先出(FIFO)的缓冲存储器中。
[0059]步骤S112:按照设定的ASI接口的输出码率,读取存储有音频帧的TS包、视频帧的TS包和PCR包的缓冲存储器,其中每隔一不超过100ms的时间间隔,插入TS流所必须的一个188字节或者204字节的PAT(Program Associat1n Table,节目关联表)包和一个188字节或者204字节的PMT(Program Map Table,节目映射表)包输出到ASI接口。其中,设定的ASI接口的输出码率必须大于RTSP/RTP音视频流的码率。
[0060]在本实施例中,在上述步骤S112中,通过在缓冲存储器中适时插入空TS包以适配ASI接口的输出码率,实现ASI接口的恒定码率输出。其中,如果缓冲存储器中的数据量大于等于188字节或者204字节,那么就直接读取188字节或者204字节的数据输出到ASI接口。如果缓冲存储器 中的数据量小于188字节或者204字节(说明缓冲存储器即将或已经空了),那么就插入一个188字节或者204字节的空TS包输出到ASI接口,实现ASI接口的恒定码率输出。
[0061 ] RTSP/RTP音视频流转换为TS流并通过ASI接口输出的装置实施例
[0062]图2为本发明一个实施例的一种RTSP/RTP音视频流转换为TS流并通过ASI接口输出的装置模块示意图;图3为图2所示实施例的一种RTSP/RTP音视频流转换为TS流并通过ASI接口输出的装置的实际硬件框图。可见,本发明的装置200的实际硬件部分主要就包括两部分:CPU(中央处理器)301和FPGA(现场可编程门阵列)302。如图2并结合图3所示,为了实现本发明的目的,本发明一个实施例的该装置200主要包括如下模块:解码信息获取模块203、通道和端口建立模块204、音视频帧分割模块205、包头去除和音视频帧组合模块206、解码信息添加模块207、PTS值计算模块208、DTS值计算模块209、音视频帧排序模块210、打包和分割模块211、PCR值计算和PCR包插入模块212、缓存写入模块213以及读取和输出模块215。其中,CPU301中的解码信息获取模块203通过RTSP协议建立与一网络视频发送端(可以为但不限于IP摄像头或者视频会议终端)201的RTSP连接,获取网络视频发送端201发送的音视频流的音频解码信息和视频解码信息。CPU301中的通道和端口建立模块204建立音视频流发送的RTP通道和接收端口,通知网络视频发送端201发送音视频流的RTP包。CPU301中的音视频帧分割模块205在不同的接收端口接收音视频流的音频RTP包和视频RTP包,通过音频RTP包和视频RTP包上携带的时间信息分别分割音频帧和视频帧,并将时间信息暂存起来。其中,对于发送到同一个接收端口的音频RTP包或者视频RTP包,如果时间信息(TimeStamp,也叫时间标签)完全相同,那么这些音频RTP包或者视频RTP包都属于同一个音频帧或者同一个视频帧。CPU301中的包头去除和音视频帧组合模块206将音频帧和视频帧的所有RTP包头分别去掉,然后将其余数据分别组合成一个完整的原始音频帧和一个完整的原始视频帧。解码信息添加模块207在原始音频帧的头部加上音频解码信息,在原始视频帧的I帧头部加上视频解码信息。PTS值计算模块208根据每一个音频帧的第一个音频RTP包和每一个视频帧的第一个视频RTP包暂存的时间信息,结合音频解码信息和视频解码信息中的采样率信息,分别计算出每一个原始音频帧和每一个原始视频帧的PTS(Presentat1nTime Stamp,显示时间标签)值。其中,PTS =时间信息*90000/采样率。由于原始的时间信息为32位,所以在计算之前,需要将时间信息扩展为64位,然后再进行计算。其中,扩展时间信息的方法为:64位的时间信息低32位等于原始的时间信息,当原始的时间信息出现翻转,那么64位的时间信息高32位累加UDTS值计算模块209根据原始音频帧的DTS = PTS,原始视频帧中I帧的DTS = PTS-帧间隔,原始视频帧中其余帧的DTS =上一帧的DTS+帧间隔的方法,分别计算出原始音频帧和原始视频帧的DTS(Decode Time Stamp,解码时间标签)值。其中,帧间隔指的是原始视频帧的连续两帧之间的时间间隔值,其时间单位可为1/90000秒。音视频帧排序模块210按照DTS递增原则,统一重新排序原始音频帧和原始视频帧。打包和分割模块211将原始音频帧和其PTS值以及原始视频帧和其PTS值、DTS值分别打包成一个或多个PES (Packet ized Elementary Streams,打包的基本码流)包,原始音频帧的PTS值和原始视频帧的PTS值、DTS值只分别出现在各自的第一个PES包中,每个PES包最大为65541字节,再将PES包按照TS格式,分割成一个或多个188字节或者204字节的TS包。PCR值计算和PCR包插入模块212按照PCR = DTS-经验值(例如3600)的方法,计算出TS流的PCR(Program ClockReference,节目参考时钟)值,并且在视频帧和音频帧的DTS值间隔超过一小于100ms的值(例如90ms)的时候插入一 PCR包。缓存写入模块213将音频帧的TS包、视频帧的TS包和PCR包,一起通过CPU301的总线写入FPGA302中的一先入先出(FIFO)的缓冲存储器214中。FPGA302的内部逻辑,读取和输出模块215按照设定的ASI接口 202的输出码率,读取存储有音频帧的TS包、视频帧的TS包和PCR包的缓冲存储器214,其中每隔一不超过100ms的固定时间间隔,FPGA302的内部逻辑就插入TS流所必须的一个188字节或者204字节的PAT(ProgramAssociat1n Table,节目关联表)包和一个188字节或者204字节的PMT(Program MapTable,节目映射表)包输出到ASI接口 202。其中,设定的ASI接口202的输出码率必须大于RTSP/RTP音视频流的码率。
[0063]在本实施例中,对于读取和输出模块215,通过FPGA302的内部逻辑在缓冲存储器214中适时插入空TS包以适配ASI接口 202的输出码率,实现ASI接口 202的恒定码率输出。其中,如果缓冲存储器214中的数据量大于等于188字节或者204字节,那么就直接读取188字节或者204字节的数据输出到ASI接口 202。如果缓冲存储器214中的数据量小于188字节或者204字节(说明缓冲存储器即将或已经空了),那么就插入一个188字节或者204字节的空TS包输出到ASI接口 202,实现ASI接口 202的恒定码率输出。
[0064]综上所述,本发明提出了一种将视频监控领域的实时流传输协议(RTSP)与实时传输协议(RTP)的音视频流转换为TS流,并通过如DVB异步接口等ASI接口输出的方法和装置。本发明在视频监控领域和数字电视领域之间建立了一个数据桥梁,其可以将如IP摄像头等网络视频终端的实时图像,传送到有线数字电视网或者无线数字电视网中。本发明在具有数字电视网络但没有IP网络的地点实现IP摄像头图像的传输,同时也可以利用数字电视网络的高带宽特点实现大量IP摄像头图像的稳定传输。
[0065]本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何修改、等同变化及修饰,均落入本发明权利要求所界定的保护范围之内。
【主权项】
1.一种RTSP/RTP音视频流转换为TS流并通过ASI接口输出的方法,包括如下步骤: A.通过RTSP协议建立与一网络视频发送端的RTSP连接,获取所述网络视频发送端发送的音视频流的音频解码信息和视频解码信息; B.建立所述音视频流发送的RTP通道和接收端口,通知所述网络视频发送端发送所述音视频流的RTP包; C.在不同的所述接收端口接收所述音视频流的音频RTP包和视频RTP包,通过所述音频RTP包和所述视频RTP包上携带的时间信息分别分割音频帧和视频帧,并将所述时间信息暂存起来; D.将所述音频帧和所述视频帧的所有RTP包头分别去掉,然后将其余数据分别组合成 完整的原始首频巾贞和完整的原始视频中贞; E.在所述原始音频帧的头部加上所述音频解码信息,在所述原始视频帧的I帧头部加上所述视频解码信息; F.根据每一个音频帧的第一个所述音频RTP包和每一个视频帧的第一个所述视频RTP包暂存的所述时间信息,结合所述音频解码信息和所述视频解码信息中的采样率信息,分别计算出每一个所述原始音频帧和每一个所述原始视频帧的PTS值; G.根据所述原始音频帧的DTS= PTS,所述原始视频帧中I帧的DTS = PTS-帧间隔,所述原始视频帧中其余帧的DTS =上一帧的DTS+帧间隔的方法,分别计算出所述原始音频帧和所述原始视频帧的DTS值; H.按照DTS递增原则,统一重新排序所述原始音频帧和所述原始视频帧; 1.将所述原始音频帧和其PTS值以及所述原始视频帧和其PTS值、DTS值分别打包成一个或多个PES包,所述原始音频帧的所述PTS值和所述原始视频帧的所述PTS值、所述DTS值只分别出现在各自的第一个所述PES包中 ,每个所述PES包最大为65541字节,再将所述PES包按照TS格式,分割成一个或多个188字节或者204字节的TS包; J.按照PCR = DTS-经验值的方法,计算出所述TS流的PCR值,并且在所述视频帧和所述音频帧的所述DTS值间隔超过一小于100ms的值的时候插入一 PCR包; K.将所述音频帧的所述TS包、所述视频帧的所述TS包和所述PCR包,一起写入一先入先出的缓冲存储器中;以及 L.按照设定的所述ASI接口的输出码率,读取存储有所述音频帧的TS包、所述视频帧的TS包和所述PCR包的所述缓冲存储器,其中每隔一不超过100ms的时间间隔,插入所述TS流所必须的一个188字节或者204字节的PAT包和一个188字节或者204字节的PMT包输出到所述ASI接口 ;其中,设定的所述ASI接口的所述输出码率必须大于所述RTSP/RTP音视频流的码率。2.根据权利要求1所述的方法,其特征在于,在上述步骤L中,通过在所述缓冲存储器中适时插入空TS包以适配所述ASI接口的所述输出码率,实现所述ASI接口的恒定码率输出;其中,如果所述缓冲存储器中的数据量大于等于188字节或者204字节,那么就直接读取188字节或者204字节的数据输出到所述ASI接口;如果所述缓冲存储器中的数据量小于188字节或者204字节,那么就插入一个188字节或者204字节的所述空TS包输出到所述ASI接口,实现所述ASI接口的恒定码率输出。3.根据权利要求1所述的方法,其特征在于,在上述步骤C中,对于发送到同一个所述接收端口的所述音频RTP包或者所述视频RTP包,如果所述时间信息完全相同,那么这些所述音频RTP包或者所述视频RTP包都属于同一个所述音频帧或者同一个所述视频帧。4.根据权利要求1所述的方法,其特征在于,在上述步骤F中,PTS=时间信息*90000/采样率;由于原始的所述时间信息为32位,所以在计算之前,需要将所述时间信息扩展为64位,然后再进行计算;其中,扩展所述时间信息的方法为:64位的所述时间信息低32位等于原始的所述时间信息,当原始的所述时间信息出现翻转,那么64位的所述时间信息高32位累加1。5.根据权利要求1所述的方法,其特征在于,在上述步骤G中,所述帧间隔指的是所述原始视频帧的连续两帧之间的时间间隔值,其时间单位为1 /90000秒。6.—种RTSP/RTP音视频流转换为TS流并通过ASI接口(202)输出的装置(200),包括: 解码信息获取模块(203),通过RTSP协议建立与一网络视频发送端(201)的RTSP连接,获取所述网络视频发送端(201)发送的音视频流的音频解码信息和视频解码信息; 通道和端口建立模块(204),建立所述音视频流发送的RTP通道和接收端口,通知所述网络视频发送端(201)发送所述音视频流的RTP包; 音视频帧分割模块(205),在不同的所述接收端口接收所述音视频流的音频RTP包和视频RTP包,通过所述音频RTP包和所述视频RTP包上携带的时间信息分别分割音频帧和视频帧,并将所述时间信息暂存起来; 包头去除和音视频帧组合模块(206),将所述音频帧和所述视频帧的所有RTP包头分别去掉,然后将其余数据分别组合成一个完整的原始音频帧和一个完整的原始视频帧; 解码信息添加模块(207),在所述原始音频帧的头部加上所述音频解码信息,在所述原始视频帧的I帧头部加上所述视频解码信息; PTS值计算模块(208),根据每一个音频帧的第一个所述音频RTP包和每一个视频帧的第一个所述视频RTP包暂存的所述时间信息,结合所述音频解码信息和所述视频解码信息中的采样率信息,分别计算出每一个所述原始音频帧和每一个所述原始视频帧的PTS值;DTS值计算模块(209),根据所述原始音频帧的DTS = PTS,所述原始视频帧中I帧的DTS= PTS-帧间隔,所述原始视频帧中其余帧的DTS =上一帧的DTS+帧间隔的方法,分别计算出所述原始音频帧和所述原始视频帧的DTS值; 音视频帧排序模块(210),按照DTS递增原则,统一重新排序所述原始音频帧和所述原始视频帧; 打包和分割模块(211),将所述原始音频帧和其PTS值以及所述原始视频帧和其PTS值、DTS值分别打包成一个或多个PES包,所述原始音频帧的所述PTS值和所述原始视频帧的所述PTS值、所述DTS值只分别出现在各自的第一个所述PES包中,每个所述PES包最大为65541字节,再将所述PES包按照TS格式,分割成一个或多个188字节或者204字节的TS包; PCR值计算和PCR包插入模块(212),按照PCR = DTS-经验值的方法,计算出所述TS流的PCR值,并且在所述视频帧和所述音频帧的所述DTS值间隔超过一小于100ms的值的时候插入一 PCR包; 缓存写入模块(213),将所述音频帧的所述TS包、所述视频帧的所述TS包和所述PCR包,一起写入一先入先出的缓冲存储器(214)中;以及读取和输出模块(215),按照设定的所述ASI接口(202)的输出码率,读取存储有所述音频帧的TS包、所述视频帧的TS包和所述PCR包的所述缓冲存储器(214),其中每隔一不超过100ms的时间间隔,插入所述TS流所必须的一个188字节或者204字节的PAT包和一个188字节或者204字节的PMT包输出到所述ASI接口(202);其中,设定的所述ASI接口(202)的所述输出码率必须大于所述RTSP/RTP音视频流的码率。7.根据权利要求6所述的装置(200),其特征在于,对于所述读取和输出模块(215),通过在所述缓冲存储器(214)中适时插入空TS包以适配所述ASI接口(202)的所述输出码率,实现所述ASI接口(202)的恒定码率输出;其中,如果所述缓冲存储器(214)中的数据量大于等于188字节或者204字节,那么就直接读取188字节或者204字节的数据输出到所述ASI接口(202);如果所述缓冲存储器(214)中的数据量小于188字节或者204字节,那么就插入一个188字节或者204字节的所述空TS包输出到所述ASI接口(202),实现所述ASI接口(202)的恒定码率输出。8.根据权利要求6所述的装置(200),其特征在于,对于所述音视频帧分割模块(205),对于发送到同一个所述接收端口的所述音频RTP包或者所述视频RTP包,如果所述时间信息完全相同,那么这些所述音频RTP包或者所述视频RTP包都属于同一个所述音频帧或者同一个所述视频帧。9.根据权利要求6所述的装置(200),其特征在于,对于所述PTS值计算模块(208),PTS=时间信息*90000/采样率;由于原始的所述时间信息为32位,所以在计算之前,需要将所述时间信息扩展为64位,然后再进行计算;其中,扩展所述时间信息的方法为:64位的所述时间信息低32位等于原始的所述时间信息,当原始的所述时间信息出现翻转,那么64位的所述时间信息高32位累加1。10.根据权利要求6所述的装置(200),其特征在于,对于所述DTS值计算模块(209),所述帧间隔指的是所述原始视频帧的连续两帧之间的时间间隔值,其时间单位为1/90000秒。
【专利摘要】本发明提供一种RTSP/RTP音视频流转换为TS流并通过ASI接口输出的方法和装置,该方法包括:建立与IP摄像头的RTSP连接,获取音视频解码信息;建立RTP通道和接收端口;接收音视频流的音视频RTP包,由时间信息分割音视频帧;去除RTP包头,组合成完整的原始音视频帧;分别在原始音视频帧的头部和I帧头部加音视频解码信息;由时间信息与采样率信息计算原始音视频帧的PTS值和DTS值;重新排序原始音视频帧;将原始音视频帧和其PTS值、DTS值分别打成PES包,再按TS格式分割成TS包;计算TS流的PCR值且在视频帧的DTS值间隔超过一小于100ms的值之时插入一PCR包;将音视频帧的TS包和PCR包一起写入缓存;按ASI接口的输出码率读取缓存,每隔一不超100ms的时间间隔插入PAT包和PMT包输出到ASI接口。
【IPC分类】H04N21/236, H04N21/8547, H04N7/18, H04N21/6437
【公开号】CN105491401
【申请号】CN201510922191
【发明人】王琪, 黄云辉
【申请人】北京中环星技术有限公司
【公开日】2016年4月13日
【申请日】2015年12月11日

最新回复(0)