Skip to content

Instantly share code, notes, and snippets.

@mehome
Forked from thiagopintodev/ffserver.config
Created October 11, 2018 12:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mehome/e89e917e5c99b9e2cfe1a20120320f8c to your computer and use it in GitHub Desktop.
Save mehome/e89e917e5c99b9e2cfe1a20120320f8c to your computer and use it in GitHub Desktop.
<Stream status
Format status
</Stream>
<Redirect s>
URL status
</Redirect>
# <Redirect index.html>
# URL hubby.mjpg
# </Redirect>
# 3.5 Tips
# * When you connect to a live stream, most players (WMP, RA, etc) want to buffer a certain number of seconds of material so that they can display the signal continuously. However, ffserver (by default) starts sending data in realtime. This means that there is a pause of a few seconds while the buffering is being done by the player. The good news is that this can be cured by adding a ’?buffer=5’ to the end of the URL. This means that the stream should start 5 seconds in the past – and so the first 5 seconds of the stream are sent as fast as the network will allow. It will then slow down to real time. This noticeably improves the startup experience.
# You can also add a ’Preroll 15’ statement into the ffserver.conf that will add the 15 second prebuffering on all requests that do not otherwise specify a time. In addition, ffserver will skip frames until a key_frame is found. This further reduces the startup delay by not transferring data that will be discarded.
# Port on which the server is listening. You must select a different
# port from your standard HTTP web server if it is running on the same
# computer.
HTTPPort 81
# Address on which the server is bound. Only useful if you have
# several network interfaces.
# HTTPBindAddress 0.0.0.0
# Number of simultaneous HTTP connections that can be handled. It has
# to be defined *before* the MaxClients parameter, since it defines the
# MaxClients maximum limit.
# MaxHTTPConnections 2000
MaxHTTPConnections 10
# Number of simultaneous requests that can be handled. Since FFServer
# is very fast, it is more likely that you will want to leave this high
# and use MaxBandwidth, below.
# MaxClients 1000
MaxClients 10
# This the maximum amount of kbit/sec that you are prepared to
# consume when streaming to clients.
MaxBandwidth 1000
# Access log file (uses standard Apache log file format)
# '-' is the standard output.
CustomLog -
# Suppress that if you want to launch ffserver as a daemon.
# NoDaemon
##################################################################
# Definition of the live feeds. Each live feed contains one video
# and/or audio sequence coming from an ffmpeg encoder or another
# ffserver. This sequence may be encoded simultaneously with several
# codecs at several resolutions.
<Feed feed1.ffm>
# You must use 'ffmpeg' to send a live feed to ffserver. In this
# example, you can type:
#
# ffmpeg http://localhost:8090/feed1.ffm
# ffserver can also do time shifting. It means that it can stream any
# previously recorded live stream. The request should contain:
# "http://xxxx?date=[YYYY-MM-DDT][[HH:]MM:]SS[.m...]".You must specify
# a path where the feed is stored on disk. You also specify the
# maximum size of the feed, where zero means unlimited. Default:
# File=/tmp/feed_name.ffm FileMaxSize=5M
File feed1.ffm
FileMaxSize 200K
# You could specify
# ReadOnlyFile /saved/specialvideo.ffm
# This marks the file as readonly and it will not be deleted or updated.
# Specify launch in order to start ffmpeg automatically.
# First ffmpeg must be defined with an appropriate path if needed,
# after that options can follow, but avoid adding the http:// field
# Launch ffmpeg args
# Only allow connections from localhost to the feed.
#ACL allow 127.0.0.1
</Feed>
<Stream index.html>
Feed feed1.ffm
Format mpjpeg
VideoFrameRate 1
VideoIntraOnly
NoAudio
Strict -1
VideoSize vga
# Metadata author "Me"
# Metadata copyright "C"
# Metadata title "A"
# Metadata comment "B"
# StartSendOnKey
</Stream>
##################################################################
# Now you can define each stream which will be generated from the
# original audio and video stream. Each format has a filename (here
# 'test1.mpg'). FFServer will send this stream when answering a
# request containing this filename.
# <Stream a>
# # coming from live feed 'feed1'
# Feed feed1.ffm
# # Format of the stream : you can choose among:
# # <empty> : automatically guessed
# # mpeg : MPEG-1 multiplexed video and audio
# # mpegvideo : only MPEG-1 video
# # mp2 : MPEG-2 audio (use AudioCodec to select layer 2 and 3 codec)
# # ogg : Ogg format (Vorbis audio codec)
# # rm : RealNetworks-compatible stream. Multiplexed audio and video.
# # ra : RealNetworks-compatible stream. Audio only.
# # mpjpeg : Multipart JPEG (works with Netscape without any plugin)
# # jpeg : Generate a single JPEG image.
# # asf : ASF compatible streaming (Windows Media Player format).
# # swf : Macromedia Flash compatible stream
# # avi : AVI format (MPEG-4 video, MPEG audio sound)
# # Format mpeg
# Format mpjpeg
# # # Bitrate for the audio stream. Codecs usually support only a few
# # # different bitrates.
# # AudioBitRate 32
# # # Number of audio channels: 1 = mono, 2 = stereo
# # AudioChannels 1
# # # Sampling frequency for audio. When using low bitrates, you should
# # # lower this frequency to 22050 or 11025. The supported frequencies
# # # depend on the selected audio codec.
# # AudioSampleRate 44100
# # Bitrate for the video stream
# VideoBitRate 64
# # Ratecontrol buffer size
# VideoBufferSize 40
# # Number of frames per second
# VideoFrameRate 3
# # Size of the video frame: WxH (default: 160x128)
# # The following abbreviations are defined: sqcif, qcif, cif, 4cif, qqvga,
# # qvga, vga, svga, xga, uxga, qxga, sxga, qsxga, hsxga, wvga, wxga, wsxga,
# # wuxga, woxga, wqsxga, wquxga, whsxga, whuxga, cga, ega, hd480, hd720,
# # hd1080
# VideoSize 160x128
# # Transmit only intra frames (useful for low bitrates, but kills frame rate).
# #VideoIntraOnly
# # If non-intra only, an intra frame is transmitted every VideoGopSize
# # frames. Video synchronization can only begin at an intra frame.
# VideoGopSize 12
# # More MPEG-4 parameters
# # VideoHighQuality
# # Video4MotionVector
# # Choose your codecs:
# #AudioCodec mp2
# #VideoCodec mpeg1video
# # Suppress audio
# NoAudio
# # Suppress video
# #NoVideo
# #VideoQMin 3
# #VideoQMax 31
# # Set this to the number of seconds backwards in time to start. Note that
# # most players will buffer 5-10 seconds of video, and also you need to allow
# # for a keyframe to appear in the data stream.
# #Preroll 15
# # ACL:
# # You can allow ranges of addresses (or single addresses)
# #ACL ALLOW <first address>
# # You can deny ranges of addresses (or single addresses)
# #ACL DENY <first address>
# # You can repeat the ACL allow/deny as often as you like. It is on a per
# # stream basis. The first match defines the action. If there are no matches,
# # then the default is the inverse of the last ACL statement.
# #
# # Thus 'ACL allow localhost' only allows access from localhost.
# # 'ACL deny 1.0.0.0 1.255.255.255' would deny the whole of network 1 and
# # allow everybody else.
# </Stream>
# <Stream meta.asf>
# Feed feed1.ffm
# NoAudio
# Metadata author "Me"
# Metadata copyright "Super MegaCorp"
# Metadata title "Test stream from disk"
# Metadata comment "Test comment"
# </Stream>
# <Stream test.asf>
# Feed feed1.ffm
# Format asf
# VideoFrameRate 15
# VideoSize 352x240
# VideoBitRate 256
# VideoBufferSize 40
# VideoGopSize 30
# AudioBitRate 64
# StartSendOnKey
# </Stream>
# # ##################################################################
# # # Example streams
# # # Multipart JPEG
# <Stream test.mjpg>
# Feed feed1.ffm
# Format mpjpeg
# VideoFrameRate 1
# VideoIntraOnly
# NoAudio
# Strict -1
# VideoSize vga
# </Stream>
# # # Single JPEG
# <Stream test.jpg>
# Feed feed1.ffm
# Format jpeg
# VideoFrameRate 1
# VideoIntraOnly
# #VideoSize 352x240
# NoAudio
# Strict -1
# </Stream>
# # Flash
# #<Stream test.swf>
# #Feed feed1.ffm
# #Format swf
# #VideoFrameRate 2
# #VideoIntraOnly
# #NoAudio
# #</Stream>
# # ASF compatible
# <Stream test.asf>
# Feed feed1.ffm
# Format asf
# VideoFrameRate 15
# VideoSize 352x240
# VideoBitRate 256
# VideoBufferSize 40
# VideoGopSize 30
# AudioBitRate 64
# StartSendOnKey
# </Stream>
# # MP3 audio
# #<Stream test.mp3>
# #Feed feed1.ffm
# #Format mp2
# #AudioCodec mp3
# #AudioBitRate 64
# #AudioChannels 1
# #AudioSampleRate 44100
# #NoVideo
# #</Stream>
# # Ogg Vorbis audio
# #<Stream test.ogg>
# #Feed feed1.ffm
# #Title "Stream title"
# #AudioBitRate 64
# #AudioChannels 2
# #AudioSampleRate 44100
# #NoVideo
# #</Stream>
# # Real with audio only at 32 kbits
# #<Stream test.ra>
# #Feed feed1.ffm
# #Format rm
# #AudioBitRate 32
# #NoVideo
# #NoAudio
# #</Stream>
# # Real with audio and video at 64 kbits
# #<Stream test.rm>
# #Feed feed1.ffm
# #Format rm
# #AudioBitRate 32
# #VideoBitRate 128
# #VideoFrameRate 25
# #VideoGopSize 25
# #NoAudio
# #</Stream>
# ##################################################################
# # A stream coming from a file: you only need to set the input
# # filename and optionally a new format. Supported conversions:
# # AVI -> ASF
# #<Stream file.rm>
# #File "/usr/local/httpd/htdocs/tlive.rm"
# #NoAudio
# #</Stream>
# #<Stream file.asf>
# #File "/usr/local/httpd/htdocs/test.asf"
# #NoAudio
# #Author "Me"
# #Copyright "Super MegaCorp"
# #Title "Test stream from disk"
# #Comment "Test comment"
# #</Stream>
# ##################################################################
# # RTSP examples
# #
# # You can access this stream with the RTSP URL:
# # rtsp://localhost:5454/test1-rtsp.mpg
# #
# # A non-standard RTSP redirector is also created. Its URL is:
# # http://localhost:8090/test1-rtsp.rtsp
# #<Stream test1-rtsp.mpg>
# #Format rtp
# #File "/usr/local/httpd/htdocs/test1.mpg"
# #</Stream>
# # Transcode an incoming live feed to another live feed,
# # using libx264 and video presets
# #<Stream live.h264>
# #Format rtp
# #Feed feed1.ffm
# #VideoCodec libx264
# #VideoFrameRate 24
# #VideoBitRate 100
# #VideoSize 480x272
# #AVPresetVideo default
# #AVPresetVideo baseline
# #AVOptionVideo flags +global_header
# #
# #AudioCodec libfaac
# #AudioBitRate 32
# #AudioChannels 2
# #AudioSampleRate 22050
# #AVOptionAudio flags +global_header
# #</Stream>
# ##################################################################
# # SDP/multicast examples
# #
# # If you want to send your stream in multicast, you must set the
# # multicast address with MulticastAddress. The port and the TTL can
# # also be set.
# #
# # An SDP file is automatically generated by ffserver by adding the
# # 'sdp' extension to the stream name (here
# # http://localhost:8090/test1-sdp.sdp). You should usually give this
# # file to your player to play the stream.
# #
# # The 'NoLoop' option can be used to avoid looping when the stream is
# # terminated.
# #<Stream test1-sdp.mpg>
# #Format rtp
# #File "/usr/local/httpd/htdocs/test1.mpg"
# #MulticastAddress 224.124.0.1
# #MulticastPort 5000
# #MulticastTTL 16
# #NoLoop
# #</Stream>
sudo ffserver -f ffserver.config
# ffmpeg -f video4linux2 -i /dev/video0 http://0.0.0.0/feed1.ffm
ffmpeg -f video4linux2 -i /dev/video0 -an http://0.0.0.0/feed1.ffm
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment