-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WebRTC Provider support #29
Comments
Yes, we plan to support WebRTC Input. However, RTMP and MPEGTS/UDP have a high priority because we aim to improve the existing broadcasting system. Because we have a number of important feature additions, the WebRTC Input feature will probably be available in late 2019 or early 2020. |
look forward to support WebRTC input, thanks! |
Thank you for your kind comments. |
Hello, Jumping into the conversation. How its going with the WebRTC Input? You said that the feature will be available in early 2020. I hope that it will be available soon as possible since it would made the total latency better. Best Regards |
Hello. Plans to develop our WebRTC input have been postponed. RTSP and MPEG-TS are on the verge of completion. I think this will further reduce your latency. (Note that both RTSP and WEBRTC use RTP as a data channel, so there will be no difference in latency.) But for us, WebRTC input is still one of the very high priority tasks. |
I am also very interested in a WebRTC Provider because this will allow users of my application to choose whether they want to use an entirely browser-based stream (like screen capture or webcam over WebRTC) or something more advanced like OBS Studio (layering multiple media sources and sending over RTMP). While the latter scenario is already possible, if OME had WebRTC Provider support, I would not need any additional media routing or tooling to support the former. Thanks! |
I am currently developing the WebRTC Provider, so I reopened this task. Currently, H.264 is input and it is confirmed that it works normally, and VP8/OPUS should be supported additionally, and only a few additional tasks are required. It will be released in 0.11.2. |
It's not complete yet, but you can test out WebRTC Input at the URL below. (Currently, only H.264 video is transmitted.) https://demo.ovenplayer.com/demo_input.html WebRTC Input URL works according to the following rules.
<> requires you to enter the information. !! Since the browser's GetUserMedia API is only available on the TLS site, you can only test it on the demo.ovenplayer.com site provided by https. Therefore, OME must also set TLS and provide the wss URL. If you are having trouble setting up TLS in OME, please allow Insecure content for demo.ovenplayer.com in Chrome's site settings as follows: The setting in OME currently only needs to be set in Bind. The rules are the same as WebRTC Publisher. The settings below are examples of the settings I use while developing.
|
Does this mean that we could use OBS-WebRTC to stream to OME? The WHIP protocol is very interesting and I think an important step towards moving away from RTMP. Allowing high bitrate stream publishing (far greater than the 2mbps limit in browsers) from OBS-WebRTC to OME would open up a world of possibilites 👍 |
@llspalex WHIP is very interesting for me too. However, in order to apply the signaling defined in WHIP to OME, I feel that the WHIP spec needs to be extended a little more. (E.g. setting up TURN for TCP transport) I'll keep watching this. Since everything is ready to apply WHIP, it will not be difficult for us to apply it in the future. I would like to look at SRT as the next provider. WebRTC Provider can meet the need to send streams directly from the browser without a separate program or plug-in, and I think SRT will be effective in transmitting high-definition video while replacing RTMP as you mentioned. |
I'm using nginx to provide WSS via reverse proxy to OME docker instance. I tested WebRTC and logs say: [2021-03-16 05:41:50.241] W [SckPoolRtcSigna:11] HttpServer | http_server.cpp:218 | No module could be found to handle this connection request : [ws://xx.karsiyaka.com/app/murat/?direction=send&transport=tcp] can we add ws:// support even though it won't work for webrtc publishing? |
@mpisat |
browser don't allow insecure connection then. if I use 3334 port, which is handled by Nginx reverse proxy and LetsEncrypt SSL, it thinks I'm sending video to ws:// on port 3333, which I am, and then it doesn't let me publish video by webrtc. ps: I can play videos on WebRTC by using TCP 3334 on Nginx reverse proxy with SSL and websockets support. |
I mean when your nginx proxy makes a request to OME, it asks ws://host/app/stream/?direction=send and /? Instead, only? Should exist. If a querystring comes in as /?, it may not be recognized at this time.(I will check it again) Let the player (WebRTC Producer) request 3334/TLS, and if nginx modifies the URL format when making a request to ome, I think it will work. (/? -> ?) |
I forward all requests without change anything. If there is an easy way to make it work with Docker, without nginx reverse proxy for wss, I can try? Manually compiling the project on a VPS takes several hours and it requires a lot of ram just to compile. Docker is so easy :) #nginx config
} |
In my environment I confirmed that it works well even if there is "/?" token in URL. That wasn't the problem. I don't have a certificate on my local server, so I allowed insecure content for demo.ovenplayer.com in chrome. Are you using the latest master version? If you want to keep testing WebRTC Input, please provide Server.xml and the URL you set in WebRTC Input. Our server automatically creates an image of the master branch and uploads it to the docker hub. https://hub.docker.com/r/airensoft/ovenmediaengine/tags?page=1&ordering=last_updated |
Now, you need to add WebRTC to the provider setting of the application. Here is the full Server.xml I use for testing.
|
@getroot I guess I need to modify Server.xml in docker files overlay files then? |
Use the :dev tag. That's the image of the master branch. Yes, you can overwrite Server.xml or create a volume as in the url below and use it. https://github.com/AirenSoft/OvenMediaEngine#getting-started |
@getroot [2021-03-16 07:55:19.961] W [SckPoolRtcSigna:10] HttpServer | http_server.cpp:218 | No module could be found to handle this connection request : [ws://do.karsiyaka.com/app/murat/?direction=send&transport=tcp] I just tested with allowing insecure content Server URL is unmasked now. |
My docker command to use your Server.xml (as provided as is) docker run -d --restart always |
@mpisat The log message "No module could be found~" indicates that the request did not reach the WebRTC Provider. You need to make sure that WebRTC Porvider (the module receiving input is not Publisher) is turned on in the Bind settings. If you want to use transport=tcp you need to forwarding port 3478/tcp as well. If not, remove transport=tcp from the url. |
[2] The crash is also reproduced by me. Thank you. I'll solve this soon. |
@saggiyogesh I solved the crash problem. All crashes were due to one cause. Once again thank you for your test. Now please check if your problem is solved. |
@getroot Sorry for confusing you with the webrtc keywords. I'm a novice to all this.
BTW, did you checked Case 3 |
The crash issue is fixed now. OME logs
|
It means there is no test stream in app application. Did you create an app/test stream? (webrtc input or rtmp input) When writing an issue, uploading the entire ovenmediaengine.log file will help me analyze it. Otherwise, I have no choice but to predict. |
Earlier Now attached logs with stream |
This means that data is not being transmitted through the data channel (3478 for TCP, 10005-10010 for UDP). The stream was deleted because there is no stream coming into the data channel, and the stream could not be found by trying to play it after it was deleted. If you are sending over tcp, check if you can communicate with the player on port 3478/tcp. Did you forward port 3478 when running the docker command? And upload the whole ovenmediaengine.log without editing. (If you need to delete IP address, please delete only that part.) Otherwise, it will be difficult for me to analyze the issue. (I have to predict everything else.) |
@saggiyogesh |
@getroot WebRTC Input (demo.ovenplayer.com/demo_input.html) What I observed is that WebRTC Input get disconnected after few minutes. |
Your log shows that the player could not send data to the server's 10000/udp port. So after 30 seconds timeout, the stream was automatically deleted. What command did you use when running Docker? Is the firewall open? |
@getroot finally its working. :) However in player, stream video gets freeze and pixelated. I think that's due to higher input resolution / size. Thanks.. |
@saggiyogesh |
@getroot Just added WebRTC configurations in Bind & Application Provider. |
@getroot wanted to check if the WebRTC Provider is in the Beta or development phase? I'm planning to use this in production. |
@saggiyogesh SignedPolicy is not applied, but most of the basic functionality is complete. But we want to do more tests. Therefore, the current state can be seen as close to Beta. |
Cool Thanks for the update. |
@getroot WHIP is already possible with Janus and Medooze - I think it would be incredible if OvenMediaEngine would also support it and would help WHIP gain momentum. I know you said that you wanted to wait until the protocol is extended a bit more, but is there any chance we'll see WHIP support in OME any time soon? I would love to contribute or help bring WHIP support to OME, but I'm not quite sure where to begin... |
Is it possible to add option to capture display and audio source as well on your demo webrtc website? I am using Voicemeeter so I can change an audio output of any app to a separate device. I would like to stream display or a window and then choose different audio device, but whenever I choose display capture the audio selector is hidden. I tried to modify javascript code on my computer but I am noob at js and I can't get it to work. |
@llspalex OME creates OfferSDP on the Server, but WHIP differs in that the client creates OfferSDP. This means that it requires quite a bit of development. WHIP is registered in my backlog. However, there are still a lot of tasks with higher priority than that. :-) |
@getroot Thank you for the info - good to know! 😁 |
@pateckii The DEMO site for WebRTC transmission is still under development. We'll check out the features you suggested. @SangwonOh |
I red that its possible to do with addTrack function to combine both display capture and audio source. |
I managed to get it working. I've used :dev version $ docker exec -it containerid /bin/bash $ cat > Server.xml This is the modified Server.xml I've used
$ exit $ docker restart containerID #this is important. |
Today I applied this feature to the default configuration. If you find another issue, please open a new issue. |
only rtmp input, can u support webrtc provider?
The text was updated successfully, but these errors were encountered: