[FFmpeg-user] ffserver to iOs and Android

Stefano Sabatini stefasab at gmail.com
Sun Sep 14 13:24:31 CEST 2014

On date Sunday 2014-09-14 11:04:48 +0200, Michele Polese wrote:
> I would like them too, thanks..

About webm streaming with FFserver, I see two main problems.

Since commit b543a29020232400537c3f9948f6eb2fd3b760a5 it is not
possible to setup the CQ parameter to an invalid value, so that the
libvpx encoder will fail with message:
CQ level 0 must be between minimum and maximum quantizer value (2-31)

This happens why it is not possible to set the crf private option from
the ffserver configuration file (a similar problem happens with
libx264 private option). So we need to extend the FFm format in order
to support to set private options. The workaround is to use the ffmpeg
-override_ffserver option.

The second problem is related to the start time of the stream
generated by the ffm muxer. In ffm_write_header() we have this code:
    if (t = av_dict_get(s->metadata, "creation_time", NULL, 0)) {
        int ret = av_parse_time(&ffm->start_time, t->value, 0);
        if (ret < 0)
            return ret;

This will set the start_time depending on the creation_time metadata
which is set by ffmpeg when sending the stream to ffserver. This
start_time value will confuse both firefox and chromium. If you
comment the code above in the ffm muxer the problem is apparently
fixed and both browsers are able to play the webm content in

> And for hls is this a good guide?
> http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/

I don't think so, it is pretty outdated and current FFmpeg contains
two HLS muxers (hls and segment), which should be simpler to use.

More information about the ffmpeg-user mailing list