流媒体传输 JRTPLIB实现RTP/RTCP若干问题
先向各位大神问安:
本人毕设方向是关于流媒体的传输,但是之前并没有接触过这方面,加上手头资料并不丰富,看过后有如下几个问题一直困扰着我,望各位大神不吝赐教,先行拜谢。
看到一些文献后想直接使用JRTPLIB库进行实现(jrtplib-3.7.1),发送端通过RTP传输MPEG4码流至接收端,通过RTCP进行拥塞控制(打包方式、码率)。
问题:
1.关于接收端
固定模式是:
if (sess.GotoFirstSourceWithData()) {
do {
RTPPacket *pack;
pack = sess.GetNextPacket(); // 处理接收到的数据
delete pack;
} while (sess.GotoNextSourceWithData());
}
我测试过这程序,他不会一直等待接收RTP包,没有接收到后直接往下执行,所以需要加while(1)语句让他停留在此等待发送端发送数据。但是不知道需要在发送端发送什么数据让他知道码流发送完毕,跳出循环。
while(1){
if (sess.GotoFirstSourceWithData())
……
……
if( ???? )
break;
}
2. 关于 RTCP
介绍RTCP的资料更少,也可能是我看的太粗泛。
(1)RTCP包有好几种类型 SR, RR, SDES, BYE, APP 其中RR包是不是只由接收端往发送端发,而SR是不是只由发送端往接收端发;还是说不论是发送端还是接收端的RTCP包都有这些类型。
(2)在接收端需要接受RTP包进行处理同时在一定时间间隔内也要发送RTCP给发送端,这是不是表示需要开启两个线程? 想问各位大神讨要几个实例程序。
(3)关于RTCP的打包,RTCP的打包数据需要人为操作吗?还是说JRTPLIB 已经封装好了,直接调用?
本人诚心想各位请教,各位拉小弟一把。也欢迎正在弄这个同仁一起交流
邮箱: calvine_cuc@163.com
QQ : 332644260