On 2/16/2015 3:27 PM, Christian Ebert wrote:
* Claudiu Rad-Lohanel on Monday, February 16, 2015 at 12:31:58 +0200
And to also clarify something: ffmpeg's overhead is ALWAYS bigger than
Apple's mediafilesegmenter, no matter the bitrate. But I assume it
tends to be more constant (or it grows slower with bitrate), thus, you
don't see such high percentages with higher bitrates. But if you
segment a 1mbit 1GB video with ffmpeg vs. Apple's segmenter, you'll
see tens of MB of difference between them.
It's clearly a general efficiency problem in ffmpeg in HLS case, I
assume that's because Apple squeezed everything it could from mpegts
while ffmpeg uses the generic mpegts muxer which must create valid and
compatible streams for all kinds of devices.
Don't have blind faith in Apple's segmenter though. It seems to
overoptimize and may get the duration wrong (and actually quite
massively):
http://flowplayer.blacktrash.org/fp5/hls-segmenter.html
Interesting observation, thanks. Did you figure out where those 2s
disappeared?
A parallel playback or some kind of frame-level A/B comparison would be
interesting.
Can't this actually be related to the player (maybe not implementing HLS
standard 100% precisely)?
SMP + Flashls actually view the file as 4:14 from the beginning, and
even at the end although, it's true, when started drops 2s but the
length its adjusted during playback (weird):
http://www.flashls.org/latest/examples/osmf/StrobeMediaPlayback.html?src=http%3A%2F%2Fmedia.blacktrash.org%2Ffp%2Fenc%2Fccc_trailer1-as.m3u8
Running both sources through <ffmpeg -i <src.m3u8> -c copy out.ts>
generate a file with almost the same length (18ms difference). It's
true, the one encoded by Apple's segmenter generate some DTS warnings.
However, I won't defend Apple's segmenter, it may have bugs or even
conceptual problems. It's just that it's their official tool for *their*
official streaming standard so they should be the most familiar with
their needs and create a good segmenter that generate good results. It
should be a pretty good example implementation.
What it does succeed is have the smallest muxing overhead (or maybe one
of the smallest? I didn't compare with other 3rd parties like
encoding.com that claim very low overhead) and this is really useful
especially when you have HLS stream validation issues when you get over
10% overhead.
Also
http://blog.zencoder.com/2011/12/08/announcing-the-clouds-most-efficient-http-live-streaming/
(although old) illustrates that others had this problem and successfully
made good optimizations.
And this brings us back exactly to the subject of the topic: "Reduce mux
overhead of HLS stream creation". It is very much possible via muxing
optimizations but what can be done in ffmpeg?
I would also reconsider https://trac.ffmpeg.org/ticket/2857 as *maybe*
not so closed?
Actually I have asked about what Wesley asks now (how can we influence
overhead) a couple of months ago on this mailing list but didn't receive
any answers.. I assume we can't and optimizations must be coded.
--
jazzman
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user