This is a guide for C# developers who want to connect to an RTMP server and download streamed content.
To introduce the project I will start by describing the RTMP protocol and the quickest way to implement an RTMP client
using RtmpClient, and then explain the sample projects and
development advice available.
The libraries are packaged as zip files. Each zip file includes the RtmpClient library (BroccoliProducts.RtmpClient), and a low level library (BroccoliProducts.LowLevel) that the RtmpClient library uses.
The most recent builds are as follows:
|
File: |
RtmpClient32_34.zip
MOST RECENT BUILD |
x32 |
|
Current Build: |
BroccoliProducts.RtmpClient32.dll
1.4.32.34 (1st February 2012) |
|
Current Build: |
BroccoliProducts.LowLevel32.dll
1.4.32.228 (7th December 2011) |
|
System Requirements: |
Windows XP, Windows 7 |
|
File: |
RtmpClient64_34.zip
MOST RECENT BUILD |
x64 |
|
Current Build: |
BroccoliProducts.RtmpClient64.dll
1.4.64.34 (1st February2012) |
|
Current Build: |
BroccoliProducts.LowLevel64.dll 1.4.64.228
(7th December 2011) |
|
System Requirements: |
Windows 7 (x64) |
Previous builds and change history can be found in the
build archive.
What is RTMP?
RTMP (Real Time Messaging Protocol) is the dominant protocol for streaming audio and video content over the Internet. If you watch web-TV or listen to Internet radio, the chances are the data is being transmitted as RTMP messages (or one of its variants), from an RTMP server, to an RTMP client embedded in your browser. The most widely used RTMP client is Adobe's Flash Player.
RTMP streams data in three separate channels, or sub-streams - audio data, video data and meta-data. For a film, the audio-data is the soundtrack, the video-data is the images. For audio streaming, such as mp3 files, there is no video data. The meta-data describes the format of the video and audio data, for example, the dimensions of the video (e.g. 640x480), or the duration of the audio track. The main body of meta-data arrives when streaming starts.
RTMP is a complex protocol. It is owned by Adobe, and Adobe's official RTMP specification is not complete. The majority of usable information available on the workings of RTMP has been discovered by software developers' reverse engineering raw network port data. If your application requirement is to grab streamed RTMP data from a media server, a freely available
.Net RTMP client library will save you a lot of time.
The RTMP Client Library
The RTMP Client Library (BroccoliProducts.RtmpClient) provides a simple interface to an RTMP Server, with enough functionality to connect, disconnect, invoke commands, open and delete streams, and control the flow of the stream (pause, seek etc...). There are also classes to help you roll-your-own RTMP messages, and a feature for pre-processing incoming RTMP messages.
Connection Help
If you cannot connect to an RTMP source using RtmpClient, or the download
does not complete, please send us the details of the RTMP server in the
boxes below. The RTMP server must be on the Internet for us to connect
to.
Please do not send us details of RTMP servers on an address that begins with 192.168, for example, 192.168.1.12, as this is most likely to be an
internal network address for your network, and inaccessible to
anyone else.
Sample Projects
To develop with RtmpClient a good start is to look at the some
of the sample projects.
Each sample project is a simple console
applications that demonstrates downloading RTMP data
from the Internet and saving it to a file or displaying it on screen.
These sample projects have compiled and run on Windows 7
with VS2010. If you want to run these programs, make sure you
include a reference to the BroccoliProducts.RtmpClient library.
The sample projects include:
|
FileDump |
Streams a file from an RTMP server and
saves it to an FLV file.
|
|
LiveTv |
Streams a live stream of news
or television into an FLV file. |
|
BBC Radio Downloader
|
Downloads a BBC radio programme to an
FLV file, which can then be converted to an MP3.
|
|
Red5 Servers |
Downloading a stream from a
Red5 server. |
|
Tinychat |
Implementing a chatroom
application using an online service. |
There is a
technical reference
that documents the classes in the RtmpClient, and some
additional
development notes.
For troubleshooting an RtmpClient project see the
development FAQ.
A list of
online RTMP servers that can be used for testing can be found in the
feed directory.
More information