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

文档序号:9730534阅读:来源:国知局
缓存写入模块,将所述音频帧的所述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接口。如果缓冲存储器
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1