meetecho / janus-gateway

Janus WebRTC Server
https://janus.conf.meetecho.com
GNU General Public License v3.0
8.17k stars 2.47k forks source link

RTP Forward no longer working in VideoRoom plugin #975

Closed Joe-Palmer closed 7 years ago

Joe-Palmer commented 7 years ago

This may be a symptom of our specific setup but our RTP forward is no longer working and the only thing we have changed is upgrading Janus.

We have a setup where we create a room, setup a publisher session and then setup RTP forwarding to another server before the client connects and starts streaming video. This is to ensure that there is no timing issues and the first (key) frame is forwarded so we can process the entire video stream on the other server. This was working with Janus built from master on Tue 1 Aug 16:05:41 UTC 2017 but is no longer working with builds from master. I have swapped between builds from this date and now to demonstrate that forwarding was working and is now not.

There is nothing in the logs to suggest that something has gone wrong with the rtp_forward API call but something has changed that has broken the forwarding process that we currently have. I have looked at the changes in the video room plugin and there are a few commits since 1st Aug which could be the cause:

https://github.com/meetecho/janus-gateway/commits/master/plugins/janus_videoroom.c

How can we go about debugging this? I don’t think the way we are doing this is fundamentally flawed so this feels like this is a bug. Is there any more info that I could provide that would help work out what’s wrong? Should I recompile Janus at each commit to work out exactly which change caused the problem?

Many thanks.

derrell commented 7 years ago

While Lorenzo is away on holiday, maybe you can use git bisect to figure out exactly which commit it was that caused the problem.

Joe-Palmer commented 7 years ago

Good idea, thanks. I'll give it a try...

lminiero commented 7 years ago

Yep, identifying the commit that caused it will indeed help in the meanwhile. While I'm catching up with the mail, it will be some days before I'll return to the code.

lminiero commented 7 years ago

Verified that it was an issue introduced when we merged the simulcasting support, where we had a typo that caused video packets never to be forwarded when NOT simulcasting. Should be fixed now.

4i-helpynet commented 7 years ago

I build JANUS yesterday from GIT, and still only receive audio - ffmpeg cannot find any video stream even if .sdp file is okay

lminiero commented 7 years ago

Very likely your FFmpeg SDP is configured to accept a payload descriptor that is not the one in the actual RTP packets, and so FFmpeg dumps them.

sunnybear commented 6 years ago

Hello. Can anybody give working SDP file example for RTP forwarding? ffmpeg can't read video from port, tried various codes and SDP variants.

sunnybear commented 6 years ago

It seems magic is about video_ptype: 96 in rtp_forward request and the following lines (type 96) in SDP. All is working now. m=video 10035 RTP/AVP 96 a=rtpmap:96 VP8/90000

sunnybear commented 6 years ago

I'm very sorry, but it seems this issue need to have workaround or documentation. Right now can't get video working in Janus RTP Forward once more. The same config, video stream seems to be broken. tcpdump shows UDP packets on local port, but ffmpeg can't transcode them

23:27:36.161506 IP localhost.44693 > localhost.10035: UDP, length 1191 ...

My SDP file: v=0 o=- 0 0 IN IP4 127.0.0.1 s=Airee Webinar c=IN IP4 127.0.0.1 t=0 0 a=tool:libavformat 56.15.102 m=audio 10033 RTP/AVP 111 a=rtpmap:111 OPUS/48000/2 m=video 10035 RTP/AVP 96 a=rtpmap:96 VP8/90000

RTP forward request: {"request":"rtp_forward", "publisher_id": myid, "room": myroom, "host": "127.0.0.1", "audio_port": 10033, "audio_ptype": 111, "video_port": 10035, "video_ptype": 96}

lminiero commented 6 years ago

Please DON'T paste huge chunks of text inline. It's clearly written in the guidelines.

The feature IS documented. Look for the videoroom docs on the website.

sunnybear commented 6 years ago

sorry if something is wrong. I'm referring to this page - https://janus.conf.meetecho.com/docs/janus__videoroom_8c.html - but there is no info about transcoding of RTP stream

mirkobrankovic commented 5 years ago

https://github.com/meetecho/janus-gateway/blob/master/plugins/janus_videoroom.c#L637-L708