Skip to content
This repository has been archived by the owner on Jan 30, 2024. It is now read-only.

Commit

Permalink
Adjust to new simulcast config. Remove things related to libnice. Upd…
Browse files Browse the repository at this point in the history
…ate deps. (#16)
  • Loading branch information
mickel8 authored Apr 27, 2022
1 parent dbcc9d2 commit 08d626b
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 108 deletions.
4 changes: 2 additions & 2 deletions assets/src/room.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,15 +72,15 @@ export class Room {
this.localAudioStream
?.getTracks()
.forEach((track) =>
this.webrtc.addTrack(track, this.localAudioStream!, {}, false)
this.webrtc.addTrack(track, this.localAudioStream!, {})
);

this.localVideoStream?.getTracks().forEach((track) => {
this.localVideoTrackId = this.webrtc.addTrack(
track,
this.localVideoStream!,
{},
true
{enabled: true, active_encodings: ["l", "m"]}
);
});

Expand Down
2 changes: 0 additions & 2 deletions config/config.exs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,4 @@ config :logger,

config :logger, :console, metadata: [:room, :peer]

config :ex_libnice, impl: NIF

import_config("#{config_env()}.exs")
64 changes: 0 additions & 64 deletions config/runtime.exs
Original file line number Diff line number Diff line change
@@ -1,47 +1,6 @@
import Config

defmodule ConfigParser do
def parse_stun_servers(""), do: []

def parse_stun_servers(servers) do
servers
|> String.split(",")
|> Enum.map(fn server ->
with [addr, port] <- String.split(server, ":"),
{port, ""} <- Integer.parse(port) do
%{server_addr: parse_addr(addr), server_port: port}
else
_ -> raise("Bad STUN server format. Expected addr:port, got: #{inspect(server)}")
end
end)
end

def parse_turn_servers(""), do: []

def parse_turn_servers(servers) do
servers
|> String.split(",")
|> Enum.map(fn server ->
with [addr, port, username, password, proto] when proto in ["udp", "tcp", "tls"] <-
String.split(server, ":"),
{port, ""} <- Integer.parse(port) do
%{
server_addr: parse_addr(addr),
server_port: port,
username: username,
password: password,
relay_type: String.to_atom(proto)
}
else
_ ->
raise("""
"Bad TURN server format. Expected addr:port:username:password:proto, got: \
#{inspect(server)}
""")
end
end)
end

def parse_integrated_turn_ip(ip) do
with {:ok, parsed_ip} <- ip |> to_charlist() |> :inet.parse_address() do
parsed_ip
Expand All @@ -54,24 +13,6 @@ defmodule ConfigParser do
end
end

def parse_use_integrated_turn("true"), do: true
def parse_use_integrated_turn("false"), do: false

def parse_use_integrated_turn(env) do
raise("""
Bad USE_INTEGRATED_TURN enviroment variable value. Expected "true" or "false", got: \
#{inspect(env)}
""")
end

def parse_addr(addr) do
case :inet.parse_address(String.to_charlist(addr)) do
{:ok, ip} -> ip
# FQDN?
{:error, :einval} -> addr
end
end

def parse_integrated_turn_port_range(range) do
with [str1, str2] <- String.split(range, "-"),
from when from in 0..65_535 <- String.to_integer(str1),
Expand Down Expand Up @@ -102,11 +43,6 @@ defmodule ConfigParser do
end

config :membrane_videoroom_demo,
stun_servers:
System.get_env("STUN_SERVERS", "64.233.163.127:19302") |> ConfigParser.parse_stun_servers(),
turn_servers: System.get_env("TURN_SERVERS", "") |> ConfigParser.parse_turn_servers(),
use_integrated_turn:
System.get_env("USE_INTEGRATED_TURN", "false") |> ConfigParser.parse_use_integrated_turn(),
integrated_turn_ip:
System.get_env("INTEGRATED_TURN_IP", "127.0.0.1") |> ConfigParser.parse_integrated_turn_ip(),
integrated_turn_port_range:
Expand Down
24 changes: 8 additions & 16 deletions lib/videoroom/room.ex
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ defmodule Videoroom.Room do
alias Membrane.RTC.Engine
alias Membrane.RTC.Engine.Message
alias Membrane.RTC.Engine.Endpoint.WebRTC
alias Membrane.RTC.Engine.Endpoint.WebRTC.SimulcastConfig
alias Membrane.ICE.TURNManager
alias Membrane.WebRTC.Extension.{Mid, Rid, TWCC}

Expand Down Expand Up @@ -36,8 +37,6 @@ defmodule Videoroom.Room do
trace_ctx: trace_ctx
]

use_integrated_turn = Application.fetch_env!(:membrane_videoroom_demo, :use_integrated_turn)

turn_cert_file =
case Application.fetch_env(:membrane_videoroom_demo, :integrated_turn_cert_pkey) do
{:ok, val} -> val
Expand All @@ -52,24 +51,19 @@ defmodule Videoroom.Room do
]

network_options = [
stun_servers: Application.fetch_env!(:membrane_videoroom_demo, :stun_servers),
turn_servers: Application.fetch_env!(:membrane_videoroom_demo, :turn_servers),
use_integrated_turn: use_integrated_turn,
integrated_turn_options: integrated_turn_options,
integrated_turn_domain:
Application.fetch_env!(:membrane_videoroom_demo, :integrated_turn_domain),
dtls_pkey: Application.get_env(:membrane_videoroom_demo, :dtls_pkey),
dtls_cert: Application.get_env(:membrane_videoroom_demo, :dtls_cert)
]

if use_integrated_turn do
tcp_turn_port = Application.get_env(:membrane_videoroom_demo, :integrated_tcp_turn_port)
TURNManager.ensure_tcp_turn_launched(integrated_turn_options, port: tcp_turn_port)
tcp_turn_port = Application.get_env(:membrane_videoroom_demo, :integrated_tcp_turn_port)
TURNManager.ensure_tcp_turn_launched(integrated_turn_options, port: tcp_turn_port)

if turn_cert_file do
tls_turn_port = Application.get_env(:membrane_videoroom_demo, :integrated_tls_turn_port)
TURNManager.ensure_tls_turn_launched(integrated_turn_options, port: tls_turn_port)
end
if turn_cert_file do
tls_turn_port = Application.get_env(:membrane_videoroom_demo, :integrated_tls_turn_port)
TURNManager.ensure_tls_turn_launched(integrated_turn_options, port: tls_turn_port)
end

{:ok, pid} = Membrane.RTC.Engine.start(rtc_engine_options, [])
Expand Down Expand Up @@ -134,16 +128,14 @@ defmodule Videoroom.Room do
rtc_engine: rtc_engine,
ice_name: peer.id,
owner: self(),
stun_servers: state.network_options[:stun_servers] || [],
turn_servers: state.network_options[:turn_servers] || [],
use_integrated_turn: state.network_options[:use_integrated_turn],
integrated_turn_options: state.network_options[:integrated_turn_options],
integrated_turn_domain: state.network_options[:integrated_turn_domain],
handshake_opts: handshake_opts,
log_metadata: [peer_id: peer.id],
trace_context: state.trace_ctx,
webrtc_extensions: [Mid, Rid, TWCC],
rtcp_fir_interval: Membrane.Time.seconds(10)
rtcp_fir_interval: Membrane.Time.seconds(10),
simulcast_config: %SimulcastConfig{enabled: true, default_encoding: fn _track -> "m" end}
}

Engine.accept_peer(rtc_engine, peer.id)
Expand Down
10 changes: 5 additions & 5 deletions lib/videoroom_web/templates/room/index.html.heex
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@
<div class="absolute text-green-700/100 text-shadow-lg bg-white bottom-0 right-0 p-2", style="color: green, font-size: 20px">
<label>Encodings to send</label>
<ul name="video-encoding-list">
<li><input type="checkbox" name="h" checked="true"> High</li>
<li><input type="checkbox" name="m" checked="true"> Medium</li>
<li><input type="checkbox" name="l" checked="true"> Low</li>
<li><input type="checkbox" name="h"> High</li>
<li><input type="checkbox" name="m" checked> Medium</li>
<li><input type="checkbox" name="l" checked> Low</li>
</ul>
</div>
</div>
Expand All @@ -37,12 +37,12 @@
<audio></audio>
<video class="w-full h-full"></video>
<div name="video-label" class="absolute text-white text-shadow-lg bottom-0 left-0 p-2">Placeholder</div>
<div name="video-encoding", class="absolute text-green-700/100 text-shadow-lg bg-white top-0 right-0 p-2", style="color: green, font-size: 20px">Encoding: h</div>
<div name="video-encoding", class="absolute text-green-700/100 text-shadow-lg bg-white top-0 right-0 p-2", style="color: green, font-size: 20px">Encoding: m</div>
<div class="absolute text-green-700/100 text-shadow-lg bg-white bottom-0 right-0 p-2", style="color: green, font-size: 20px">
<label>Encoding to receive</label>
<select name="video-encoding-select">
<option value="h">High</option>
<option value="m">Medium</option>
<option value="m" selected>Medium</option>
<option value="l">Low</option>
</select>
</div>
Expand Down
Loading

0 comments on commit 08d626b

Please sign in to comment.