原文第十四章
以下示例涉及非标准的流描述格式,例如RTSL。以下示例不作为这些格式的参考。
客户端C从媒体服务器a(audio.example.com)和V(video.example.com)请求电影。媒体描述存储在web服务器W上。媒体描述包含演示文稿及其所有流的描述,包括可用的编解码器、动态RTP有效负载类型、协议堆栈以及内容信息(如语言或版权限制)。它也可能给出电影的时间表的指示。
在这个例子中,客户只对电影的最后一部分感兴趣。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8cTRT7kN-1622021513781)(https://z3.ax1x.com/2021/05/26/291LHe.png)]
即使音频和视频磁道位于两个不同的服务器上,并且可能在稍有不同的时间开始,并且可能彼此漂移,客户端也可以使用标准RTP方法,特别是RTCP发送方报告中包含的时间尺度来同步这两个。
在本示例中,容器文件是一个存储实体,其中存在与同一最终用户表示相关的多个连续媒体类型。实际上,容器文件表示一个RTSP表示,它的每个组件都是RTSP流。容器文件是存储此类演示文稿的一种广泛使用的方法。当组件作为独立流传输时,希望在服务器端维护这些流的公共上下文。
这使服务器能够轻松地保持单个存储句柄处于打开状态。它还允许在服务器对流进行任何优先级排序的情况下平等地对待所有流。
也有可能呈现作者希望阻止客户选择性地检索流,以便保存组合媒体呈现的艺术效果。类似地,在这种紧密绑定的表示中,希望能够通过使用聚合URL的单个控制消息来控制所有流。
下面是使用单个RTSP会话控制多个流的示例。它还演示了聚合URL的使用。
客户机C从媒体服务器M请求演示。电影存储在一个容器文件中。客户端已获得容器文件的RTSP URL。
在第一个失败实例中,客户机尝试暂停演示的一个流(在本例中是视频)。服务器不允许对该演示文稿执行此操作。在第二个实例中,聚合URL可能不用于设置,并且每个流需要一个控制消息来设置传输参数。
这使传输头的语法保持简单,并允许防火墙轻松解析传输信息。
有些RTSP服务器可能会将所有文件视为“容器文件”,但其他服务器可能不支持这种概念。因此,客户端应该使用会话描述中规定的规则来处理请求URL,而不是假设始终可以使用一致的URL。下面是一个多流服务器如何期望单个流文件被服务的示例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UCckhhLD-1622021513784)(https://z3.ax1x.com/2021/05/26/298dWn.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zrO8xBGj-1622021513784)(https://z3.ax1x.com/2021/05/26/2986wF.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4uxxeUBw-1622021513785)(https://z3.ax1x.com/2021/05/26/298jSI.png)]
注意SETUP命令中的不同URL,然后切换回PLAY命令中的聚合URL。当存在多个具有聚合控制的流时,这是完全有意义的,但是在流的数量为一的特殊情况下,这不是直观的。
在这种特殊情况下,建议服务器原谅发送以下内容的实现:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KWfwTolX-1622021513785)(https://z3.ax1x.com/2021/05/26/29G1h9.png)]
在最坏的情况下,服务器应该发回:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Br3aW15h-1622021513786)(https://z3.ax1x.com/2021/05/26/29GwAe.png)]
我们还希望服务器实现也能原谅以下情况:
因为这个文件中只有一个流,所以这意味着什么并不含糊。
媒体服务器M选择多播地址和端口。这里,我们假设web服务器只包含指向完整描述的指针,而媒体服务器M维护完整描述。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-am5vtwJD-1622021513787)(https://z3.ax1x.com/2021/05/26/29YHTU.png)]
会议参与者C希望媒体服务器M将演示磁带回放到现有会议中。C向媒体服务器指示会议已经给出了网络地址和加密密钥,因此服务器不应选择这些地址和加密密钥。该示例省略了简单的ACK响应。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CsPfFYYR-1622021513787)(https://z3.ax1x.com/2021/05/26/29Yjp9.png)]
会议参与者客户端C要求媒体服务器M记录会议的音频和视频部分。客户端使用annound方法向服务器提供有关记录会话的元数据。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jiWWfOf4-1622021513788)(https://z3.ax1x.com/2021/05/26/29tFte.png)]