AirenSoft / OvenMediaEngine

OvenMediaEngine (OME) is a Sub-Second Latency Live Streaming Server with Large-Scale and High-Definition. #WebRTC #LLHLS
https://airensoft.com/ome.html
GNU Affero General Public License v3.0
2.61k stars 1.06k forks source link

is adaptive streaming supported and how do I configure the server? #99

Closed IanMitchell77 closed 4 years ago

IanMitchell77 commented 4 years ago

How do I configure the server so that it supports adaptive streaming?

getroot commented 4 years ago

Right now for WebRTC's ABR, you need to create multiple streams and then switch them in the player. We are waiting for the best standard method for WebRTC ABR.

IanMitchell77 commented 4 years ago

A few months back you said "I do not know the exact requirements of (Seamless stream switching). If you do not allow 1 Frame of flickering, it is very difficult. But general switching can be implemented naturally in the player."

To confirm, that is not possible now but might be soon - right?

getroot commented 4 years ago

Let's check clearly. We are repeating the same story.

ABR Switching, which does not allow 1 frame flickering, must be supported at the protocol and browser level. Currently we only support ABR at the player level. The ABR method currently supported by OvenMediaEngine and OvenPlayer is to terminate the existing stream and play the new stream. Therefore, there must be some flicker.

The ABR supported at the WebRTC protocol level is https://www.w3.org/TR/webrtc-svc/ and https://datatracker.ietf.org/doc/draft-ietf-mmusic-sdp-simulcast/ specification. And this is not yet a complete standard. We are waiting for this to become a complete standard and all browsers support it. When the standard is complete, we will implement svc and simulcast to implement a complete ABR. But I am not sure that this will enable switching that does not even cause 1 frame flicker. Because I haven't seen this working yet.

And I am not sure that this will be implemented in OME soon. Because we have to wait for this to be a complete standard, then we need a lot of time to implement it.

I hope you have confirmed clearly.

IanMitchell77 commented 4 years ago

So how do you configure the media engine and player for ABR? 1 frame of flicker is ok for now. When I switch streams it takes several seconds but maybe Im not switching optimally - how should I switch?

getroot commented 4 years ago

You are going back to the beginning of the discussion. https://github.com/AirenSoft/OvenMediaEngine/issues/89#issuecomment-604943815

In my environment, your problem does not occur. What exactly do you mean by "Several seconds"? 3-4 seconds?

Is it the same if you test it at http://demo.ovenplayer.com? I can see the stream switching is done in less than 1 second with the same settings as you.

If you have the same problem at http://demo.ovenplayer.com, can you provide your webrtc streaming urls? I would like to analyze the stream.

getroot commented 4 years ago

Also, please refer to the following documents for OBS settings. Some information has been updated.

https://airensoft.gitbook.io/ovenmediaengine/getting-started

IanMitchell77 commented 4 years ago

Can you can switch with 1 frame of flicker?

The note says "If you use the default configuration, and the RTMP publishing URL is rtmp://192.168.0.1:1935/app/stream, WebRTC URL will be ws://192.168.0.1:3333/app/stream_o ws://192.168.0.1:3333/app/stream_webrtc"

If I have several streams, ws://?:3333/stream_1, ws://?:3333/stream_2 and ws://?:3333/stream_3 - how would I switch between them? What API? or should I us ws://?:3333/stream_webrtc as the URL to have it switch automatically?

IanMitchell77 commented 4 years ago

Can you please tell me the URL's and options that you use with the test player?

IanMitchell77 commented 4 years ago

My system isnt up right now...

getroot commented 4 years ago

Please take a look at the comment (https://github.com/AirenSoft/OvenMediaEngine/issues/99#issuecomment-615861955) I wrote above carefully. I said I had less than 1 second of switching. It's not 1 frame of flicker ... I hope we don't talk about 1 frame of flicker anymore. I think I have explained enough to you.

And my settings are at the URL below. Please look at this comment again.

https://github.com/AirenSoft/OvenMediaEngine/issues/89#issuecomment-604943815

According to my settings above, the URL is generated as ws://host: port/app/stream_low_o, ws://host: port/app/stream_medium_o, ws://host: port/app/stream_high_o.

The stream_o and stream_webrtc in the documentation are intended to guide people who use the default settings. This is not applicable to you because you have already modified and used Server.xml.

Go to http://demo.ovenplayer.com, enter your url (ws://?:3333/stream_1) and click add source. Then put ws: //?:3333/stream_2 and click add source once more. Then put ws://?:3333/stream_3 and click add source once more. Then click the Load Player button. After that, you can change the source through the Settings button on the bottom right of the player.

I don't know what you don't know.

If the system doesn't work, you have to show me OvenMediaEngine.log so I can analyze the problem. And always pull the Dev Branch to test with the latest version of OME. We are working on a lot of patches. If you use a different version from me, I am very confused.

And I can't provide my URL because I don't have a server you can use.

getroot commented 4 years ago

For the API of OvenPlayer used at http://demo.ovenplayer.com, please refer to the following document.

https://airensoft.gitbook.io/ovenplayer/

getroot commented 4 years ago

Since you said that stream switching takes a "SEVERAL SECONDS", I am trying to solve your problem. This is because my player completes switching in less than 1 second. Is this your problem? Right? And you want to reduce the switching time of several seconds to less "1 second", right? How many seconds does your player spend switching between streams? You just said Several seconds. Please tell me exactly how many seconds it takes. And tell me what your goals are.

getroot commented 4 years ago

I am suddenly confused. I thought you were talking about the previous problem again. Are you focused on switching the stream "automatically"?

If the network is very unstable during WebRTC playback and packet loss increases, the player will automatically try to switch source. Player will try to play down from the first inputted source in sequence. Are you talking about this?

What confuses me is that you've said switching takes several seconds over several times. Are you talking about a different topic from the one you created earlier? Please clarify the problem. Is it the time it takes to switch Source in Demo Player? Or is it time to automatically detect network condition?

If you're talking about automatic switching, you should have written this into the issue of OvenPlayer's repository.

As far as I know, OvenPlayer tries to play from the first source that comes in, and if the network is bad, it automatically tries to play the next source.

getroot commented 4 years ago

This issue has been closed since it has been inactive for quite some time. If you want to continue discussing this issue, please feel free to reopen it.