RTP stream
I'm trying to get a simple RTP stream pipeline working but hit the following error:
This appears to be due to the
ssrc_pt_mapping
being empty - how does this get populated? This is my initial pipeline:
The one key difference from the demo is I'm streaming an mpeg ts payload so payload type is 33. All works fine with ffplay
so I guess I'm missing something in the Membrane setup.7 Replies
Hi @al_m1 , you need to wait for a message from the session bin and then link it to the following element via proper output pad, like in the demo: https://github.com/membraneframework/membrane_demo/blob/master/rtp/lib/membrane_demo_rtp/receive_pipeline.ex#L45
This is something we intend to fix, so that if you know in advance what streams you're going to receive, you could just link the pad right away, but it's not trivial unfortunately
BTW I don't think we ever sent MPEG-TS via RTP, so let me know if you have any other problems 😉
Thanks @mat_hek . I can now see what I was doing wrong - adding the
|> child(:out, %Membrane.File.Sink{location: "tmp.ts"})
causes the error.
As you say I need to add this once the pipeline has received handle_child_notification({:new_rtp_stream, ssrc, 33, _extensions}, :rtp, _ctx, state)
.
Am I correct in assuming I'll need to implement a deplayloader for TS packets?Correct
Then you can demux with https://github.com/kim-company/membrane_mpeg_ts_plugin
Can you share what sends MPEG-TS within RTP? 🙂
Video from a UAV in STANAG 4609 format
Wow. Anyway, if you'd be willing to implement RTP MPEG-TS depayloader, I can help, but it seems it's quite complex https://www.rfc-editor.org/rfc/rfc2250
At the moment just passing the output from the RTP SessionBin to the demuxer from the membrane_mpeg_ts_plugin seems to work fine.
Glad to hear that! I'm wondering what is this RFC 2250 about then 😄