问题
We have some files encoded in AV1, but we recently noticed that Chrome mobile fails to play the files - but it doesn't fall back to an encoding it can use - it just puts the unplayable AV1 file in there. I'm hoping that if we add a codec attribute we can remedy this - but I'm not sure how to determine the codec for these AV1 files.
I've come across this documentation on MDN, but I'm not sure how I would determine the proper codec from that. It starts off simple enough, but some of the values further down, I have no idea what the right value would be.
Opening the file in VLC player only shows this very limited information about the codec:
The output of MediaInfo is:
General
Complete name : demo-av1.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom (isom/iso2/mp41)
File size : 291 KiB
Duration : 1 min 40 s
Overall bit rate : 23.7 kb/s
Writing application : Lavf58.43.100
Video
ID : 1
Format : AV1
Format/Info : AOMedia Video 1
Format profile : High@L3.0
Codec ID : av01
Duration : 1 min 40 s
Bit rate : 22.9 kb/s
Width : 984 pixels
Height : 670 pixels
Display aspect ratio : 3:2
Frame rate mode : Constant / Constant
Frame rate : 24.000 FPS
Color space : YUV
Chroma subsampling : 4:4:4
Bit depth : 8 bits
Scan type : Progressive / Progressive
Bits/(Pixel*Frame) : 0.001
Stream size : 281 KiB (96%)
Color range : Limited
Codec configuration box : av1C / av1C
The command to create the files and the output of FFMpeg is like so:
ffmpeg -y -i "D:\RAW VIDEO\Demos\demo.avi" -ss 00:00:00 -c:v libaom-av1 -pix_fmt yuv444p -minrate 500 -b:v 48k -maxrate 1000k -strict experimental -movflags +faststart -f mp4 NUL && ffmpeg -y -i "D:\RAW VIDEO\Demos\demo.avi" -ss 00:00:00 -c:v libaom-av1 -pix_fmt yuv444p -minrate 500 -b:v 48k -maxrate 1000k -strict experimental -movflags +faststart -pass 2 "D:\RAW VIDEO\Demos\converted\demo-av1.mp4"
ffmpeg version git-2020-05-22-38490cb Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3.1 (GCC) 20200513
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 46.100 / 56. 46.100
libavcodec 58. 86.101 / 58. 86.101
libavformat 58. 43.100 / 58. 43.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 82.100 / 7. 82.100
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Input #0, avi, from 'D:\RAW VIDEO\Demos\demo.avi':
Metadata:
encoder : Lavf58.29.100
Duration:
00:00:23.43, start: 0.000000, bitrate: 19719 kb/s
Stream #0:0: Video: huffyuv (HFYU / 0x55594648), bgr0, 420x240, 19739 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc
Stream mapping:
Stream #0:0 -> #0:0 (huffyuv (native) -> av1 (libaom-av1))
Press [q] to stop, [?] for help
[libaom-av1 @ 00000000003fb3c0] v1.0.0
Output #0, mp4, to 'NUL':
Metadata:
encoder : Lavf58.43.100
Stream #0:0: Video: av1 (libaom-av1) (av01 / 0x31307661), yuv444p, 420x240, q=-1--1, 48 kb/s, 30 fps, 15360 tbn, 30 tbc
Metadata:
encoder : Lavc58.86.101 libaom-av1
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
回答1:
av01.1.04M.08.0.000.02.02.02.02.0
Represents the following components: av01.P.LLT.DD.M.CCC.cp.tc.mc.F
.
Component | Your video | Resulting Value |
---|---|---|
P | Format profile: High@L3.0 | 1 |
LLT | Format profile: High@L3.0, Main tier | 04M |
DD | Bit depth: 8 bits | 08 |
M | Not monochrome (its not black & white) | 0 |
CCC | Chroma subsampling: YUV 4:4:4 | 000 |
cp | unknown | 02 |
tc | unknown | 02 |
mc | unknown | 02 |
F | Color range: Limited | 0 |
The "codecs" parameter in common media types: AV1 will link to the appropriate sections of the AV1 specification which provides helpful tables of values.
mediainfo
andffprobe
will tell you ifcp
(color primaries),tc
(transfer characteristics), andmc
(matrix coefficients) are not unknown. Since these are not listed in yourmediainfo
output, and you did not use the associated encoding options (-colorspace
,-color_trc
,-color_primaries
), the value is therefore unknown.
来源:https://stackoverflow.com/questions/65373909/how-to-determine-the-proper-html5-video-codec-attribute-for-an-av1-file-based-on