RTP数据包识别

时间:2014-05-04 11:48:55

标签: sockets rtsp rtp ip-camera

我正在研究RTSP / RTP客户端的实现,并考虑如何处理每个RTP会话的客户端套接字。是否可以为不同的RTP源重用相同的套接字对?假设我有许多IP摄像机,我希望从它们接收媒体数据到单组RTP客户端端口(两个视频端口(数据和控制端口)和两个音频端口)。换句话说,我不希望拥有与IP摄像机数量一样多的客户端套接字集。如果我在一个插槽中收到很多数据流,我想知道如何区分哪个RTP数据包属于哪个摄像头?

2 个答案:

答案 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,它将为您提供数据包的发件人。