noozo
noozo
SMSoftware Mansion
Created by noozo on 9/3/2024 in #membrane-help
web rtc engine and erlang clustering / load balancing
We are currently experiencing a problem where when we deploy our video room to production, which is a two node cluster (also with a load balancer in fly.io in front), the call drops for some people when another one joins, basically randomly. We know it's related to that because if we scale down to just one instance the calls work as expected. Any ideas what could be causing this?
2 replies
SMSoftware Mansion
Created by noozo on 6/17/2024 in #membrane-help
WebRTC no audio in incoming audio tracks
No description
8 replies
SMSoftware Mansion
Created by noozo on 4/12/2024 in #membrane-help
ex_dtls NIF crash when starting server
root@908001db526468:/app/bin# ./passion_fruit start
=ERROR REPORT==== 12-Apr-2024::09:51:36.565861 ===
Error in process <0.6069.0> with exit value:
{undef,
[{'Elixir.Mix',target,[],[]},
{'Elixir.Bundlex.Platform','get_target!',0,
[{file,"lib/bundlex/platform.ex"},{line,45}]},
{'Elixir.Bundlex',family,0,[{file,"lib/bundlex.ex"},{line,51}]},
{'Elixir.Bundlex.Helper.PathHelper',fix_slashes,1,
[{file,"lib/bundlex/helper/path_helper.ex"},{line,25}]},
{'Elixir.ExDTLS.Native.Nif',load_nif,0,
[{file,"lib/ex_dtls/native.ex"},{line,1}]},
{init,'-run_on_load_handler/2-fun-0-',1,[]}]}

=CRASH REPORT==== 12-Apr-2024::09:51:36.568905 ===
crasher:
initial call: kernel:init/1
exception exit: {on_load_function_failed,'Elixir.ExDTLS.Native.Nif',
{undef,
[{'Elixir.Mix',target,[],[]},
{'Elixir.Bundlex.Platform','get_target!',0,
[{file,"lib/bundlex/platform.ex"},{line,45}]},
{'Elixir.Bundlex',family,0,
[{file,"lib/bundlex.ex"},{line,51}]},
{'Elixir.Bundlex.Helper.PathHelper',fix_slashes,
1,
[{file,"lib/bundlex/helper/path_helper.ex"},
{line,25}]},
{'Elixir.ExDTLS.Native.Nif',load_nif,0,
[{file,"lib/ex_dtls/native.ex"},{line,1}]},
{init,'-run_on_load_handler/2-fun-0-',1,[]}]}}
in function init:run_on_load_handlers/0
in call from kernel:init/1 (kernel.erl, line 227)
ancestors: [kernel_sup,<0.6056.0>]
message_queue_len: 0
links: [<0.6058.0>]
trap_exit: false
status: running
heap_size: 610
stack_size: 28
reductions: 164
neighbours:
root@908001db526468:/app/bin# ./passion_fruit start
=ERROR REPORT==== 12-Apr-2024::09:51:36.565861 ===
Error in process <0.6069.0> with exit value:
{undef,
[{'Elixir.Mix',target,[],[]},
{'Elixir.Bundlex.Platform','get_target!',0,
[{file,"lib/bundlex/platform.ex"},{line,45}]},
{'Elixir.Bundlex',family,0,[{file,"lib/bundlex.ex"},{line,51}]},
{'Elixir.Bundlex.Helper.PathHelper',fix_slashes,1,
[{file,"lib/bundlex/helper/path_helper.ex"},{line,25}]},
{'Elixir.ExDTLS.Native.Nif',load_nif,0,
[{file,"lib/ex_dtls/native.ex"},{line,1}]},
{init,'-run_on_load_handler/2-fun-0-',1,[]}]}

=CRASH REPORT==== 12-Apr-2024::09:51:36.568905 ===
crasher:
initial call: kernel:init/1
exception exit: {on_load_function_failed,'Elixir.ExDTLS.Native.Nif',
{undef,
[{'Elixir.Mix',target,[],[]},
{'Elixir.Bundlex.Platform','get_target!',0,
[{file,"lib/bundlex/platform.ex"},{line,45}]},
{'Elixir.Bundlex',family,0,
[{file,"lib/bundlex.ex"},{line,51}]},
{'Elixir.Bundlex.Helper.PathHelper',fix_slashes,
1,
[{file,"lib/bundlex/helper/path_helper.ex"},
{line,25}]},
{'Elixir.ExDTLS.Native.Nif',load_nif,0,
[{file,"lib/ex_dtls/native.ex"},{line,1}]},
{init,'-run_on_load_handler/2-fun-0-',1,[]}]}}
in function init:run_on_load_handlers/0
in call from kernel:init/1 (kernel.erl, line 227)
ancestors: [kernel_sup,<0.6056.0>]
message_queue_len: 0
links: [<0.6058.0>]
trap_exit: false
status: running
heap_size: 610
stack_size: 28
reductions: 164
neighbours:
20 replies
SMSoftware Mansion
Created by noozo on 3/4/2024 in #membrane-help
Pipeline for muxing 2 msr files (audio and video) into a single flv file
I have the following pipeline which takes 2 msr files (recorded to disk using the RecordingEntrypoint from rtc_engine) and need to create a single video+audio file from it (trying flv at the moment but not tied to a specific type, just want something that popular tools can read and manipulate). My problem is that the end FLV file only plays audio. Here's the pipeline:
spec = [
# Part of pipeline which saves to FLV file
# child(:muxer, Membrane.MP4.Muxer.ISOM)
child(:muxer, Membrane.FLV.Muxer)
|> child(:sink, %Membrane.File.Sink{location: output_file}),

# Part of pipeline which reads from file and prepare video for muxing
child(:source, %Membrane.File.Source{location: video_track_file})
|> child(:deserializer_video, Membrane.Stream.Deserializer)
|> child(:rtp_video, %Membrane.RTP.DepayloaderBin{
depayloader: Membrane.RTP.H264.Depayloader,
clock_rate: 90_000
})
|> child(:parser_video, %Membrane.H264.Parser{
generate_best_effort_timestamps: %{framerate: {0, 1}},
output_stream_structure: :avc1
})
|> via_in(Pad.ref(:video, 0))
|> get_child(:muxer),
# Part of pipeline which reads from file and prepare audio for muxing
child(:source_audio, %Membrane.File.Source{location: audio_track_file})
|> child(:deserializer_audio, Membrane.Stream.Deserializer)
|> child(:rtp_audio, %Membrane.RTP.DepayloaderBin{
depayloader: Membrane.RTP.Opus.Depayloader,
clock_rate: 48_000
})
|> child(:opus_decoder, Membrane.Opus.Decoder)
|> child(:aac_encoder, Membrane.AAC.FDK.Encoder)
|> child(:aac_parser, %Membrane.AAC.Parser{
out_encapsulation: :none,
output_config: :audio_specific_config
})
|> via_in(Pad.ref(:audio, 0))
|> get_child(:muxer)
]
spec = [
# Part of pipeline which saves to FLV file
# child(:muxer, Membrane.MP4.Muxer.ISOM)
child(:muxer, Membrane.FLV.Muxer)
|> child(:sink, %Membrane.File.Sink{location: output_file}),

# Part of pipeline which reads from file and prepare video for muxing
child(:source, %Membrane.File.Source{location: video_track_file})
|> child(:deserializer_video, Membrane.Stream.Deserializer)
|> child(:rtp_video, %Membrane.RTP.DepayloaderBin{
depayloader: Membrane.RTP.H264.Depayloader,
clock_rate: 90_000
})
|> child(:parser_video, %Membrane.H264.Parser{
generate_best_effort_timestamps: %{framerate: {0, 1}},
output_stream_structure: :avc1
})
|> via_in(Pad.ref(:video, 0))
|> get_child(:muxer),
# Part of pipeline which reads from file and prepare audio for muxing
child(:source_audio, %Membrane.File.Source{location: audio_track_file})
|> child(:deserializer_audio, Membrane.Stream.Deserializer)
|> child(:rtp_audio, %Membrane.RTP.DepayloaderBin{
depayloader: Membrane.RTP.Opus.Depayloader,
clock_rate: 48_000
})
|> child(:opus_decoder, Membrane.Opus.Decoder)
|> child(:aac_encoder, Membrane.AAC.FDK.Encoder)
|> child(:aac_parser, %Membrane.AAC.Parser{
out_encapsulation: :none,
output_config: :audio_specific_config
})
|> via_in(Pad.ref(:audio, 0))
|> get_child(:muxer)
]
What am i doing wrong? Help appreciated!
4 replies