[FFmpeg-user] Encoding multiple files for adaptive bit rate streaming using RTMP and HLS
Henk D. Schoneveld
belcampo at zonnet.nl
Tue May 12 15:16:21 CEST 2015
> On 12 May 2015, at 13:50, Werner Robitza <werner.robitza at gmail.com> wrote:
> On Tue, May 12, 2015 at 11:47 AM, Henk D. Schoneveld <belcampo at zonnet.nl> wrote:
>> Would you be so kind to explain why to NOT use the crf option?
> CRF is essentially a constant quality mode, which results in variable
> bitrate depending on the spatiotemporal complexity of the scenes.
Your goal is max quality within a given link-capacity I assume.
Upfront choosing an arbitrary bitrate to achieve max possible quality seems sub-optimal/contradictionary to me.
A. to many bits for talking heads
B. to few bits for action dominant events.
> streaming purposes, this is not ideal, since your adaptive streaming
> client assumes that a segment encoded at a target bitrate of x kBit/s
> is can actually be transmitted over a link with x kBit/s throughput.
Where both the stream and link bitrate are averages. A stream consists of I and P and sometimes B frames, the size of these individual frames differ in size. For example choosing a small GOP-size, with relatively more I-frames, will result in more or less 'avoidable' relatively lower average quality.
> If you want to make sure you're not exceeding a certain bandwidth, the
> VBV encoding mode is probably the best option (see also
> https://trac.ffmpeg.org/wiki/EncodingForStreamingSites). Therefore,
> set -maxrate and -bufsize.
> A single-pass constant bitrate will not generally be more stable than
> CRF, but it should be less spikey.
> See this chart for a comparison between CRF, single-pass CBR and
> single-pass CBR with -maxrate set: http://i.imgur.com/GxTW4Jy.png
> y-axis is the frame size, moving average of 120 frames.
I see the difference between the methods, but I don’t really understand what it’s trying to tel me. What does the X-axis say, total stream-size/#frames/ ?
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
More information about the ffmpeg-user