#
# This is a test configuration file. You can invoke it with
# ../ffserver -f ffserver.conf
# when in the tests directory and once the vsynth1 subdirectory
# has been populated. Then point your browser at http://whatever:9999/teststat.html
# and you can look at the streams
#

#
# 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 9999
RTSPPort 9990

# Address on which the server is bound. Only useful if you have
# several network interfaces.

HTTPBindAddress 0.0.0.0

# Number of simultaneous requests that can be handled. Since FFServer
# is very fast, this limit is determined mainly by your Internet
# connection speed.

MaxClients 1000

MaxBandwidth 100000

# Access Log file (uses standard Apache log file format)
# '-' is the standard output

CustomLog -

##################################################################
# 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 (100M bytes here). Default:
# File=/tmp/feed_name.ffm FileMaxSize=5M

File tests/feed1.ffm
FileMaxSize 100M

# Fire up ffmpeg pointing at this stream

Launch ./ffmpeg -v 0 -y -f image2 -flags +bitexact -fflags +bitexact -i tests/vsynth1/%02d.pgm -flags +bitexact -fflags +bitexact

ACL allow localhost
</Feed>

##################################################################
# Now you can define each stream which will be generated from the
# original audio and video stream. Each format has a filename (here
# 'test128.mpg'). FFServer will send this stream when answering a
# request containing this filename.

<Stream test_h.avi>
Feed feed1.ffm
Format avi
#
BitExact
DctFastint
IdctSimple
VideoFrameRate 10
VideoSize 352x288
VideoBitRate 100
VideoGopSize 30
NoAudio

PreRoll 10
StartSendOnKey
MaxTime 100

</Stream>

<Stream test_l.avi>
Feed feed1.ffm
Format avi
#
BitExact
DctFastint
IdctSimple
VideoFrameRate 2
VideoSize 320x240
VideoBitRate 40
VideoGopSize 20
NoAudio

PreRoll 20
StartSendOnKey
MaxTime 100

</Stream>

#<Stream test_h.mpg>
#Feed feed1.ffm
#
#VideoFrameRate 10
#VideoSize 352x288
#VideoBitRate 100
#VideoGopSize 30
#NoAudio

#PreRoll 10
#StartSendOnKey
#MaxTime 100
#
#</Stream>
#
#<Stream test_l.mpg>
#Feed feed1.ffm
##
#VideoFrameRate 2
#VideoSize 320x240
#VideoBitRate 40
#VideoGopSize 20
#NoAudio
#
#PreRoll 20
#StartSendOnKey
#MaxTime 100
#
#</Stream>
#
<Stream test.swf>
Feed feed1.ffm
#
BitExact
DctFastint
IdctSimple
Qscale 10
VideoFrameRate 10
VideoSize 352x288
VideoBitRate 100
VideoGopSize 30
NoAudio

PreRoll 10
StartSendOnKey
MaxTime 100

</Stream>

<Stream test_h.asf>
Feed feed1.ffm
Format asf
#
BitExact
DctFastint
IdctSimple
Qscale 10
VideoFrameRate 10
VideoSize 320x240
VideoBitRate 100
VideoGopSize 30
NoAudio

PreRoll 10
StartSendOnKey
MaxTime 100

AVOptionVideo flags +global_header

Metadata title "Test data stream"

</Stream>

<Stream test_l.asf>
Feed feed1.ffm
Format asf
#
BitExact
DctFastint
IdctSimple
Qscale 10
VideoFrameRate 2
VideoSize 320x240
VideoBitRate 40
VideoGopSize 20
NoAudio

PreRoll 20
StartSendOnKey
MaxTime 100

AVOptionVideo flags +global_header

Metadata title "Test data stream"

</Stream>

<Stream test_h.rm>

Feed feed1.ffm
Format rm

BitExact
DctFastint
IdctSimple
Qscale 10
VideoBitRate 100
VideoFrameRate 10
VideoGopSize 30
VideoSize    320x240
NoAudio

PreRoll 10
StartSendOnKey
MaxTime 100

</Stream>

<Stream test_l.rm>

Feed feed1.ffm
Format rm

BitExact
DctFastint
IdctSimple
Qscale 10
VideoBitRate 40
VideoFrameRate 2
VideoGopSize 20
VideoSize    320x240
NoAudio

PreRoll 20
StartSendOnKey
MaxTime 100

</Stream>


<Stream test.jpg>

Feed feed1.ffm
Format jpeg
Strict -1

BitExact
DctFastint
IdctSimple
VideoFrameRate 1
VideoSize 352x288
NoAudio

PreRoll 2

</Stream>

<Stream test_small.jpg>

Feed feed1.ffm
Format jpeg
Strict -1

BitExact
DctFastint
IdctSimple
VideoFrameRate 1
VideoSize 160x128
NoAudio

PreRoll 2

</Stream>

<Stream test.mjpg>

Feed feed1.ffm
Format mpjpeg
Strict -1

BitExact
DctFastint
IdctSimple
VideoFrameRate 1
VideoSize    320x240
NoAudio
StartSendOnKey

PreRoll 1
MaxTime 100

</Stream>


##################################################################
# Special stream : server status

<Stream teststat.html>

Format status

</Stream>

