📜 ⬆️ ⬇️

Streaming video with ffserver & ffmpeg

To organize the broadcast we need:



Theory


FFmpeg is a set of free open source libraries that allow you to record, convert and transfer digital audio and video in various formats. It includes libavcodec, an audio and video encoding and decoding library and libavformat, a multiplexing and demultiplexing library in a media container. The name comes from the name of the MPEG expert group and “FF”, meaning “fast forward”.

© Wikipedia

ffserver comes bundled with ffmpeg and acts as a media server - it receives a video stream from ffmpeg, which can be run on another machine, and distributes it to happy users.
Each received stream is called a Feed (further there will be just a feed). There may be several such flows, as well as surrendered (output).
FFmpeg will capture video from a webcam or read from a file.

Practice


First, we configure ffserver, whose config file is in /etc/ffserver.conf:
  1. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  2. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  3. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  4. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  5. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  6. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  7. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  8. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  9. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  10. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  11. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  12. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  13. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  14. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  15. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  16. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  17. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  18. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  19. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  20. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  21. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  22. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  23. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  24. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  25. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  26. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  27. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  28. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  29. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  30. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  31. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  32. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  33. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  34. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  35. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  36. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  37. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  38. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  39. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  40. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  41. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  42. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  43. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>
  44. Port 8090 BindAddress 0.0.0.0 MaxClients 100 MaxBandwidth 20000 NoDaemon # , feed.ffm, ffmpeg <Feed feed.ffm> File /tmp/feed.ffm FileMaxSize 3M </Feed> <Stream test.flv> # Feed feed.ffm Format flv VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 200 # 1 31, 1 == 31 == ! VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 1 # , , Noaudio </Stream> # test.swf <Stream test.swf> Feed feed.ffm # Adobe Flash Player Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 50000 VideoBitRate 100 VideoQMin 1 VideoQMax 5 # , ! VideoSize 352x288 PreRoll 0 # , , Noaudio </Stream>


Start up ffserver:
$ ffserver

We let ffmpeg:
$ ffmpeg -s 352x288 -r 30 -f video4linux2 -i /dev/video0 http://localhost:8090/feed.ffm
-s resolution specified in ffserver config, -r number of frames / second, -f format, -i path to camera (or video file), http: // localhost: PORT / FEED is the address where ffserver will wait for our flow
')
PS: if you get an error, you can try the v4l format (-f video4linux)

Open http: // localhost: 8090 / test.swf in the browser and smile widely :)

To send a video, change the -i parameter to the file path, remove -f (ffmpeg will determine the file format itself):
$ ffmpeg -s 352x288 -r 30 -i ~/big_buck_bunny.ogg http://localhost:8090/feed.ffm

Well, to insert our flash drive into the html-page we use the following code:
<embed src = "http://localhost:8090/test.swf" width = "550" height = "400" >< / embed> .

Source: https://habr.com/ru/post/78677/


All Articles