我正在研究RTSP / RTP客户端的实现,并考虑如何处理每个RTP会话的客户端套接字。是否可以为不同的RTP源重用相同的套接字对?假设我有许多IP摄像机,我希望从它们接收媒体数据到单组RTP客户端端口(两个视频端口(数据和控制端口)和两个音频端口)。换句话说,我不希望拥有与IP摄像机数量一样多的客户端套接字集。如果我在一个插槽中收到很多数据流,我想知道如何区分哪个RTP数据包属于哪个摄像头?
答案 0 :(得分:1)
这就是RTP头的SSRC字段的用途。来自RFC3550:
同步源(SSRC):RTP流的源 数据包,由携带的32位数字SSRC标识符标识 RTP标头,以便不依赖于网络地址。 来自同步源的所有数据包都构成同一数据包的一部分 定时和序列号空间,所以接收器按包分组 用于播放的同步源。同步的例子 源包括从a派生的数据包流的发送者 信号源,如麦克风或相机,或RTP混音器 (见下文)。同步源可能会更改其数据格式, 例如,音频编码,随着时间的推移。 SSRC标识符是 随机选择的值意味着在a中全局唯一 特定的RTP会话(见第8节)。参与者不需要 对a中的所有RTP会话使用相同的SSRC标识符 多媒体会话; SSRC标识符的绑定是 通过RTCP提供(参见第6.5.1节)。如果是参与者 在一个RTP会话中生成多个流,例如从 单独的摄像机,每个必须被识别为不同的 SSRC。
答案 1 :(得分:0)
只要您只绑定套接字但不连接它们就可以。然后,您必须调用recvfrom,它将为您提供数据包的发件人。