[FFmpeg-user] VP9 HLS

Geoff Flarity geoff.flarity at gmail.com
Wed Jul 19 19:37:16 EEST 2023


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