Unable to send feed from ffmpeg to ffserver
I just compiled ffmpeg/ffserver on a FreeBSD 5.3 machine from the CVS, and am attempting to send ffserver a stream from a dv camera writting to a named pipe read by ffmpeg the set up is as follows: mkfifo camera.dv fwcontrol -R camera.dv ffserver -f /usr/local/etc/ffserver.conf ffmpeg -i camera.dv http://localhost:8090/feed1.ffm The output I get from ffmpeg: ffmpeg version 0.4.9-pre1, build 4754, Copyright (c) 2000-2004 Fabrice Bellard configuration: --enable-memalign-hack built on May 16 2005 06:03:36, gcc: 3.4.2 [FreeBSD] 20040728 Input #0, dv, from '/home/slava/camera.dv': Duration: N/A, start: 0.000000, bitrate: 28771 kb/s Stream #0.0: Video: dvvideo, yuv411p, 720x480, 29.97 fps, 25000 kb/s Stream #0.1: Audio: pcm_s16le, 48000 Hz, stereo, 1536 kb/s Output #0, ffm, to 'http://localhost:8090/feed1.ffm': Stream #0.0: Audio: mp2, 44100 Hz, mono, 32 kb/s Stream #0.1: Video: mpeg1video, yuv420p, 160x128, 3.00 fps, q=3-31, 64 kb/s Stream #0.2: Audio: mp2, 22050 Hz, mono, 64 kb/s Stream #0.3: Video: msmpeg4, yuv420p, 352x240, 15.00 fps, q=3-31, 256 kb/s Stream mapping: Stream #0.1 -> #0.0 Stream #0.0 -> #0.1 Stream #0.1 -> #0.2 Stream #0.0 -> #0.3 [mpeg1video @ 0x82ec9fc]removing common factors from framerate [mpeg1video @ 0x82ec9fc]MPEG1/2 does not support 3/1 fps Error while opening codec for output stream #0.1 - maybe incorrect parameters such as bit_rate, rate, width or height Is there anything I can do to resolve this problem? The ffserver.conf looks like this, it's more or less the sample config exactly: # 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. Port 8090 # Address on which the server is bound. Only useful if you have # several network interfaces. BindAddress 0.0.0.0 # 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 # 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 (100M bytes here). Default: # File=/tmp/feed_name.ffm FileMaxSize=5M File /tmp/feed1.ffm FileMaxSize 10M # 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 #Launch # Only allow connections from localhost to the feed ACL allow 127.0.0.1 </Feed> ################################################################## # 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 test1.mpg> # coming from live feed 'feed1' Feed feed1.ffm # Format of the stream : you can choose among: # mpeg : MPEG1 multiplexed video and audio # mpegvideo : only MPEG1 video # mp2 : MPEG2 audio (use AudioCodec to select layer 2 and 3 codec) # ogg : Ogg format (Vorbis audio codec) # rm : Real Networks compatible stream. Multiplexed audio and video. # ra : Real Networks 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(tm) compatible stream # avi : AVI format (open divx video, mpeg audio sound) # master : special ffmpeg stream used to duplicate a server Format mpeg # 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 abbreviation are defined : sqcif, qcif, cif, 4cif 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 I frames. VideoGopSize 12 # More MPEG4 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 key frame 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> ################################################################## # Example streams # Multipart JPEG #<Stream test.mjpg> #Feed feed1.ffm #Format mpjpeg #VideoFrameRate 2 #VideoIntraOnly #NoAudio #</Stream> # Single JPEG #<Stream test.jpg> #Feed feed1.ffm #Format jpeg #VideoFrameRate 2 #VideoIntraOnly ##VideoSize 352x240 #NoAudio #</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 optionnally 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 to 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> ################################################################## # 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> ################################################################## # Special streams # Server status <Stream stat.html> Format status # Only allow local people to get to the status ACL allow localhost ACL allow 192.168.0.0 192.168.255.255 #FaviconURL http://pond1.gladstonefamily.net:8080/favicon.ico </Stream> # Redirect index.html to the appropriate site <Redirect index.html> URL http://ffmpeg.sourceforge.net/ </Redirect> Thank you, -- Slava Shirokov slava at mutatorr.net
Hi. On 5/16/05, Slava Shirokov <slava at mutatorr.net> wrote:
... [mpeg1video @ 0x82ec9fc]MPEG1/2 does not support 3/1 fps ...
That is the problem, right there. Try changing the "VideoFrameRate" option from 3 to 29.97 to match your input framerate. But I guess I should also mention that ffserver seems to be rather broken as of lately (a few years?). At least I haven't had much success with it myself - not that I've really tried too hard. Vidar
Vidar Madsen wrote:
Hi.
On 5/16/05, Slava Shirokov <slava at mutatorr.net> wrote:
... [mpeg1video @ 0x82ec9fc]MPEG1/2 does not support 3/1 fps ...
That is the problem, right there.
Try changing the "VideoFrameRate" option from 3 to 29.97 to match your input framerate.
But I guess I should also mention that ffserver seems to be rather broken as of lately (a few years?). At least I haven't had much success with it myself - not that I've really tried too hard.
Vidar
_______________________________________________ ffmpeg-user mailing list ffmpeg-user at mplayerhq.hu http://mplayerhq.hu/mailman/listinfo/ffmpeg-user
I added "VideoFrameRate 29.97" into the <feed> portion of the config and restarted, but that failed to make any difference. Do you have any recomendations for alternatives to ffserver? -- Slava Shirokov slava at mutatorr.net
Slava Shirokov wrote:
Vidar Madsen wrote:
Hi.
On 5/16/05, Slava Shirokov <slava at mutatorr.net> wrote:
... [mpeg1video @ 0x82ec9fc]MPEG1/2 does not support 3/1 fps ...
That is the problem, right there.
Try changing the "VideoFrameRate" option from 3 to 29.97 to match your input framerate.
But I guess I should also mention that ffserver seems to be rather broken as of lately (a few years?). At least I haven't had much success with it myself - not that I've really tried too hard.
Vidar
_______________________________________________ ffmpeg-user mailing list ffmpeg-user at mplayerhq.hu http://mplayerhq.hu/mailman/listinfo/ffmpeg-user
I added "VideoFrameRate 29.97" into the <feed> portion of the config and restarted, but that failed to make any difference.
Do you have any recomendations for alternatives to ffserver?
On second attempt, I removed the mpg stream alltogether, and it went away. I'll fight with it at a later time. -- Slava Shirokov slava at mutatorr.net
participants (2)
-
slava@mutatorr.net -
vidarino@gmail.com