mat_hek
SMSoftware Mansion
•Created by River on 10/22/2024 in #membrane-help
Sections of files
BTW, an important thing you should consider is whether you need the segments to start exactly at the given point in time or not. If not, you may start at the nearest keyframe, which will remove the need for transcoding 😉
4 replies
SMSoftware Mansion
•Created by River on 10/22/2024 in #membrane-help
Sections of files
Hi there, I think you'll have better luck with FFmpeg for this use case. Membrane doesn't support seeking MP4s, so you'd have to read & skip the MP4 until the beginning of the segment
4 replies
SMSoftware Mansion
•Created by jkwchui on 9/27/2024 in #membrane-help
burn in caption to mp4
Hi there, if I get it right, all of them would do 😉 I’d start with Boombox and Image and see how it goes 🤔
2 replies
SMSoftware Mansion
•Created by oleg.okunevych on 9/25/2024 in #membrane-help
stream RTMP to VLC Network stream
I believe that the idea of RTMP.Sink is to push stream to some endpoint that is already listening for incoming connectionsThat's right. But to use the TCP Sink, you'd have to add all the RTMP-specific stuff into it, which would be quite messy. I think the way would be to create an RTMP sink that could get the client_ref from the RTMP server, like the source does. @Łukasz Kita WDYT?
9 replies
SMSoftware Mansion
•Created by oleg.okunevych on 9/25/2024 in #membrane-help
stream RTMP to VLC Network stream
Well, this pipeline seems to send H264 and AAC through TCP. RTMP is more than that, like it has session establishment. It also requires the stream to be muxed in FLV before sending. Long story short, you should probably use https://hexdocs.pm/membrane_rtmp_plugin/Membrane.RTMP.Sink.html 😉
9 replies
SMSoftware Mansion
•Created by oleg.okunevych on 9/25/2024 in #membrane-help
stream RTMP to VLC Network stream
Hi @oleg.okunevych, if it doesn't work out of the box, then probably we don't support this method. However, since our RTMP egress is based on FFmpeg, it should be quite straightforward to add if FFmpeg supports it. However, streaming to ffplay should work if you can use it instead of VLC 😉
9 replies
SMSoftware Mansion
•Created by DJMAKEITBRAIN on 8/29/2024 in #membrane-help
WebRTC TURN TCP/TLS configuration issue
cc @Jellyfish/WebRTC
4 replies
SMSoftware Mansion
•Created by Damirados on 8/20/2024 in #membrane-help
Lowest latency h264 UDP video stream possible.
There's also https://github.com/membraneframework/membrane_webrtc_plugin. If you want to minimize latency, set the
depayload: false
option in the WebRTC Source and plug the depayloader and jitter buffer manually, lowering the latency, just like in case of plain RTP.5 replies
SMSoftware Mansion
•Created by Damirados on 8/20/2024 in #membrane-help
Lowest latency h264 UDP video stream possible.
Regarding WebRTC, have a look at https://blog.swmansion.com/11-resources-that-will-help-you-start-with-webrtc-b7e48c178b76
5 replies
SMSoftware Mansion
•Created by Damirados on 8/20/2024 in #membrane-help
Lowest latency h264 UDP video stream possible.
WebRTC may be a good option - it also uses RTP over UDP, but adds more features, including retransmissions, which may be necessary in a poor network. Generally, its hard to achieve low latency in a poor network, as subsequent video frames depend on previous ones and dropping part of the stream, so you either wait for retransmission or the stream is undecodable.
5 replies
SMSoftware Mansion
•Created by Damirados on 8/20/2024 in #membrane-help
Lowest latency h264 UDP video stream possible.
Hi @Damirados , yeah RTP.SessionBin is quite complex and could use a refactor. It also doesn't allow configuring jitter buffer latency, but you can disable depayloading by setting
depayloader
option to nil
on the output pad and plugging depayloader and jitter buffer after the bin manually - then you can configure the latency
option - see https://hexdocs.pm/membrane_rtp_plugin/Membrane.RTP.JitterBuffer.html. Contrary to the name, jitter buffer actually doesn't control jitter - its main job is to make sure that packets are output in order, otherwise the stream could be undecodable, so I'd advise against removing it.5 replies
SMSoftware Mansion
•Created by Shuaib on 8/17/2024 in #membrane-help
Using Google meet as a source
Hi @Shuaib , unless there's any official API in Google Meet for exporting the stream, it's going to be tough, and I'd check if it isn't against T&Cs. I guess it's possible to grab the audio/video stream with JS though, and then you can send it via WebRTC to Membrane. Another way, possibly more future-proof, would be to record the entire browser window.
2 replies
SMSoftware Mansion
•Created by Aske on 7/4/2024 in #membrane-help
H265 choppy playback in QuickTime on Mac
Thanks @Billal for handling this, I didn't know about ex_mp4! We can consider basing the mp4 plugin on it when it's ready 😉
14 replies
SMSoftware Mansion
•Created by tintin on 7/6/2024 in #membrane-help
Does Overlay plugin support 30 fps?
Hi @tintin , you should easily get 30 FPS on a full HD stream on a reasonable machine, because the plugin converts the overlay to YUV and works in the YUV domain instead of converting the video to RGB and back 😉
4 replies
SMSoftware Mansion
•Created by Aske on 5/6/2024 in #membrane-help
Loop Audio File
glad to help 😉
21 replies
SMSoftware Mansion
•Created by Aske on 5/6/2024 in #membrane-help
Loop Audio File
Well, so apparently I was wrong - you cannot rely on the end of stream for that, because when the source sends it, it cannot send anything else anymore. I added an EndOfSeek event for that purpose and here's a simple example showing how to use it. Run with
elixir loop.exs
21 replies
SMSoftware Mansion
•Created by Damirados on 6/12/2024 in #membrane-help
Distributing pipeline in erlang cluster.
Could you point me to some code where I could get better understanding of what Membrane does in that case?It just spawns processes via rpc https://github.com/membraneframework/membrane_core/blob/010f29e2afb7a806ea378375935da0649379f9b6/lib/membrane/core/element.ex#L87
5 replies
SMSoftware Mansion
•Created by Damirados on 6/12/2024 in #membrane-help
Distributing pipeline in erlang cluster.
Regarding VP9, we're working on a plugin based on libvpx and we already got VP8/9 decoding working. It's early stage, but we should have encoding support very soon as well. See https://github.com/membraneframework/membrane_vpx_plugin/tree/setup-project
5 replies
SMSoftware Mansion
•Created by Damirados on 6/12/2024 in #membrane-help
Distributing pipeline in erlang cluster.
👋 I'm not sure what are the consequences of sending large amounts of data through Erlang distribution, however it's possible. The simplest way is to pass
node
option when spawning elements, for example {child(MyElement) |> child(AnotherElement), node: node}
. The problem is that it uses cross-node supervision, so if a node becomes unreachable, the pipeline will see it as if all the children on that node crashed, which may or may not be desired. Another way would be to have a pair of elements (sink and source) that would send data via Erlang messages and have separate pipelines. Membrane doesn't provide those, however they should be fairly easy to implement.5 replies
SMSoftware Mansion
•Created by TonyLikeSocks on 6/7/2024 in #membrane-help
WebRTC Endpoint + Mixing Multiple Tracks into a single mp4
FWIW we're locked on ratio 3.0, however 4.0 should work without problems, so you can override. We're going to allow 4.0 starting with core 1.1
7 replies