Ansersion / myRtspClient

A RTSP client based on jrtplib
Apache License 2.0
160 stars 91 forks source link

No RTP data #18

Closed cklxiaocui closed 5 years ago

cklxiaocui commented 5 years ago

你好,我使用master分支的代码, 1.在docker ubuntu16.04中执行以下命令

./recv_video_and_audio_example  rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov/
控制台打印如下:
Start play rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov/
Then put video data into test_video_recv.h264; And put audio data into test_audio_recv.mp3
MediaInfoCheck: 6781888
MyRTP_SetUp TCP: 0
Setup Session audio: MyRtsp: Success
MyRTP_SetUp TCP: 0
Setup Session video: MyRtsp: Success
PLAY Session audio: MyRtsp: Success
PLAY Session video: MyRtsp: Success
recv video data 1: 33 bytes
No RTP data
No RTP data
No RTP data
No RTP data
No RTP data
No RTP data

2.分析 通过wireshark / tcpdump 等抓包,发现rtsp交互流程到Play之后,但是使用VLC可以播放rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov/,通过对比之后,发现rtsp交互流程正确,但是服务器没有向客户端发送rtp数据包,所以 udpsession中的OnNewSource方法没有被触发。请问能帮我测下上边的rtsp地址吗?或者给我一些建议

3. 提一个bug 我发现libjrtp的依赖库jthread没有被正确的连接,编译完之后,libjrtp 生成的rtpconfig.h中,没有#define RTP_SUPPORT_THREAD

#define RTP_SUPPORT_IPV4MULTICAST

**// No support for JThread was enabled**

#define RTP_SUPPORT_SDESPRIV

#define RTP_SUPPORT_PROBATION
Ansersion commented 5 years ago

recv_video_and_audio_example使用UDP接收数据,之所以没有收到媒体数据是因为UDP数据无法内网穿透,如果你要用TCP,可以参考#14

Ansersion commented 5 years ago

之前测试有些问题,所以我目前是把jthread给禁用了,如果你要用的话,可以在config.XXX最后添加一行 RTP_JTHREAD = ENABLE

cklxiaocui commented 5 years ago

好的,谢谢。我昨天测试发现,使用自己内网的rtsp源是可以播放的。