Tutorial: Get RTMP links for TV Streams and others
Hi, in this tutorial we will see how we can easily get a RTMP link from a simple page and then you may use it stream live TV channels. I alert that i'll not give examples of pages in this tutorial, if you understand this tutorial, you will be able to reproduce the steps correctly in any link that you may have in hands.
Very well, you'll need the following:
- rtmpdump (it should include rtmpsuck)
- A page with a flash based object with the stream that you want to get the rtmp link
But before we start, do you know what is rtmp?
Have you read where it says "between a Flash player and a server" that it what you're thinking, it will only work with flash based objects, Media Player are not supported, by the way I can tell you already that there is a field of the rtmp link that is specifically for the SWF player.
Real Time Messaging Protocol (RTMP) was initially a proprietary protocol developed by Macromedia for streaming audio, video and data over the Internet, between a Flash player and a server.
Getting a rtmp link is fairly easy but you should be alerted that some times you may face some erros while trying to play a rtmp link, it generally means or your rtmp link is incomplete or wrong or then it is offline at the moment of test.
Let's start then our hunt for rtmp links, I'll use a Ubuntu 11.04 machine to do it, but it was confirmed to be working in Fedora 15.
1. Open the console of your distribution and type the following command as root:
sudo iptables -t nat -A OUTPUT -p tcp --dport 1935 -m owner \! --uid-owner root -j REDIRECT
On Fedora (if you're not a sudoer):
su -c 'iptables -t nat -A OUTPUT -p tcp --dport 1935 -m owner \! --uid-owner root -j REDIRECT'
2. Now that we are able to use rtmpsuck, let's use it, simply type the following command:
This command is used to redirect RTMP traffic to a proxy server (since RTMP links use the port 1935) so we can use rtmpsuck next to get the links
Once you enter this command, if it is working properly it will show the following output:
You'll notice that it will not allow you do run any command when rtmpsuck is running, that's normal, it means while it is running you're able to get the links. If for any case, you need to interrupt rtmpsuck to run other command, you may type on the same console CTRL+C and it will interupt the operation.
RTMP proxy server
Streaming on rtmp://0.0.0.0:1935
3. Now it is time to visit a page with a stream using Flash (confirm rtmpsuck is running), once you are there wait a little to the video start reproduce, once it starts, go back to the console, you'll now have some new lines, the last ones will be talking about the audio and video, go up a little so you can read the lines (<something> means what is written in your console, these fields change according to the streams):
Sometimes between this lines it may appear lines starting with "ERROR:", if it appears to you it means that the stream you chose is not the best, but if you can watch the stream on the page normally, then you should not have problems with it.
Let's explain briefly what is each field of the above (there other fields that may show you talking about the video and audio, but we don't need them for this):
4. Break down the operation now with Ctrl+C
app: This is the name of the application to connecto in order to run the RTMP, it is needed sometimes since sometimes the RTMP URL link parser can not find it by itself;
flashVer: This is the field that identifies the version of the Flash Player to run the RTMP - Probably you will not need to use it, since a default one is used - "LNX 10,0,32,18";
swfUrl: This specifies the link where the Flash Player used to stream the RTMP link is hosted - Needed everytime;
tcUrl: This specifies the link for the RTMP stream itself - Needed everytime;
pageUrl: This specifies the link for the page where the stream can be watched (it should be a .htm or something like that page) - Sometimes needed;
Playpath: This specifies the name of the file of the stream that is located in the tcUrl link (sometimes you will face this field as a complex name without a file format, that's normal) - Needed everytime;
5. Now we will write the final RTMP link that you need to stream it using Showtime, let's use the following form (it is the form that I used for me), the fields that are between < > is one of the above fiels value:
Let's see a fictional example of it, imagine that with rtmpsuck we got the following values:
<tcUrl>/<Playpath> swfUrl=<swfUrl> pageUrl=<pageUrl> swfVfy=true live=true tcUrl=<tcUrl>
With these values, our RTMP link would be:
flashVer: LNX 10,0,32,18
rtmp://example.com/live/file.flv swfUrl=http://example.com/player/player.swf pageUrl=http://otherexample.com/index.htm
swfVfy=true live=true tcUrl=rtmp://example.com/live
When writing the RTMP link like this write it followed don't change lines
Now we have the RTMP link! You may use it directly in a plugin of Showtime using it as a url for a video or put it in a remote xml file and inside a plugin of Showtime get access to that file and read the url and do the same thing as the statement before.
I hope you enjoyed my tutorial, it will be updated when problems or new solutions are found. Thanks for reading this. Now that you know how to get the RTMP links, you have the power to stream TV channels, use it in your responsability, the author of the tutorial does not take any responsability for the use that the user may give to it.
1. May i use this for Showtime in non-jailbroken consoles?
No, unfortunately you can't, this method at the moment is only supported by Showtime, so you need a jailbroken console.