Changes between Version 32 and Version 33 of StreamingGuide
- Timestamp:
- 10/13/2012 07:28:35 PM (7 months ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
StreamingGuide
v32 v33 2 2 [[PageOutline(2, Contents)]] 3 3 FFmpeg can basically stream through one of two ways: It either streams to a some "other server", which restreams for it, or it can stream via UDP directly to some destination host, or alternatively directly to a multicast destination. 4 Servers which can receive from FFmpeg (to restream) include [http://ffmpeg.org/ffserver.html ffserver] (linux only, though with cygwin it might work), or [http://en.wikipedia.org/wiki/Wowza_Media_Server Wowza Media Server], or [http://en.wikipedia.org/wiki/Adobe_Flash_Media_Server Flash Media Server]. Even [http://en.wikipedia.org/wiki/VLC_media_player VLC] can pick up the stream from ffmpeg, then redistribute it, acting as a server. Since FFmpeg is at times more efficient than VLC at doing the raw encoding, this can be a useful option compared to doing both transcoding and streaming in VLC. Nginx also has an rtmp redistribution plugin . You can also live stream to online redistribution servers like own3d.tv or justin.tv (for instance streaming your desktop).4 Servers which can receive from FFmpeg (to restream) include [http://ffmpeg.org/ffserver.html ffserver] (linux only, though with cygwin it might work), or [http://en.wikipedia.org/wiki/Wowza_Media_Server Wowza Media Server], or [http://en.wikipedia.org/wiki/Adobe_Flash_Media_Server Flash Media Server]. Even [http://en.wikipedia.org/wiki/VLC_media_player VLC] can pick up the stream from ffmpeg, then redistribute it, acting as a server. Since FFmpeg is at times more efficient than VLC at doing the raw encoding, this can be a useful option compared to doing both transcoding and streaming in VLC. Nginx also has an rtmp redistribution plugin, as does [http://h264.code-shop.com/trac/wiki apache etc.] probably. You can also live stream to online redistribution servers like own3d.tv or justin.tv (for instance streaming your desktop). Also any "rtmp server" will most likely work to receive streams from FFmpeg (these typically require you to setup a running instance on a server). 5 5 6 6 How to stream with several different simultaneous bitrates is described [http://sonnati.wordpress.com/2011/08/30/ffmpeg-%E2%80%93-the-swiss-army-knife-of-internet-streaming-%E2%80%93-part-iv/ here]. … … 57 57 NB that they also (for directshow devices) had to adjust the rtbufsize in that example. Also note that newer version of FFmpeg may need a different syntax for specifying preset/tune. 58 58 59 You can see a description of what some of these means, (for example bufsize, bitrate settings) [x264EncodingGuide|here].59 You can see a description of what some of these means, (for example bufsize, bitrate settings) in the [x264EncodingGuide]. 60 60 61 61 == Latency == … … 118 118 -i 'udp://localhost:5000?fifo_size=1000000&overrun_nonfatal=1' tells ffmpeg where to pull the input stream from. The parts after the ? are probably not needed most of the time, but I did need it after all. 119 119 120 -crf 30 sets the Content Rate Factor. That's an x264 argument that tries to keep reasonably consistent video quality . A value of 30 allows somewhat lower quality and bit rate.120 -crf 30 sets the Content Rate Factor. That's an x264 argument that tries to keep reasonably consistent video quality, while varying bitrate during more 'complicated' scenes, etc. A value of 30 allows somewhat lower quality and bit rate. See [x264EncodingGuide]. 121 121 122 122 -preset ultrafast as the name implies provides for the fastest possible encoding. If some tradeoff between quality and encode speed, go for the speed. This might be needed if you are going to be transcoding multiple streams on one machine. … … 142 142 'rtmp://<wowza server IP>/live/cam0' is where the transcoded video stream gets pushed to 143 143 144 == variable bitrate ==144 == Variable bitrate == 145 145 146 FFmpeg doesn't (today) support varying a bitrate based on changing network conditions. It does support outputting in several "different" fixed bitrates, at the same time, however [http://stackoverflow.com/questions/12041077/ffmpeg-output-to-multiple-files-simultaneously see here], which is vaguely related.146 FFmpeg doesn't (today) support varying the encoding bitrate based on fluctuating network conditions. It does support outputting in several "different" fixed bitrates, at the same time, however [http://stackoverflow.com/questions/12041077/ffmpeg-output-to-multiple-files-simultaneously see here], which is somewhat related. Also if you are during direct capture from directshow, the input device starts dropping frames when there is congestion, which somewhat simulates a varying bitrate. 147 147 148 == troubleshooting ==148 == Troubleshooting == 149 149 150 150 If you get a "black/blank" screen from your server, try sending it yuv422p or yuv420p type input. Some servers get confused if you send them yuv444 input (which is the default for libx264).


