<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Apr 17, 2020 at 3:41 PM Nicolas Dufresne <<a href="mailto:nicolas@ndufresne.ca">nicolas@ndufresne.ca</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Le jeudi 16 avril 2020 à 16:25 -0500, strange_loop a écrit :<br>
> hls seems to be not supported in major browsers, however my problem is that<br>
<br>
See <a href="https://github.com/video-dev/hls.js/" rel="noreferrer" target="_blank">https://github.com/video-dev/hls.js/</a> it's widely used for the<br>
purpose. But indeed, HLS is not natively supported in browsers in<br>
general as it's not part of the standard.<br>
<br>
> what is the role of the server is this scenario.<br>
> Like okey I used  pipeline and video.js but how does my stream reaches the<br>
> client, over internet? How does it distirubuted?<br>
> <br>
> I am trying to create a mental model, so that I will know what tool serves<br>
> which purpose.<br>
> <br>
> I am very new to streaming, I basically know very little about it.  <br>
<br>
Streaming capabilities of browser is really poor in fact. That's mostly<br>
because the browser offers very high level solution where normal OS<br>
gives you low level UDP socket to play with.<br>
<br>
In the case of HLS the flow is the following:<br>
<br>
Server:<br>
  - A server (your RPi) encode and mux into MPEG TS<br>
  - It then split the MPEG TS in chunk and update a m3u8 playlist<br>
  - Another server (e.g. nginx) picks these files from disk to make<br>
them available to your browser<br>
<br>
Browser:<br>
  - The javascript will download though HTTP the m3u8 file and the MPEG<br>
TS chunk<br>
  - As MPEG TS is not supported by browser, it will transmux to<br>
fragmented ISOMP4 (yes, in JavaScript!)<br>
  - Is passes the chunk to the MSE JavaScript interface<br>
  - That get decoded and played on screen (using a video tag)<br>
<br>
If you use mpegsash, it's a bit lighter, since there is no transmuxing,<br>
you need a JS library still. For video conferencing it's a bit complex,<br>
but I'll keep it simple.<br>
<br>
You need 2 peers, and web server. Potentially a STUN and/or TURN server<br>
if the two peers have too restrictive network.<br>
<br>
  1. Peers call each other through the web server<br>
  2. They will use the web server to exchange some info: <br>
    - Network candidates, for ICE negotiation (nat traversal protocol)<br>
    - SDP to negotiate the transport and encoding<br>
  3. When a "connection" is established things goes peer-to-peer<br>
    - A DTLS connection is established (server no longer see what is<br>
going on)<br>
    - RTP and RTCP packets starts flowing<br>
<br>
Of course, when you go into big conference, the server becomes your<br>
peer so that it can do video and audio mixing. In that case, the server<br>
can see everything that is going on.<br>
<br>
In the old days, there was some "video streaming" that was using image<br>
tags and refreshing it. I think this is still possible using JPEG<br>
compression.<br></blockquote><div><br></div><div>motion delivers such simple robust solution. </div><div>brutforce and no audio </div><div>but works on anything that can pull a jpeg from a server</div><div><a href="https://motion-project.github.io/">https://motion-project.github.io/</a> </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br>
> <br>
> <br>
> <br>
> <br>
> --<br>
> Sent from: <a href="http://gstreamer-devel.966125.n4.nabble.com/" rel="noreferrer" target="_blank">http://gstreamer-devel.966125.n4.nabble.com/</a><br>
> _______________________________________________<br>
> gstreamer-devel mailing list<br>
> <a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</blockquote></div></div>