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