[FFmpeg-user] VP9 HLS

Geoff Flarity geoff.flarity at gmail.com
Wed Jul 19 21:35:47 EEST 2023


Just closing the loop here for anyone who stumbles on this thread. Hls.js
now supports this on the main branch. To be released officially in v 1.5.0.

Royalty free HLS is here :)

G

On Wed, Jul 19, 2023, 12:37 p.m. Geoff Flarity <geoff.flarity at gmail.com>
wrote:

> Merci Romain!
>
> This helped me refine my search and discover hls_segment_type option:
>
> ffmpeg -i ../Big_Buck_Bunny_1080_10s_30MB.mp4 -c:v libvpx-vp9  -f hls
>> -hls_segment_type fmp4 bar.m3u8
>>
>
> This produces .m4s files and vlc will play the m3u8 file just fine. It
> doesn't  seem to work with open source web players like hls.js though. I
> get this error:
>
>
>> HUNK_DEMUXER_ERROR_APPEND_FAILED: Video stream codec vp9 doesn't match
>> SourceBuffer codecs.
>
>
> However it DOES work with Theo:
> https://www.theoplayer.com/test-your-stream-hls-dash-hesp
>
> Also found this from Theo team:
>
> https://www.theoplayer.com/blog/vp9-support-now-possible-on-apple-devices-and-all-major-platforms
>
> So maybe this is just a hls.js config issue now.
>
> Cheers,
> Geoff
>
>
> On Wed, Jul 19, 2023 at 11:17 AM Romain Beauxis <romain.beauxis at gmail.com>
> wrote:
>
>> Le mer. 19 juil. 2023 à 10:05, Geoff Flarity <geoff.flarity at gmail.com> a
>> écrit :
>> >
>> > Hi,
>> >
>> > First thanks to the community of anyone who's contributed to ffmpeg and
>> its
>> > community in any way. How foundational it is to anything computer media
>> > can't be overstated.
>> >
>> > I'd like to be able to publish codec royalty-free bitrate/resolution
>> > adaptive VODs that work with hls.js or other similar open source
>> players.
>> I
>> > can get this working with MPEG-DASH, but it's not supported by apple
>> > products unfortunately.
>> >
>> > For the life of me I can't get it working using my ARM mac. Here's a
>> > simplified example of what I've tried, I can include a link to the files
>> if
>> > that helps as well.
>> >
>> > With libx264, which isn't royalty free, the following works perfectly:
>> >
>> > ffmpeg -i ../Big_Buck_Bunny_1080_10s_30MB.mp4 -c:v libx264  -f hls
>> test.m3u8
>> >
>> >
>> > However if I switch the codec to libvpx-vp9 does not:
>> >
>> > ffmpeg -i ../Big_Buck_Bunny_1080_10s_30MB.mp4 -c:v libvpx-vp9  -f hls
>> > > foo.m3u8
>> >
>> >
>> > Here's the full output from the command, but obviously "Stream 0, codec
>> > vp9, is muxed as a private data stream and may not be recognized upon
>> > reading." stands out. I just have no idea what this means and I couldn't
>> > find anything after a bit of googling.
>>
>> Looks like this codec is not supported inside mpegts bitstreams:
>> https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/mpegtsenc.c#L452
>>
>> You should see if the mp4 container can support them.
>>
>> BTW, are the mpeg containers (mpegts, mp4) royalty-free?
>>
>> > (base) geoff at geoffreys-mbp test % ffmpeg -i
>> > > ../Big_Buck_Bunny_1080_10s_30MB.mp4 -c:v libvpx-vp9  -f hls foo.m3u8
>> > > ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
>> > >   built with Apple clang version 14.0.3 (clang-1403.0.22.14.1)
>> > >   configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/6.0
>> --enable-shared
>> > > --enable-pthreads --enable-version3 --cc=clang --host-cflags=
>> > > --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl
>> > > --enable-libaom --enable-libaribb24 --enable-libbluray
>> --enable-libdav1d
>> > > --enable-libmp3lame --enable-libopus --enable-librav1e
>> --enable-librist
>> > > --enable-librubberband --enable-libsnappy --enable-libsrt
>> > > --enable-libsvtav1 --enable-libtesseract --enable-libtheora
>> > > --enable-libvidstab --enable-libvmaf --enable-libvorbis
>> --enable-libvpx
>> > > --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2
>> > > --enable-libxvid --enable-lzma --enable-libfontconfig
>> --enable-libfreetype
>> > > --enable-frei0r --enable-libass --enable-libopencore-amrnb
>> > > --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex
>> > > --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack
>> > > --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox
>> > > --enable-neon
>> > >   libavutil      58.  2.100 / 58.  2.100
>> > >   libavcodec     60.  3.100 / 60.  3.100
>> > >   libavformat    60.  3.100 / 60.  3.100
>> > >   libavdevice    60.  1.100 / 60.  1.100
>> > >   libavfilter     9.  3.100 /  9.  3.100
>> > >   libswscale      7.  1.100 /  7.  1.100
>> > >   libswresample   4. 10.100 /  4. 10.100
>> > >   libpostproc    57.  1.100 / 57.  1.100
>> > > Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
>> > > '../Big_Buck_Bunny_1080_10s_30MB.mp4':
>> > >   Metadata:
>> > >     major_brand     : isom
>> > >     minor_version   : 512
>> > >     compatible_brands: isomiso2avc1mp41
>> > >     title           : Big Buck Bunny, Sunflower version
>> > >     artist          : Blender Foundation 2008, Janus Bager Kristensen
>> 2013
>> > >     composer        : Sacha Goedegebure
>> > >     encoder         : Lavf57.63.100
>> > >     comment         : Creative Commons Attribution 3.0 -
>> > > http://bbb3d.renderfarming.net
>> > >     genre           : Animation
>> > >   Duration: 00:00:10.00, start: 0.000000, bitrate: 24563 kb/s
>> > >   Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661),
>> > > yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 24559 kb/s, 30
>> fps,
>> 30
>> > > tbr, 15360 tbn (default)
>> > >     Metadata:
>> > >       handler_name    : VideoHandler
>> > >       vendor_id       : [0][0][0][0]
>> > > Stream mapping:
>> > >   Stream #0:0 -> #0:0 (h264 (native) -> vp9 (libvpx-vp9))
>> > > Press [q] to stop, [?] for help
>> > > [libvpx-vp9 @ 0x135705610] v1.13.0
>> > > [libvpx-vp9 @ 0x135705610] Neither bitrate nor constrained quality
>> > > specified, using default CRF of 32
>> > > Output #0, hls, to 'foo.m3u8':
>> > >   Metadata:
>> > >     major_brand     : isom
>> > >     minor_version   : 512
>> > >     compatible_brands: isomiso2avc1mp41
>> > >     title           : Big Buck Bunny, Sunflower version
>> > >     artist          : Blender Foundation 2008, Janus Bager Kristensen
>> 2013
>> > >     composer        : Sacha Goedegebure
>> > >     genre           : Animation
>> > >     comment         : Creative Commons Attribution 3.0 -
>> > > http://bbb3d.renderfarming.net
>> > >     encoder         : Lavf60.3.100
>> > >   Stream #0:0(und): Video: vp9, yuv420p(progressive), 1920x1080 [SAR
>> 1:1
>> > > DAR 16:9], q=2-31, 30 fps, 90k tbn (default)
>> > >     Metadata:
>> > >       handler_name    : VideoHandler
>> > >       vendor_id       : [0][0][0][0]
>> > >       encoder         : Lavc60.3.100 libvpx-vp9
>> > >     Side data:
>> > >       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
>> > > [mpegts @ 0x135605f00] Stream 0, codec vp9, is muxed as a private data
>> > > stream and may not be recognized upon reading.
>> > > [hls @ 0x135704890] Opening 'foo0.ts' for writing.20 bitrate=N/A
>> > > speed=0.202x
>> > > [hls @ 0x135704890] Opening 'foo.m3u8.tmp' for writing
>> > > [hls @ 0x135704890] Opening 'foo1.ts' for writing.46 bitrate=N/A
>> > > speed=0.202x
>> > > [hls @ 0x135704890] Opening 'foo.m3u8.tmp' for writing
>> > > [hls @ 0x135704890] Opening 'foo2.ts' for writing.13 bitrate=N/A
>> > > speed=0.204x
>> > > [hls @ 0x135704890] Opening 'foo.m3u8.tmp' for writing
>> > > frame=  300 fps=6.1 q=32.0 Lsize=N/A time=00:00:09.96 bitrate=N/A
>> > > speed=0.203x
>> > > video:6051kB audio:0kB subtitle:0kB other streams:0kB global
>> headers:0kB
>> > > muxing overhead: unknown
>> >
>> >
>> > Thanks!
>> > Geoff
>> > _______________________________________________
>> > ffmpeg-user mailing list
>> > ffmpeg-user at ffmpeg.org
>> > https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>> >
>> > To unsubscribe, visit link above, or email
>> > ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
>> _______________________________________________
>> ffmpeg-user mailing list
>> ffmpeg-user at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
>>
>


More information about the ffmpeg-user mailing list