RTMPDump
Copyright 2008-2009 Andrej Stepanchuk; Distributed under the GPL v2
Copyright 2009-2010 Howard Chu
Copyright 2009 The Flvstreamer Team
http://rtmpdump.mplayerhq.hu/

9 January 2010, v2.1c
- cleanup rtmpsrv output
- fix crash in 2.1b hashswf
- fix parseurl to url-decode PlayPath
- fix parseurl to recognize extensions followed by URL params
- fix Makefile, inadvertently dropped 'v' from version string
- in rtmpdump try Reconnect if ToggleStream doesn't work on timeouts
- in rtmpsuck use chunk-based I/O for better latency
- in rtmpsuck support lists of streams
- in rtmpsuck use raw client connect packet to workaround unsupported features
- support arbitrary AMF data appended to connect requests

4 January 2010, v2.1b
- fix url matching in .swfinfo lookup
- fix resume parsing in rtmpdump
- minor code cleanup (CRYPTO dependencies, logging)
- add getStreamLength recognition to rtmpsrv
- add close processing in rtmpsuck

1 January 2010, v2.1a
- fix socket receive timeouts for WIN32
- add streams description to README

29 December 2009, v2.1
- AMF cleanup: bounds checking for all encoders, moved AMF_EncodeNamed* from rtmp.c
- added SecureToken support
- added automatic SWF hash calculation
- added server-side handshake processing
- added rtmpsrv stub server example
- added rtmpsuck proxy server
- tweaks for logging
- renamed more functions to cleanup namespace for library use
- tweaks for server operation: objectEncoding, chunksize changes

16 December 2009, v2.0
- rewrote everything else in C, reorganized to make it usable again as a library
- fixed more portability bugs
- plugged memory leaks

2 December 2009, v1.9a
- fix auth string typo
- handle FCUnsubscribe message
- don't try retry on live streams
- SIGPIPE portability fix
- remove "not supported" comment for RTMPE

13 November 2009, v1.9
- Handle more signals to reduce risk of unresumable/corrupted partially streamed files
- Fixed >2GB file handling
- Added --hashes option for a hash progress bar instead of byte counter
- Fix to allow win32 to use binary mode on stdout.
- Added auto-unpause for buffer-limited streams

1 November 2009, v1.7

- added --subscribe option for subscribing to a stream
- added --start / --stop options for specifying endpoints of a stream
- added --debug / --quiet / --verbose options for controlling output

- added SOCKS4 support (by Monsieur Video)

- restructured to support auto-restart of timed-out streams

- rewritten byteswapping, works on all platforms

- fixed errors in command / result parsing

- support functions rewritten in C to avoid g++ compiler bugs on ARM

- support for 65600 channels instead of just 64

- fixed signature buffer overruns

17 May 2009, v1.6

- big endian alignment fix, should fix sparc64 and others

- moved timestamp handling into RTMP protocol innings, all packets have
absolute timestamps now, when seeking the stream will start with timestamp 0
even if seeked to a later position!

- fixed a timestamp bug (should fix async audio/video problems)

30 Apr 2009, v1.5a

- fixed host name resolution bug (caused unexpected crashes if DNS resolution
was not available)

- also using the hostname in tcUrl instead of the IP turns out to give much
better results

27 Apr 2009, v1.5

- RTMPE support (tested on Adobe 3.0.2,3.0.3,3.5.1, Wowza)

- SWFVerification (tested on Adobe 3.0.2,3.0.3,3.5.1)

- added AMF3 parsing support (experimental feauture, only some primitives, no references)

- added -o - option which allows the stream to be dumped to stdout
(debug/error messages go to stderr)

- added --live option to enable download of live streams

- added support for (Free)BSD and Mac (untested, so might need more fixing,
especially for PPC/sparc64)

- fixed a bug in url parsing

- added a useful application: streams, it will start a streaming server and
using a request like http://localhost/?r=rtmp://.... you can restream the
content to your player over http

11 Mar 2009, v1.4

- fixed resume bug: when the server switches between audio/video packets and FLV
chunk packets (why should a server want to do that? some actually do!) and rtmpdump
was invoked with --resume the keyframe check prevented rtmpdump from continuing

- fixed endianness

- added win32 and arm support (you can cross-compile it onto your Windows box
or even PDA)

- removed libboost dependency, written a small parser for rtmp urls, but it is
more of a heuristic one since the rtmp urls can be ambigous in some
circumstances. The best way is to supply all prameters using the override
options like --play, --app, etc.

- fixed stream ids (from XBMC tree)

19 Jan 2009, v1.3b

- fixed segfault on Mac OS/BSDdue to times(0)

- Makefile rewritten

16 Jan 2009, v1.3a

- fixed a bug introduced in v1.3 (wrong report bytes count), downloads won't
hang anymore

10 Jan 2009, v1.3

- fixed audio only streams (rtmpdump now recognizes the stream and writes a
correct tag, audio, video, audio+video)

- improved resume function to wait till a the seek is executed by the server.
The server might send playback data before seeking, so we ignore up to e.g. 50
frames and keep waiting for a keyframe with a timestamp of zero.

- nevertheless resuming does not always work since the server sometimes
doesn't resend the keyframe, seeking in flash is unreliable

02 Jan 2009, v1.2a

- fixed non-standard rtmp urls (including characters + < > ; )

- added small script get_hulu which can download hulu.com streams (US only)
(many thanks to Richard Ablewhite for the help with hulu.com)

01 Jan 2009, v1.2:

- fixed FLV streams (support for resuming extended)

- fixed hanging download at the end

- several minor bugfixes

- changed parameter behaviour: not supplied parameters are omitted from the
connect packet, --auth is introduced (was automatically obtained from url
before, but it is possible to have an auth in the tcurl/rtmp url only without
an additional encoded string in the connect packet)

28 Dec 2008, v1.1a:

- fixed warnings, added -Wall to Makefile

28 Dec 2008, v1.1:

- fixed stucking downloads (the buffer time is set to the duration now,
  so the server doesn't wait till the buffer is emptied

 - added a --resume option to coninue incomplete downloads

- added support for AMF_DATE (experimental, no stream to test so far)

- fixed AMF parsing and several small bugs (works on 64bit platforms now)

24 Dec 2008, v1.0:

- First release

