• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1- rtmp2sink: Should look into reconnecting and resuming stream without
2  deleting and recreating stream, which drops clients.
3
4- Move AMF parser/serializer to GstRtmpMeta?
5- Move AMF nodes from g_slice to GstMiniObject?
6
7- First video frame that comes from Wowza seems to be out-of-order; librtmp
8  does not have this problem
9
10- Refactor connection, pull out the ad-hoc read and write handling and put it
11  with the chunk layer into GBuffered{In,Out}putStream subclasses
12
13- Refactor elements and pull out the common connection+mainloop handling code
14  into a context object
15
16- Change the location properties into something with less boilerplate?
17
18  Perhaps a GstStructure-based prop, custom GValue transforms or GstValue
19  (de)serializing
20
21- Use glib-mkenums to generate GEnumClasses
22
23- Post-connect onStatus handling (needed for src EOS and async errors?)
24
25- Better mux/demux, at the cost of losing compatibility with flvmux/demux.
26
27  Something like (a/x = application/x-rtmp-messages):
28
29    rtmp2src ! a/x ! rtmp2demux ! a/x,type=video ! rtmp2videodecode ! h264parse
30                                ! a/x,type=audio ! rtmp2audiodecode ! aacparse
31
32      x264enc ! rtmp2videoencode ! a/x,type=video ! rtmp2mux ! a/x ! rtmp2sink
33    fdkaacenc ! rtmp2audioencode ! a/x,type=audio !
34
35  And also, in case no muxing is required:
36
37      x264enc ! rtmp2videoencode ! a/x,type=video ! rtmp2sink
38    fdkaacenc ! rtmp2audioencode ! a/x,type=video ! rtmp2sink
39
40  Proper GstBuffer timestamps need proper timestamp wraparound handling
41
42- Better client element, which generalizes the existing sink/src to allow
43  multiple streams over one connection
44  - Request src pad to play a stream
45  - Request sink pad to publish a stream (base it on GstAggregator?)
46  - rtmp2sink/src just specialize the client element with a static pad
47
48- Server implementation
49
50- Support more protocols
51  - rtmpe (App-layer encryption)
52  - rtmpt (HTTP tunneling)
53  - rtmpte (HTTP tunneling + App-layer encryption)
54  - rtmpts (HTTPS tunneling)
55  - rtmfp (UDP)
56
57Needed testing:
58
59- AMF parsing
60
61- connection closure by peer
62
63- connection timeouts
64