Opened 7 years ago

Closed 4 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 Changed 6 years ago by c10ud

same here with git a5c1a0c, tested with windows and linux

(see also duplicate #1461)

comment:2 Changed 6 years ago by c10ud

adding a few properties seems to do the trick:

AVOptionVideo me_range 16
AVOptionVideo qdiff 4
AVOptionVideo qmin 10
AVOptionVideo qmax 51

comment:3 Changed 6 years ago by c10ud

however vlc and mplayer seem unable to decode the stream.. maybe some settings are wrong?

comment:4 Changed 6 years ago by c10ud

quick update: with a flv player the streaming seems to work.. also tried with rtmp and it's good

comment:5 Changed 5 years ago by natrixnatrix89

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 Changed 5 years ago by natrixnatrix89

  • Component changed from undetermined to FFserver

comment:7 Changed 5 years ago by natrixnatrix89

  • Priority changed from normal to important
  • Version changed from unspecified to git-master

comment:8 Changed 5 years ago by cehoyos

  • Priority changed from important to normal

Is this a regression?

comment:9 Changed 5 years ago by mastered

  • Analyzed by developer set
  • Owner set to mastered
  • Reproduced by developer set
  • Status changed from new to open

comment:10 Changed 5 years ago by cehoyos

  • Analyzed by developer unset

comment:11 Changed 5 years ago by tstepnia

Just to simplify: how do we pass following in ffserver.conf

-preset ultrafast -pix_fmt yuv420p

comment:12 Changed 5 years ago by burek

According to this ticket #2954 "-pix_fmt yuv420p" should be:

PixelFormat yuv420p

I'm not sure about "-preset" (actually "-preset:v")

comment:13 Changed 4 years ago by saste

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 Changed 4 years ago by mastered

  • Resolution set to fixed
  • Status changed from open to closed

Fixed by 745730c9c208c40f800d5d71ffa39aceab6ce044
Further improvements are committed later.

Note: See TracTickets for help on using tickets.