Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

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-HTTP ingestion protocol (WHIP) #383

Closed
JonasPrimbs opened this issue May 25, 2021 · 13 comments
Closed

WebRTC-HTTP ingestion protocol (WHIP) #383

JonasPrimbs opened this issue May 25, 2021 · 13 comments

Comments

@JonasPrimbs
Copy link

JonasPrimbs commented May 25, 2021

Hey all,

I was just taking a look at your implementation of the WebRTC upstream endpoint and in my opinion the "protocol" is a bit to overengineered.

Most of it (except the ICE trickling) can be done unsing one simple POST request for startup:
The request contains the Session Description and ICE Candidates of the client and the response contains the ones of the server. (This could be divided into two separate requests.)
The connection can then be closed using a simple HTTP DELETE request.
And that's it! No WebSocket connection, no state management, no issues when the WebSocket connection eventually breaks! Just a simple, minimalistic REST API.

And, here comes the best, this corresponds to a current (and very early) IETF draft, called "WebRTC-HTTP ingestion protocol (WHIP)": https://datatracker.ietf.org/doc/draft-murillo-whip/
So, why not trying to take part at the standardization process and make the WebRTC implementation more future-proof and interoperable to other tools?

By the way: I'm not part of this IETF working group. I'm just interested in the WebRTC technology and watching the draft for some months and it will make me happy to see it in action in my favorite streaming backend.

@dimiden
Copy link
Member

dimiden commented May 25, 2021

@JonasPrimbs
Thank you for your opinion!

As you mentioned, WebRTC signalling can be implemented in many other ways besides WebSocket, and the reason why we used WebSocket as a signalling method is to easily expand the functionality.

A typical example is the P2P Delivery feature.
Regular WebRTC playback is sufficient for REST APIs, but connection-oriented protocols such as WebSocket are beneficial for SDP negation between host/client peers.

Lastly, since I don't know much about WHIP, I think I need to review it with the OME developers.

@getroot
Copy link
Member

getroot commented May 26, 2021

WHIP has been mentioned several times when developing the WebRTC Provider. I'm reviewing this very positively, and will introduce it to OME someday. However, it is not an easy task as the structure of the current OvenMediaEngine needs to be changed as mentioned below. When I finish my high-priority task, I will start designing for WHIP.

#29 (comment)

@getroot getroot added the feature label Jun 8, 2021
@alexthedamager
Copy link

This looks interesting - WebRTC coming to vanilla OBS, but possibly not using WHIP? obsproject/rfcs#43

@alexthedamager
Copy link

OBS recently stated that native WebRTC support in OBS is due Q3 of 2022:
obsproject/obs-studio#4021 (reply in thread)

😳

@stale
Copy link

stale bot commented Jun 2, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Jun 2, 2022
@getroot getroot added the pinned label Jun 2, 2022
@stale stale bot removed the stale label Jun 2, 2022
@alexthedamager
Copy link

OBS has just released a prototype / playground for WebRTC / WHIP support within OBS: obsproject/obs-studio#7192

@alexthedamager
Copy link

Update: OBS now has an open PR for WebRTC / WHIP output.

An easy way to test this for those curious is by using broadcast-box: https://b.siobud.com/
https://github.com/Glimesh/broadcast-box

Exciting times!

@getroot
Copy link
Member

getroot commented Feb 10, 2023

@llspalex
I will start developing WHIP soon. So I am collecting material for this. I checked the WHIP RFC and the PR for OBS you posted. But I need a binary or installer of OBS for Windows with WHIP support to make things go smoothly, but I haven't been able to find one. do you know where I can get this? Or should I compile and use OBS myself?

@nums
Copy link
Contributor

nums commented Feb 10, 2023

@getroot you can also use this project : https://github.com/meetecho/simple-whip-client

@getroot
Copy link
Member

getroot commented Feb 10, 2023

@nums Thank you. I've never used Gstreamer yet, so I'm a bit confused. But I think it will be very useful for WHIP development.

@alexthedamager
Copy link

alexthedamager commented Feb 10, 2023

@getroot
The x64 Windows build in the "artifacts" section on the bottom of this page should have WHIP support: https://github.com/obsproject/obs-studio/actions/runs/3969201209

Also, here is a link to the latest WebRTC PR for OBS with recent discussion (it is not the same PR as the original "playground" PR I posted): obsproject/obs-studio#7926

@getroot
Copy link
Member

getroot commented Feb 10, 2023

@llspalex
Thank you. I downloaded OBS from the link you provided and confirmed that WHIP exists.

I was already checking the obsproject/obs-studio#7926 PR. I felt that OBS will officially support WHIP soon, so I will start working on it soon.

@getroot
Copy link
Member

getroot commented Feb 24, 2023

I've committed WHIP support to the master branch.
Please see #1043 for further discussion of WHIP.

@getroot getroot removed the pinned label Mar 3, 2023
@AirenSoft AirenSoft locked and limited conversation to collaborators Mar 9, 2023
@getroot getroot converted this issue into discussion #1096 Mar 9, 2023

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants