gstreamer/subprojects/gst-plugins-bad/gst/rtmp2/TODO

64 lines
2.1 KiB
Plaintext

- rtmp2sink: Should look into reconnecting and resuming stream without
deleting and recreating stream, which drops clients.
- Move AMF parser/serializer to GstRtmpMeta?
- Move AMF nodes from g_slice to GstMiniObject?
- First video frame that comes from Wowza seems to be out-of-order; librtmp
does not have this problem
- Refactor connection, pull out the ad-hoc read and write handling and put it
with the chunk layer into GBuffered{In,Out}putStream subclasses
- Refactor elements and pull out the common connection+mainloop handling code
into a context object
- Change the location properties into something with less boilerplate?
Perhaps a GstStructure-based prop, custom GValue transforms or GstValue
(de)serializing
- Use glib-mkenums to generate GEnumClasses
- Post-connect onStatus handling (needed for src EOS and async errors?)
- Better mux/demux, at the cost of losing compatibility with flvmux/demux.
Something like (a/x = application/x-rtmp-messages):
rtmp2src ! a/x ! rtmp2demux ! a/x,type=video ! rtmp2videodecode ! h264parse
! a/x,type=audio ! rtmp2audiodecode ! aacparse
x264enc ! rtmp2videoencode ! a/x,type=video ! rtmp2mux ! a/x ! rtmp2sink
fdkaacenc ! rtmp2audioencode ! a/x,type=audio !
And also, in case no muxing is required:
x264enc ! rtmp2videoencode ! a/x,type=video ! rtmp2sink
fdkaacenc ! rtmp2audioencode ! a/x,type=video ! rtmp2sink
Proper GstBuffer timestamps need proper timestamp wraparound handling
- Better client element, which generalizes the existing sink/src to allow
multiple streams over one connection
- Request src pad to play a stream
- Request sink pad to publish a stream (base it on GstAggregator?)
- rtmp2sink/src just specialize the client element with a static pad
- Server implementation
- Support more protocols
- rtmpe (App-layer encryption)
- rtmpt (HTTP tunneling)
- rtmpte (HTTP tunneling + App-layer encryption)
- rtmpts (HTTPS tunneling)
- rtmfp (UDP)
Needed testing:
- AMF parsing
- connection closure by peer
- connection timeouts