我看jrtplib中创建rtp session 时要设置 baseport,但客户端怎么设啊,因为可能有多个客户端在一台机器上,普通的udp可以让系统分配随机端口,而jrtplib好像不支持这点,那么客户端怎么指定这个端口呢?

解决方案 »

  1.   

    uint16_t localport = 9000;RTPSession sess;
    RTPUDPv4TransmissionParams transparams;
    RTPSessionParams sessparams;sessparams.SetOwnTimestampUnit(1.0/8000);
    transparams.SetPortbase(localport);sess.create(sessparams,&transparams);就可以了,接收的端口必须为偶数.
    接收和发送都是用RTPSession类的.jrtplib库的代码有四个例子,你可以看下一下.
      

  2.   

    怎么随机?用数学库里的rand()?
    还是自己做个界面,填一个设定的端口?所有端口都可能被占用啊,占用后你处理一下就行了,换个端口.
      

  3.   

    int port;
    port = abs(rand()*2%5000+1000);难道是这种?
      

  4.   

    建议bind到0端口,这样子系统会分配一个随机端口。
      

  5.   

    建个socket 绑定到 9000, 假如不成功换下一个,知道成功,关闭socket,给它使用: transparams.SetPortbase(); 
      

  6.   

    to unsigned:
    直接bind到0端口不行,jrtplib内部会建两个socket,第二个它用你传入的端口(这里是0)+1作为端口,这样第一个socket是随机的端口,第二个端口始终是1。这样其他的rtp session就会Create失败。