<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="209800" data-post-id="209800">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zeroexcuses" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zeroexcuses/120/21889_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zeroexcuses
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Membrane-Core-Team" data-username="mat-hek" data-post="11" data-topic="38809">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mat-hek/48/38168_2.png" class="avatar"> mat-hek:</div>
<blockquote>
<p>it doesn’t do reencoding, it only repacks/re-muxes streams</p>
</blockquote>
</aside>
<p>I do not yet know the difference between “re-encode” and “re-pack/re-mux”. The following is current best guess, is it correct?</p>
<p>Suppose we have input streams A, B, C, D, E and we want to output A+0.5B+0.1C</p>
<ul>
<li>
<p>re–pack/re-mux: we send the client 3 streams A, B, C; the client does out[t] = A[t] + 0.5B[t] + 0.1C[t] // in particular note that the client can thus <strong>prefectly</strong> recover A, B, and C</p>
</li>
<li>
<p>re-encode: the server does out[t] = A[t] + 0.5B[t] + 0.1C[t]; the server encodes out to a stream, and sends the client only a <strong>single</strong> stream // the client (without assuming structural properties) can’t directly access A, B, or C</p>
</li>
</ul>
<p>^-- is the following correct for ‘re-encode’ vs ‘re-pack/re-mux’ ?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="209800" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/erlang-elixir-sample-code-for-real-time-voice-chat/38809/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-209800" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="209800"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="209801" data-post-id="209801">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mat-hek" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mat-hek/120/38168_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mat-hek
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Membrane Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>You’re basically right. Encoding refers to codecs (like Opus or H264) and usually involves media compression, while packing/muxing refers to protocols or containers (like RTP or MP4), which only wrap the media, usually by adding some headers. Encoding usually involves some heavy computing, while muxing is just moving binaries around.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="209801" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/erlang-elixir-sample-code-for-real-time-voice-chat/38809/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-209801" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="209801"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="209803" data-post-id="209803">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zeroexcuses" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zeroexcuses/120/21889_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zeroexcuses
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/mat-hek" rel="nofollow">@mat-hek</a> : Thanks for jumping in and answering all my questions. I feel like I’m finally starting to see the basic building blocks involved.</p>
<p><a class="mention" href="/u/dimitarvp" rel="nofollow">@dimitarvp</a> : Thanks for mentioning the membrane project. This has turned out to be quite useful.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="209803" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/erlang-elixir-sample-code-for-real-time-voice-chat/38809/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-209803" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="209803"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="209888" data-post-id="209888">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="a8t" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/a8t/120/20611_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  a8t
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Awesome thread, I have nothing to contribute except admiration for this community where a question can be asked, a library maintainer can readily expound a ton of domain knowledge, and everyone’s day is better!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="209888" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/erlang-elixir-sample-code-for-real-time-voice-chat/38809/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-209888" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="209888"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="209894" data-post-id="209894">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Sebb" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Sebb/120/21818_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Sebb
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Great topic, this is something I do know nothing about, but its really interesting, I’d like to play around. Is there some tutorial material you can recommend to understand the basics to enable me to understand the membrane guide and the webrtc-sfu-server <a class="mention" href="/u/mat-hek" rel="nofollow">@mat-hek</a> mentioned.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="209894" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/erlang-elixir-sample-code-for-real-time-voice-chat/38809/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-209894" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="209894"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="209899" data-post-id="209899">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mickel8" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mickel8/120/32154_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mickel8
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Membrane Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>A bunch of useful links:</p>
<h3><a name="p-209899-multimedia-in-general-1" class="anchor" href="#p-209899-multimedia-in-general-1" aria-label="Heading link" rel="nofollow"></a>Multimedia in general</h3>
<ul>
<li><a href="http://xooyoozoo.github.io/yolo-octo-bugfixes/#moscow&amp;jpg=l&amp;bpg=l" rel="noopener nofollow ugc">Codecs comparison</a></li>
<li><a href="https://arjunsreedharan.org/post/146070390717/jpeg-101-how-does-jpeg-work" rel="noopener nofollow ugc">How does JPEG work?</a></li>
<li><a href="https://www.wisdomjobs.com/e-university/multimedia-tutorial-270/h-dot-261-12867.html" rel="noopener nofollow ugc">How does H261 work?</a></li>
</ul>
<h3><a name="p-209899-membrane-2" class="anchor" href="#p-209899-membrane-2" aria-label="Heading link" rel="nofollow"></a>Membrane</h3>
<ul>
<li><a href="https://www.membraneframework.org/guide/v0.6/introduction.html" rel="noopener nofollow ugc">Membrane Guide</a></li>
<li><a href="https://github.com/membraneframework/membrane_demo" rel="noopener nofollow ugc">Membrane Demos</a></li>
</ul>
<h3><a name="p-209899-webrtc-3" class="anchor" href="#p-209899-webrtc-3" aria-label="Heading link" rel="nofollow"></a>WebRTC</h3>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API" rel="noopener nofollow ugc">WebRTC API</a></li>
<li><a href="https://www.w3.org/TR/webrtc/" rel="noopener nofollow ugc">WebRTC W3C Standard</a></li>
<li><a href="https://webrtc.github.io/samples/" rel="noopener nofollow ugc">WebRTC Examples in JS</a></li>
<li><a href="https://github.com/webrtc/samples/tree/gh-pages/src/content" rel="noopener nofollow ugc">WebRTC Examples in JS src code</a></li>
<li><a href="https://www.html5rocks.com/en/tutorials/webrtc/basics/" rel="noopener nofollow ugc">WebRTC basics</a></li>
<li><a href="https://www.html5rocks.com/en/tutorials/webrtc/infrastructure/" rel="noopener nofollow ugc">WebRTC signaling</a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_calling" rel="noopener nofollow ugc">WebRTC signaling 2</a></li>
<li><a href="https://codelabs.developers.google.com/codelabs/webrtc-web/#0" rel="noopener nofollow ugc">WebRTC tutorial</a></li>
<li><a href="https://webrtchacks.com/" rel="noopener nofollow ugc">webrtcHacks</a> (mentioned by <a class="mention" href="/u/mat-hek" rel="nofollow">@mat-hek</a>)</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="209899" data-batch-url="/posts/batch_likers">
                        10
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/erlang-elixir-sample-code-for-real-time-voice-chat/38809/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-209899" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="209899"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="229683" data-post-id="229683">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="maxlapshin" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/maxlapshin/120/3220_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  maxlapshin
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>We at Flussonic have working webrtc implementation for many years (maybe 4 or 5 already).</p>
<p>It is not a signalling websocket server, it is a full audio/video implementation with DTLS,  STUN, TURN, ICE, NAT traversal, etc.</p>
<p>There are absolutely no reasons to suppose that writing it in Rust will give more scalability or “performance”. I can say it because we have Rust webrtc implementation also (in our IP camera firmware).</p>
<p>Rust is very cool, but is lacks that durability that BEAM has.</p>
<p>Erlang/Elixir are cool and absolutely suitable for handling audio/video traffic inside webrtc.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="229683" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/erlang-elixir-sample-code-for-real-time-voice-chat/38809/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-229683" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="229683"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="337780" data-post-id="337780">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="peterchancc" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  peterchancc
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Any more recent example/demo code that uses Elixir/Phoenix and WebRTC?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="337780" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/erlang-elixir-sample-code-for-real-time-voice-chat/38809/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-337780" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="337780"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="337785" data-post-id="337785">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mat-hek" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mat-hek/120/38168_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mat-hek
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Membrane Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yeah, things have changed over the years <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"> There’s a new library - <a href="https://github.com/elixir-webrtc/ex_webrtc" rel="noopener nofollow ugc">ex_webrtc</a>. Here are some <a href="https://github.com/elixir-webrtc/apps" rel="noopener nofollow ugc">examples that use Phoenix</a>. ex_webrtc also integrates with Membrane through <a href="https://github.com/membraneframework/membrane_webrtc_plugin" rel="noopener nofollow ugc">membrane_webrtc_plugin</a> - there are some simple examples in the ‘examples’ folder.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="337785" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/erlang-elixir-sample-code-for-real-time-voice-chat/38809/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-337785" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="337785"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="338283" data-post-id="338283">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mickel8" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mickel8/120/32154_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mickel8
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Membrane Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>And the examples are deployed under <a href="https://elixir-webrtc.org/#demos" class="inline-onebox" rel="noopener nofollow ugc">Elixir WebRTC</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="338283" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/erlang-elixir-sample-code-for-real-time-voice-chat/38809/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-338283" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="338283"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/38809/load_more?page=3">Load more posts (1 remaining)</a>
</div></template></turbo-stream>