How to determine the proper HTML5 video codec attribute for an AV1 file based on the FFMpeg encoding command or output?

家住魔仙堡 提交于 2021-02-20 00:46:59

问题


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 and ffprobe will tell you if cp (color primaries), tc (transfer characteristics), and mc (matrix coefficients) are not unknown. Since these are not listed in your mediainfo 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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!