华为STB与HMS接口技术规范.doc
华为STB与HMS接口技术规范(TS部分)Huawei Technologies Co., Ltd. 华为技术有限公司All rights reserved目录1接口概要描述31.1基于TS的接口描述31.2基于TS的传输协议栈31.3TS包结构和语法41.3.1MPEG-2 TS包结构41.3.2PES包结构51.3.3PSI信息定义61.3.4PMT 中的视音频组件(Components)62流控制方法描述72.1SETUP Method72.2PLAY Method82.3PAUSE Method92.4ANNOUNCE Method92.5TEARDOWN Method92.6DESCRIBE Method102.7GET_PARAMETER Method122.8REDIRECT Method123机顶盒点播接口143.1开始播放143.2暂停播放163.3快进播放173.4快退播放183.5定位播放193.6退出播放203.6.1用户主动退出播放203.6.2文件结束或服务器强制退出播放214机顶盒组播接口234.1加入一个频道234.2离开一个频道241 接口概要描述1.1 基于TS的接口描述机顶盒与内容服务系统之间具有以下接口模块:ü 机顶盒点播接口(D1)ü 机顶盒组播接口(D2)STBVOD服务器BTV服务器HMS系统D1D2图1 STB与HMS系统的接口框图1.2 基于TS的传输协议栈图2 基于MPEG-2 TS的传输协议栈结构上图描述了基于 MPEG-2 TS 的传输协议栈结构。基于该协议栈结构,IPTV机顶盒和 IPTV 内容服务系统之间的接口分为两个通道:ü 媒体流传输和接收通道:见上图的左半部分,即HMS系统 和机顶盒之间必须按照图中所示的格式或协议来完成实际音视 频媒体流数据的传输和解包播放;ü 媒体流会话控制通道:见上图的右半部分,HMS系统和机顶盒之间必须按照图中所示的信令协议来完成对音视频媒体流的 控制和交互,采用的协议为本规范定义的 RTSP over TCP;1.3 TS包结构和语法1.3.1 MPEG-2 TS包结构ü MPEG-2 TS 包结构必须符合ISO/IEC 13818-1 | ITU-T Rec. H.222.0 -2000 - Amendment 3 打包结构,即如下图:图3 MPEG-2 TS的包结构ü 必须支持 SPTS,不支持 MPTS;ü PCR 由视频 component 携带;ü 对H.264的TS包结构句法的定义,必须符合ISO/IEC 13818-1 | ISO/IEC 13818-1 | ITU-T Rec. H.222.02000 - Amendment 3的标准;1.3.2 PES包结构ü PES 包结构必须符合 ISO/IEC 13818-1 | ITU-T Rec. H.222.0打包结构, 具体如下图:图4 PES包结构ü 一帧视频数据至多打成一个PES包;ü H.264 的 PES 包结构的句法必须符合 ISO/IEC 13818-1 | ITU-T Rec. H.222.0 2000 - Amendment 3 中的标准;ü 当执行快进、快退等Trick Mode 功能时,PES包头信息的 DSM_trick_mode_flag不进行设置,即为 0;1.3.3 PSI信息定义必须能解析完整的 PAT、PMT 表格,服务器可选支持 CAT 表格,机顶盒 必须支持 CAT 表格。且这些表格的结构必须符合 ISO/IEC 13818-1 | ITU-T Rec. H.222.0 标准规范。1.3.4 PMT 中的视音频组件(Components)PMT 中视音频的 Stream Type 必须符合 ISO/IEC 13818-1 | ITU-T Rec. H.222.0 2000 - Amendment 3 中的标准,具体如下表:表1 Stream_Type对应表2 流控制方法描述本规范流控制协议基于标准的 RTSP 规范(RFC2326),并在此基础上进 行了必要的扩充。RTSP method 如表:表2 流控制使用的RTSP method【注】下面协议中,中括号内内容表示可选,斜体内容表示必有但数值根据实际情况可以修订。2.1 SETUP MethodC->S(从STB到服务器方向):SETUP rtsp:/ RTSP/1.0CSeq:3x-properties: mac_address=0050BFFB9FA1Transport:MP2T/RTP/TCP|UDP;unicast;destination=172.18.79.120:2005;client_port=4588-4589Range: now-endAccept: application/sdpS->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 3Location: rtsp:/Server: servername|ipaddr;portSession: 719885386Transport:MP2T/RTP/TCP|UDP;unicast;destination=172.18.79.120:2005;client_port=4588-4589;bandwidth=2000000;control_address=172.18.79.121;packagesize=32712/32712/188Content-Type: application/sdpContent-Length: 493SDP Contents【注】服务器返回给客户端的信息中可以包含 Location 或 Server 关键域信息,机顶盒必须支持解析 Location 和 Server 关键域的信息。2.2 PLAY MethodC->S(从STB到服务器方向):PLAY rtsp:/ RTSP/1.0CSeq: 5Session: 719885386destination=172.18.79.120:2005;client_port=4588-4589Scale/speed: 1.0Range: npt=10-15,npt=20-25,npt=now,beginning,endx-playNow: 【注 1】C->S Play 带 Scale 参数请求,Scale 参数至少支持 2.0、4.0、8.0、16.0, -2.0、-4.0、-8.0、-16.0。快进、快退播放过程中服务器只发送 I 帧视频,音频数据不发送。【注 2】 C->S Play 带 Range 参数请求,Range 参数由 STB 指定,为相对于节目开始的秒数。SERVER 收到后, 应该从该指定时间开始播放.【注 3】 npt 格式中,now 代表节目的当前时间,beginning 表示节目的开始时间,end 代表节目的结束时间.S->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 5Session: 719885386Server: servername|ipaddr;portScale: 1.0Range: npt=10-15,npt=20-25, npt=now,beginning,endx-playNow: 2.3 PAUSE MethodC->S(从STB到服务器方向):CSeq: 834Session: 12345678destination=172.18.79.120:2005;client_port=4588-4589【注】暂停超时时间由服务器决定。S->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 834Date: 23 Jan 1997 15:35:06 GMTRange: npt=45.76-,npt=now,beginning,endScale:0.000Speed:0.0000002.4 ANNOUNCE MethodC->S(从STB到服务器方向):ANNOUNCE: rtsp:/ RTSP/1.0CSeq: 834Session: 12345678x-notice: xxxx “Internal Server Error” event-date =20050729T100431.097【注 1】xxxx 取值如下:2101 表示 End of Stream;2102 表示 Beginning of Stream;2103 表示强制退出;2104 表示定位到当前直播点;5502 表示 Internal Server Error;5401 表示 Downstream failure;【注 2】其他值可以自定义。2.5 TEARDOWN MethodC->S(从STB到服务器方向):TEARDOWN rtsp:/ RTSP/1.0Session: 12345678CSeq: 834destination=172.18.79.120:2005;client_port=4588-4589Connection: closeS->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 834Session: 12345678Connection: close2.6 DESCRIBE MethodC->S(从STB到服务器方向):DESCRIBE rtsp:/192.168.1.120:554/temp/rings.MPG RTSP/1.0Accept: application/sdpCSeq: 16S->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 16Date: Fri, 29 Jul 2005 10:04:19 GMTContent-Type: application/sdpContent-Length: 309【注】SDP 的格式描述如表。SDP 举例如下:v=0o=- 1122631459319628 2139553954665140 IN IP4 172.18.79.120s=RTSP Sessiont=0 0i=b=AS:1288a=type:voda=range:npt=0-246.655c=IN IP4 0.0.0.0a=control:rtsp:/:554/civil_PAL_720x576.mpim=video 0 RTP/AVP 128a=pmt:ArAXAAHBAADoEPAAG+gQ8AAD6BTwAGZ0pC0=2.7 GET_PARAMETER MethodC->S(从STB到服务器方向):GET_PARAMETER rtsp:/ RTSP/1.0CSeq: 431Content-Type: text/parametersSession: 12345678Content-Length: 15packets_receivedjitterS->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 431Content-Length: 46Content-Type: text/parameterspackets_received: 10jitter: 0.3838【注】客户端定期发送 Get_Parameter 到服务器,服务器发送响应到机顶盒,这样可以确保整个流媒体通讯。用GET_PARAMETER进行查询获取是否支持时移,具体定义如下: STB 在直播的情况下,而且在Session 已经建立的情况下,机顶盒通过RTSP的GET_PARAMETER 消息向媒体服务器查询当前录制时间,格式为:GET_PARAMETER rtsp:/ip/filename RTSP/1.0x-Timeshift_RangeCSeq: 932媒体服务器通过返回OK 响应告诉机顶盒录制时间,格式为:RTSP/1.0 200 OKx-Timeshift_Range: clock=20051108T141020.25Z -20051108T144020.25ZCSeq: 932“x-Timeshift_Range”为关键域,内容格式采用绝对时间(参见RFC2326 3.7小节)。当前直播有时移时,服务器必须回应这个请求,指示当前录制范围。第一个参数为当前录制媒体流起始时间,第二个参数为录制结束的时间。2.8 REDIRECT MethodC->S(从STB到服务器方向):REDIRECT rtsp:/ RTSP/1.0CSeq: 732Location: rtsp:/ipaddr:8001Range: npt=0- ;time=19960213T143205Z , npt=now,beginning,endscale:1.0 Session: uZ3ci0K+Ld-M【注】Range 说明:机顶盒发送 RTSP_PLAY 命令可以带有“Range:npt=”字段,也可以不带,当带有该字 段时,服务器如果接受(200 OK),则必须从该字段规定的位置开始发送媒体流,如果 服务器拒绝,则必须发送 455 回应表示拒绝。当机顶盒发送 RTSP_PLAY 命令不带有“Range:npt=”字段时,服务器如果接受(200 OK),则表示缺省从当前位置开始发送媒体流,当前位置规定如下:1) 当第一次播放时(本次有效 RTSP 连接的第一个 RTSP_PLAY 命令),对于点播节目当 前位置为节目的起始位置,对于直播节目当前位置为媒体服务器当前接收的媒体流 位置。2) 暂停状态下恢复播放为当时停止的位置,如果不知道该位置则从头播放。3) 播放状态下快进/快退为媒体流发送的当前位置。4) 快进快退状态下播放或继续快进快退为媒体流发送的当前位置。3 机顶盒点播接口播放指定 URL 的媒体文件。URL 定义:协议名:/服务器地址:端口/媒 体文件路径?附加信息3.1 开始播放图5 开始播放时序图DESCRIBEC->S(从STB到服务器方向):DESCRIBE rtsp:/192.168.1.120:554/temp/rings.MPG RTSP/1.0Accept: application/sdpCSeq: 16S->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 16Date: Fri, 29 Jul 2005 10:04:19 GMTContent-Type: application/sdpContent-Length: 309SETUPC->S(从STB到服务器方向):SETUP rtsp:/ RTSP/1.0CSeq:3x-properties: mac_address=0050BFFB9FA1Transport:MP2T/RTP/TCP|UDP;unicast;destination=172.18.79.120:2005;client_port=4588-4589Range: now-endAccept: application/sdpS->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 3Location: rtsp:/Server: servername|ipaddr;portSession: 719885386Transport:MP2T/RTP/TCP|UDP;unicast;destination=172.18.79.120:2005;client_port=4588-4589;bandwidth=2000000;control_address=172.18.79.121;packagesize=32712/32712/188Content-Type: application/sdpContent-Length: 493SDP ContentsPLAYC->S(从STB到服务器方向):PLAY rtsp:/ RTSP/1.0CSeq: 5Session: 719885386destination=172.18.79.120:2005;client_port=4588-4589Scale/speed: 1.0Range: npt=10-15,npt=20-25,npt=now,beginning,endx-playNow: S->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 5Session: 719885386Server: servername|ipaddr;portScale: 1.0Range: npt=10-15,npt=20-25, npt=now,beginning,endx-playNow: REDIRECTC->S(从STB到服务器方向):REDIRECT rtsp:/ RTSP/1.0CSeq: 732Location: rtsp:/ipaddr:8001Range: npt=0- ;time=19960213T143205Z , npt=now,beginning,endscale:1.0 Session: uZ3ci0K+Ld-M3.2 暂停播放图6 暂停播放时序图PAUSEC->S(从STB到服务器方向):PAUSE rtsp:/ RTSP/1.0CSeq: 834Session: 12345678destination=172.18.79.120:2005;client_port=4588-4589【注】暂停超时时间由服务器决定,例如30分钟。当服务器判断为超时,则发送announce通知暂停超时,原因为PAUSE_TIMEOUT。S->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 834Date: 23 Jan 1997 15:35:06 GMTRange: npt=45.76-,npt=now,beginning,endScale:0.000Speed:0.0000003.3 快进播放图7 快进播放时序图PLAYC->S(从STB到服务器方向):PLAY rtsp:/ RTSP/1.0CSeq: 5Session: 719885386destination=172.18.79.120:2005;client_port=4588-4589Scale/speed: 2.0Range: npt=10-15,npt=now-endx-playNow: 待添加的隐藏文字内容3【注 1】C->S Play 带 Scale 参数请求,Scale 参数至少支持 2.0、4.0、8.0、16.0。快进、快退播放过程中服务器只发送 I 帧视频,音频数据不发送。【注 2】C->S Play 带 Range 参数请求,Range 参数由 STB 指定,为相对于节目开始的秒数。SERVER 收到后, 应该从该指定时间开始播放.【注 3】 npt 格式中,now 代表节目的当前时间,beginning 表示节目的开始时间,end 代表节目的结束时间.S->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 5Session: 719885386Server: servername|ipaddr;portScale: 2.0Range: npt=10-15, npt=now-endx-playNow: 3.4 快退播放图8 快退播放时序图PLAYC->S(从STB到服务器方向):PLAY rtsp:/ RTSP/1.0CSeq: 5Session: 719885386destination=172.18.79.120:2005;client_port=4588-4589Scale/speed: -2.0Range: npt=15-10, npt=now-beginning【注 1】C->S Play 带 Scale 参数请求,Scale 参数至少支持-2.0、-4.0、-8.0、-16.0。快进、快退播放过程中服务器只发送 I 帧视频,音频数据不发送。【注 2】C->S Play 带 Range 参数请求,Range 参数由 STB 指定,为相对于节目开始的秒数。SERVER 收到后, 应该从该指定时间开始播放.【注 3】 npt 格式中,now 和代表节目的当前时间,beginning 表示节目的开始时间,end 代表节目的结束时间.S->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 5Session: 719885386Server: servername|ipaddr;portScale: -2.0Range: npt=15-10, npt=now-endx-playNow: 3.5 定位播放图9 定位播放时序图PLAYC->S(从STB到服务器方向):PLAY rtsp:/ RTSP/1.0CSeq: 5Session: 719885386destination=172.18.79.120:2005;client_port=4588-4589Scale/speed: 1.0Range: npt=10-2000x-playNow: 【注 1】C->S Play 带 Range 参数请求,Range 参数由 STB 指定,为相对于节目开始的秒数。SERVER 收到后, 应该从该指定时间开始播放.【注 2】 npt 格式中,now 和代表节目的当前时间,beginning 表示节目的开始时间,end 代表节目的结束时间.S->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 5Session: 719885386Server: servername|ipaddr;portScale: 1.0Range: npt=10-15x-playNow: 3.6 退出播放3.6.1 用户主动退出播放图10 用户退出播放时序图TEARDOWN:C->S(从STB到服务器方向):TEARDOWN rtsp:/ RTSP/1.0Session: 12345678CSeq: 834destination=172.18.79.120:2005;client_port=4588-4589Connection: closeS->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 834Session: 12345678Connection: close3.6.2 文件结束或服务器强制退出播放图11 文件结束或服务器强制推出播放时序图ANNOUNCE:C->S(从STB到服务器方向):ANNOUNCE: rtsp:/ RTSP/1.0CSeq: 834Session: 12345678x-notice: xxxx “Internal Server Error” event-date =20050729T100431.097【注】xxxx: end 表示各种情况下的停止,beginning 表示 VOD 或直播时移到文件头, now表示直播时移到当前直播点;TEARDOWN:C->S(从STB到服务器方向):TEARDOWN rtsp:/ RTSP/1.0Session: 12345678CSeq: 834destination=172.18.79.120:2005;client_port=4588-4589Connection: closeS->C(从服务器到STB方向):RTSP/1.0 200 OKCSeq: 834Session: 12345678Connection: close4 机顶盒组播接口图12 IPTV 组播业务流程频道列表获取流程参见其它接口文档。符合IGMP标准V2。4.1 加入一个频道图13 加入一个频道时序图ü IGMP V2 Membership Report (IGMP join)ü IGMP Version: 2ü Type: Membership Report (0x16)ü Max Response Time: 0.0 sec (0x00)ü Header checksum: 0xABCD (例如0xfe8f 代表correct)ü Multicast Address: x.x.x.x4.2 离开一个频道图14 离开一个频道时序图ü IGMP Leave Groupü IGMP Version:2ü Type: Leave Group (0x17)ü Max Response Time: 0.0 sec (0x00)ü Head Checksum: 0xABCDü Multicast Address: x.x.x.x