1RTMPDump
2Copyright 2008-2009 Andrej Stepanchuk; Distributed under the GPL v2
3Copyright 2009-2015 Howard Chu
4Copyright 2009 The Flvstreamer Team
5http://rtmpdump.mplayerhq.hu/
6
720 July 2011
8- add NetStream.Authenticate.UsherToken for Justin.tv
9
1011 July 2011, v2.4
11- add RTMPE type 9 handshake support
12
1330 June 2010, v2.3
14- fix RC4 cleanup for GnuTLS/gcrypt
15- declare RTMP_Write buf as const
16- cleanup Makefile
17- replace all use of bool with int
18- add RTMP_Socket() and RTMP_Pause() APIs
19- add ping/pong message handling
20- add basic shared library support
21- fix RTMP_ParseURL extension skipping
22- fix bad switch() from -r477 in RTMP_Read
23- fix rtmpsrv to always use .flv extension on output
24- fix crash on socket failure while RTMP_Read() is reading header
25- fix RTMP_ReadPacket signed/unsigned chars for m_nChannel
26- license cleanup, use current FSF address
27- fix RTMP_SetupURL tcUrl generation
28- ignore multiple spaces between URL options
29- only send CheckBW request once per session
30
3129 May 2010, v2.2e
32- port to Xbox
33- add explicit URL scheme for rtmpts
34- fix rtmpt clientID NUL-termination
35- use BufferEmpty trick in rtmpdump but not by default in librtmp
36- add librtmp manpage
37- fix RTMP_Read, return 0 on EOF, not -1
38- change RTMP_Read to return 1 packet at a time, fix buffer mgmt
39- fix request/result queue, fix server compatibility for Publishing
40- add RTMP_EnableWrite to enable Publishing
41
4229 April 2010, v2.2d
43- add RTMP_Alloc, RTMP_Free APIs
44- add optional support for polarssl instead of OpenSSL
45- add option to build crypto support without SSL/TLS
46- tweak handshake offset checking
47- add RTMP set_playlist command
48- check for (and fix) broken timestamps in FLV packets
49- fix tcUrl and playpath parsing in rtmpsrv and rtmpsuck
50- change internal boolean flags to bitmasks
51
5214 April 2010, v2.2c
53- internal restructuring, fix #undef CRYPTO builds
54- add RTMP_SetupURL, RTMP_SetOpt APIs
55- add logging callback
56
5722 March 2010, v2.2b
58- fix v2.2a crashes in rtmpsrv/rtmpsuck
59- fix v2.2a .swfinfo location on Windows
60- fix typo for --auth parameter in manpages
61- add FP10 handshake support for rtmpsrv/rtmpsuck
62- avoid GNUMake vs BSDMake incompatibilities
63- add pkgconfig file for librtmp
64- more library cleanup
65
6620 March 2010, v2.2a
67- fix C++ compatibility for librtmp
68- misc library restructuring
69- add client support for tunneling: rtmpt, rtmpte, rtmps
70- fix rtmpdump/rtmpgw FLV header dataType
71- implement RTMP_Read() and RTMP_Write() to simplify library use
72- fix SendPacket timestamps
73- add optional support for GnuTLS/Gcrypt instead of OpenSSL
74- use $HOMEPATH on Windows instead of $HOME for .swfinfo
75
764 March 2010, v2.2
77- move RTMP code into library librtmp
78- relicense RTMP code under LGPL v2.1
79- add rtmpdump manpage
80- fix AMF_LONG_STRING handling
81- more FlashPlayer 10 handshake support
82- in rtmpsrv fix Play Start/Stop messages
83- rename "streams" program to "rtmpgw"
84
8520 February 2010, v2.1d
86- extend .swfinfo file format, add --swfAge rtmpdump parameter
87  old file should be replaced or manually updated: copy the
88  "date:" line and rename it to "ctim:"
89
90- fix MacOSX builds - just use "make posix" now for all Unix-derived systems
91- more explicit error checks in HTTP_get()
92- in rtmpsrv spawn rtmpdump automatically
93- fix bug in retry/resume of audio-only streams
94- other minor misc. fixes
95
969 January 2010, v2.1c
97- cleanup rtmpsrv output
98- fix crash in 2.1b hashswf
99- fix parseurl to url-decode PlayPath
100- fix parseurl to recognize extensions followed by URL params
101- fix Makefile, inadvertently dropped 'v' from version string
102- in rtmpdump try Reconnect if ToggleStream doesn't work on timeouts
103- in rtmpsuck use chunk-based I/O for better latency
104- in rtmpsuck support lists of streams
105- in rtmpsuck use raw client connect packet to workaround unsupported features
106- support arbitrary AMF data appended to connect requests
107
1084 January 2010, v2.1b
109- fix url matching in .swfinfo lookup
110- fix resume parsing in rtmpdump
111- minor code cleanup (CRYPTO dependencies, logging)
112- add getStreamLength recognition to rtmpsrv
113- add close processing in rtmpsuck
114
1151 January 2010, v2.1a
116- fix socket receive timeouts for WIN32
117- add streams description to README
118
11929 December 2009, v2.1
120- AMF cleanup: bounds checking for all encoders, moved AMF_EncodeNamed* from rtmp.c
121- added SecureToken support
122- added automatic SWF hash calculation
123- added server-side handshake processing
124- added rtmpsrv stub server example
125- added rtmpsuck proxy server
126- tweaks for logging
127- renamed more functions to cleanup namespace for library use
128- tweaks for server operation: objectEncoding, chunksize changes
129
13016 December 2009, v2.0
131- rewrote everything else in C, reorganized to make it usable again as a library
132- fixed more portability bugs
133- plugged memory leaks
134
1352 December 2009, v1.9a
136- fix auth string typo
137- handle FCUnsubscribe message
138- don't try retry on live streams
139- SIGPIPE portability fix
140- remove "not supported" comment for RTMPE
141
14213 November 2009, v1.9
143- Handle more signals to reduce risk of unresumable/corrupted partially streamed files
144- Fixed >2GB file handling
145- Added --hashes option for a hash progress bar instead of byte counter
146- Fix to allow win32 to use binary mode on stdout.
147- Added auto-unpause for buffer-limited streams
148
1491 November 2009, v1.7
150
151- added --subscribe option for subscribing to a stream
152- added --start / --stop options for specifying endpoints of a stream
153- added --debug / --quiet / --verbose options for controlling output
154
155- added SOCKS4 support (by Monsieur Video)
156
157- restructured to support auto-restart of timed-out streams
158
159- rewritten byteswapping, works on all platforms
160
161- fixed errors in command / result parsing
162
163- support functions rewritten in C to avoid g++ compiler bugs on ARM
164
165- support for 65600 channels instead of just 64
166
167- fixed signature buffer overruns
168
16917 May 2009, v1.6
170
171- big endian alignment fix, should fix sparc64 and others
172
173- moved timestamp handling into RTMP protocol innings, all packets have
174absolute timestamps now, when seeking the stream will start with timestamp 0
175even if seeked to a later position!
176
177- fixed a timestamp bug (should fix async audio/video problems)
178
17930 Apr 2009, v1.5a
180
181- fixed host name resolution bug (caused unexpected crashes if DNS resolution
182was not available)
183
184- also using the hostname in tcUrl instead of the IP turns out to give much
185better results
186
18727 Apr 2009, v1.5
188
189- RTMPE support (tested on Adobe 3.0.2,3.0.3,3.5.1, Wowza)
190
191- SWFVerification (tested on Adobe 3.0.2,3.0.3,3.5.1)
192
193- added AMF3 parsing support (experimental feauture, only some primitives, no references)
194
195- added -o - option which allows the stream to be dumped to stdout
196(debug/error messages go to stderr)
197
198- added --live option to enable download of live streams
199
200- added support for (Free)BSD and Mac (untested, so might need more fixing,
201especially for PPC/sparc64)
202
203- fixed a bug in url parsing
204
205- added a useful application: streams, it will start a streaming server and
206using a request like http://localhost/?r=rtmp://.... you can restream the
207content to your player over http
208
20911 Mar 2009, v1.4
210
211- fixed resume bug: when the server switches between audio/video packets and FLV
212chunk packets (why should a server want to do that? some actually do!) and rtmpdump
213was invoked with --resume the keyframe check prevented rtmpdump from continuing
214
215- fixed endianness
216
217- added win32 and arm support (you can cross-compile it onto your Windows box
218or even PDA)
219
220- removed libboost dependency, written a small parser for rtmp urls, but it is
221more of a heuristic one since the rtmp urls can be ambigous in some
222circumstances. The best way is to supply all prameters using the override
223options like --play, --app, etc.
224
225- fixed stream ids (from XBMC tree)
226
22719 Jan 2009, v1.3b
228
229- fixed segfault on Mac OS/BSDdue to times(0)
230
231- Makefile rewritten
232
23316 Jan 2009, v1.3a
234
235- fixed a bug introduced in v1.3 (wrong report bytes count), downloads won't
236hang anymore
237
23810 Jan 2009, v1.3
239
240- fixed audio only streams (rtmpdump now recognizes the stream and writes a
241correct tag, audio, video, audio+video)
242
243- improved resume function to wait till a the seek is executed by the server.
244The server might send playback data before seeking, so we ignore up to e.g. 50
245frames and keep waiting for a keyframe with a timestamp of zero.
246
247- nevertheless resuming does not always work since the server sometimes
248doesn't resend the keyframe, seeking in flash is unreliable
249
25002 Jan 2009, v1.2a
251
252- fixed non-standard rtmp urls (including characters + < > ; )
253
254- added small script get_hulu which can download hulu.com streams (US only)
255(many thanks to Richard Ablewhite for the help with hulu.com)
256
25701 Jan 2009, v1.2:
258
259- fixed FLV streams (support for resuming extended)
260
261- fixed hanging download at the end
262
263- several minor bugfixes
264
265- changed parameter behaviour: not supplied parameters are omitted from the
266connect packet, --auth is introduced (was automatically obtained from url
267before, but it is possible to have an auth in the tcurl/rtmp url only without
268an additional encoded string in the connect packet)
269
27028 Dec 2008, v1.1a:
271
272- fixed warnings, added -Wall to Makefile
273
27428 Dec 2008, v1.1:
275
276- fixed stucking downloads (the buffer time is set to the duration now,
277  so the server doesn't wait till the buffer is emptied
278
279 - added a --resume option to coninue incomplete downloads
280
281- added support for AMF_DATE (experimental, no stream to test so far)
282
283- fixed AMF parsing and several small bugs (works on 64bit platforms now)
284
28524 Dec 2008, v1.0:
286
287- First release
288
289