首页 > 编程知识 正文

iptv工作原理详解

时间:2023-05-05 18:01:11 阅读:205670 作者:3075

视频解码标准 --------------------------------------------------------------------------- MPEG2:与DVD编码制式一致,应用广泛,大量解码芯片支持;但占用带宽较大,存储空间大。 MPEG4:带宽要求低,2.5M能达到DVD效果,处理器资源要求低;存在多个分支,要考虑相互兼容。 H.264:带宽小,1.5M就能达到DVD效果;但处理器资源高,2-3倍于MPGE4。 WMV9:微软标准,开放性差,编码效率高,1M带宽就能提供DVD的效果。 H.264/AVC(MPEG4 PART 10):
音视频传送流 ----------------------------------------------------------------------------- 首先了解一下两种音视频容器格式,所谓容器,就是指存储音视频数据,所以也跟传输有关系。 PS:Program Stream,一般用于可靠介质上,如DVD TS:Transport Stream,一般用于不可靠介质上,如网络
然后在通过发送音视频的例子,来看一下具体的传输过程。比如现在有一个MP4文件需要发送出去,其内容包括Video和Audio,则整个过程如下: (1)读取MP4文件获得ES流(Element Stream,下面会具体解释),这里我们有两个ES流,分成视频和音频; (2)然后将ES数据分拆打包成PES,如果是视频文件(如MP4),则第一帧PES,需要加入编码格式,如mp4或者h.264等,如果是音频,则每一帧PES都要加入编码格式; (3)将PES进一步分拆封装成TS包,可以为不同的ES分配不同的PID(Packet ID,下面会具体解释),而且同一个ES下的TS帧是有计数器,所以将TS并发出去后,不用担心接收方的ES重组。
对接收者而言,根据PID的不同,区分属于不同ES的TS数据帧,并根据计数器,将其组成PES (Packetized elementary stream),PES帧可以作为ES直接播放
通过上面的过程,我们来了解一些基本概念。
TS可以看作是IP Video传输的最小数据单元,有188个字节。每个TS数据包,第一个字节是0x47,表明它是一个TS流,然后第2个和第3个字节表示PID(Packet ID),实际上只用了13位,然后是4位的计数器,接下去就是Payload。
PID字段,是Packet ID的意思,非常重要。一方面通过PID,可以从TS流中分离出属于不同ES的TS。IPTV系统中除了传送音视频数据之外,还会传送SI(Service Information),通过一些预设的特定的PID字段传送,如0x00表示PAT数据。
ES (Element Stream)用来传输音时频编码输出,它的格式跟具体数据有关,但当其被分割成包PES (Packetized Element Stream)发送时,往往会在每个包加上一个头。这个包头包括3个字节的开始标识0x000001,然后是1个字节的Stream ID,从ID能够看出该stream是视频还是音频,接着2个字节表示PES包的长度。如果没有可选内容,接下去的就是Payload。PES包的长度不等,最长可达64k字节。每个PES包一般只能包含一种类型的数据,如音频,视频或者字幕。

在一个TS流中,有可能包含一个或多个program,每个program又有可能有多个stream(每个stream只能传送一种类型的数据,如视频、音频或字幕)。那么问题是用户怎么知道这些信息。这个时候,可以通过解析TS流中SI表PAT来获得。该表的数据封装在TS中定时发送,PID固定是0x00。这个表包含了当前TS流包含了多少program,而具体的每个program的数据又会定义在对应的PMT数据中(每个PMT对应一个program),PAT中包含了每个program对应的PMT的PID,所以用户能够找到PMT数据。
对于每个PMT,它对应了一个program,所以包含了program号,由于每个program有可能包含多个stream,如视频、音频和字幕,那么每个stream都会有一个PID对应。所以PMT数据中包含了各个ES流的PID。无论是PAT还是PMT,它们都需要一开始的时候就被接收方解析,然后接收方才能根据这些信息来处理接收到的音视频数据,而且这些数据还需要被定时发送更新。
具体关系如下:
最后要搞清楚channel(频道)、program(节目)和stream(流)的区别。频道就是我们目前所知道的一般的频道概念,如CCTV5、SZTV等,而program,则是频道中的节目,在IPTV中有可能一个频道有多个节目,比如CCTV6频道,可能同时传送比赛节目和广告节目(不一定是同时播放?),而流,则是一个节目分成多个数据流,如视频、音频和字幕等。
传输的协议 ---------------------------------------------------------------------------------- 首先所谓IP Video,就是指视频数据是跑在IP协议上面的。IP Video协议运用情况很多,如下面的列表: Broadcast MPEG2-TS/UDP Broadcast MPEG2-TS/RTP/UDP Broadcast RTP/UDP Broadcast Rolling Stream Broadcast TTS/UDP Broadcast TTS/RTP/UDP RSTP MPEG2-TS/(RTP)/UDP RSTP MPGE2-TS/(RTP)/TCP RSTP RTP/UDP RSTP RTP/TCP
其中RTP (Real-time Transport Protocol):定义了在IP网络上传送音视频数据的包格式。 其中RSTP (Real Time Streaming Protocol):用于流数据的控制,主要负责两个端点之间stream session的建立和控制。 实际传输中,会有多种情况。如果TCP中直接传送TS数据,但一般UDP,则会封装RTP进行流数据传输。 另外,IP Video使用了IGMP,即组播。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。