Opened 14 years ago
Closed 11 years ago
#1275 closed defect (fixed)
ffserver x264 presets
| Reported by: | burek | Owned by: | mastered |
|---|---|---|---|
| Priority: | normal | Component: | ffserver |
| Version: | git-master | Keywords: | |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | no |
Description
ffserver is started with a simple config file (ffserver.conf) that defined only libx264 flv output and ffmpeg is started to feed the ffserver after which the error is received, which I don't know how to get around, because I don't know how to set "-vpre" or "-preset" in ffserver.conf file (when I try to set -vpre or -preset at ffmpeg's command line, I get the same error as provided here):
ffserver.conf:
Port 8090
BindAddress 0.0.0.0
CustomLog -
<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 200K
ACL allow 127.0.0.1
</Feed>
<Stream test1.flv>
Feed feed1.ffm
Format flv
NoAudio
VideoCodec libx264
VideoFrameRate 25
AVOptionVideo flags +global_header
</Stream>
<Stream stat.html>
Format status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>
<Redirect index.html>
URL http://www.ffmpeg.org/
</Redirect>
the result:
# ffserver -d -f ffserver.conf &
# ffmpeg -i http://10.1.2.3:45678 -vf yadif http://localhost:8090/feed1.ffm
ffmpeg version git-2012-05-03-28d37f7 Copyright (c) 2000-2012 the FFmpeg developers
built on May 3 2012 13:43:26 with gcc 4.6.3
configuration: --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3
libavutil 51. 49.100 / 51. 49.100
libavcodec 54. 17.101 / 54. 17.101
libavformat 54. 3.100 / 54. 3.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 72.104 / 2. 72.104
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 11.100 / 0. 11.100
libpostproc 52. 0.100 / 52. 0.100
[mpeg2video @ 0x2232c40] mpeg_decode_postinit() failure
Last message repeated 5 times
[mpegts @ 0x222d120] max_analyze_duration 5000000 reached at 5016000
[mpegts @ 0x222d120] Estimating duration from bitrate, this may be inaccurate
Input #0, mpegts, from 'http://10.1.2.3:45678':
Duration: N/A, start: 1787.574700, bitrate: 15256 kb/s
Program 1714
Stream #0:0[0x58c]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p, 720x576 [SAR 64:45 DAR 16:9], 15000 kb/s, 25.82 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x596]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16, 256 kb/s
[buffer @ 0x2428500] w:720 h:576 pixfmt:yuv420p tb:1/1000000 sar:64/45 sws_param:flags=2
[scale @ 0x2233f60] w:720 h:576 fmt:yuv420p sar:64/45 -> w:160 h:128 fmt:yuv420p sar:64/45 flags:0x4
[libx264 @ 0x2277080] broken ffmpeg default settings detected
[libx264 @ 0x2277080] use an encoding preset (e.g. -vpre medium)
[libx264 @ 0x2277080] preset usage: -vpre <speed> -vpre <profile>
[libx264 @ 0x2277080] speed presets are listed in x264 --help
[libx264 @ 0x2277080] profile is optional; x264 defaults to high
Output #0, ffm, to 'http://localhost:8090/feed1.ffm':
Stream #0:0: Video: h264, yuv420p, 160x128 [SAR 64:45 DAR 16:9], q=2-31, 128 kb/s, 1000k tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video -> libx264)
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Generally, when I start ffmpeg only (without ffserver) no matter what libx264 options I give at cmd line, ffmpeg will fill out other (missing) options, like bitrate, width/height, etc with some default values. When I use ffserver with same ffmpeg cmd lines, I usually get this kind of "vpre error" mentioned above. How can I work around that error?
Please help, thanks in advance.
Change History (14)
comment:1 by , 13 years ago
comment:2 by , 13 years ago
adding a few properties seems to do the trick:
AVOptionVideo me_range 16
AVOptionVideo qdiff 4
AVOptionVideo qmin 10
AVOptionVideo qmax 51
comment:3 by , 13 years ago
however vlc and mplayer seem unable to decode the stream.. maybe some settings are wrong?
comment:4 by , 13 years ago
quick update: with a flv player the streaming seems to work.. also tried with rtmp and it's good
comment:5 by , 12 years ago
So is there any improvement on this situation?
Has there been any development on ffserver that would allow users to set a preset and profile for x264? Also it would be great to tune..
At least webm streaming seems to be working..
comment:6 by , 12 years ago
| Component: | undetermined → FFserver |
|---|
comment:7 by , 12 years ago
| Priority: | normal → important |
|---|---|
| Version: | unspecified → git-master |
comment:9 by , 12 years ago
| Analyzed by developer: | set |
|---|---|
| Owner: | set to |
| Reproduced by developer: | set |
| Status: | new → open |
comment:10 by , 12 years ago
| Analyzed by developer: | unset |
|---|
comment:11 by , 12 years ago
Just to simplify: how do we pass following in ffserver.conf
-preset ultrafast -pix_fmt yuv420p
comment:12 by , 12 years ago
According to this ticket #2954 "-pix_fmt yuv420p" should be:
PixelFormat yuv420p
I'm not sure about "-preset" (actually "-preset:v")
comment:13 by , 11 years ago
This is due to a limitation in ffserver, only few parameters can be set from the configuration file and no codec private options.
To workaround the issue at the moment it is required to use the override_ffserver on the ffmpeg side and set the option on the ffmpeg commandline. A proper fix would require the extension of the ffm format in order to be able to set generic option names.
comment:14 by , 11 years ago
| Resolution: | → fixed |
|---|---|
| Status: | open → closed |
Fixed by 745730c9c208c40f800d5d71ffa39aceab6ce044
Further improvements are committed later.



same here with git a5c1a0c, tested with windows and linux
(see also duplicate #1461)