Opened 10 months ago
Last modified 4 months ago
#10829 new defect
-skip_frame nokey is ignored for vp9/webm
Reported by: | Konstantin Vlasov | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | ffprobe |
Version: | 6.1 | Keywords: | nokey |
Cc: | MasterQuestionable | Blocked By: | |
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
How to reproduce:
> ffprobe.exe -hide_banner -show_frames -skip_frame nokey -select_streams v test.webm >test.txt Input #0, matroska,webm, from 'test.webm': Metadata: ENCODER : Lavf60.3.100 Duration: 00:00:33.25, start: 0.000000, bitrate: 12521 kb/s Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709), 3840x2160, SAR 1:1 DAR 16:9, 60 fps, 60 tbr, 1k tbn (default) Metadata: DURATION : 00:00:33.233000000 Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default) Metadata: DURATION : 00:00:33.248000000
The resulting file test.txt
contains information about all the frames, not just the key frames.
For the test I took some video downloaded from YouTube (specifically, this one: https://www.youtube.com/watch?v=nUiHDtRZf44 , using the format 315+251).
Reproduced in Windows builds from gyan.dev, versions 6.1.1 and master build 2024-01-24-git-00b288da73:
>C:\Programs\ffmpeg-nightly\bin\ffprobe.exe -version ffprobe version 2024-01-24-git-00b288da73-full_build-www.gyan.dev Copyright (c) 2007-2024 the FFmpeg developers built with gcc 12.2.0 (Rev10, Built by MSYS2 project) configuration: --enable-gpl --enable-version3 --enable-static --pkg-config=pkgconf --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2 --enable-d3d11va --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint libavutil 58. 36.101 / 58. 36.101 libavcodec 60. 38.100 / 60. 38.100 libavformat 60. 20.100 / 60. 20.100 libavdevice 60. 4.100 / 60. 4.100 libavfilter 9. 17.100 / 9. 17.100 libswscale 7. 6.100 / 7. 6.100 libswresample 4. 13.100 / 4. 13.100 libpostproc 57. 4.100 / 57. 4.100 >C:\Programs\ffmpeg-6.1.1\bin\ffprobe.exe -version ffprobe version 6.1.1-full_build-www.gyan.dev Copyright (c) 2007-2023 the FFmpeg developers built with gcc 12.2.0 (Rev10, Built by MSYS2 project) configuration: --enable-gpl --enable-version3 --enable-static --pkg-config=pkgconf --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2 --enable-d3d11va --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint libavutil 58. 29.100 / 58. 29.100 libavcodec 60. 31.102 / 60. 31.102 libavformat 60. 16.100 / 60. 16.100 libavdevice 60. 3.100 / 60. 3.100 libavfilter 9. 12.100 / 9. 12.100 libswscale 7. 5.100 / 7. 5.100 libswresample 4. 12.100 / 4. 12.100 libpostproc 57. 3.100 / 57. 3.100
Change History (7)
comment:1 by , 9 months ago
comment:2 by , 9 months ago
Well, it does print key_frame=1 for some frames, and 0 for others... And the video does behave funny, if I cut a piece not starting from the key frame, without reencoding.
comment:3 by , 4 months ago
-bsf:v noise=drop=not(key)
works so the keyframe info is in the vp9 stream and works like other codecs.
comment:4 by , 4 months ago
Cc: | added |
---|---|
Component: | undetermined → ffprobe |
͏ VP9 of course does...
͏ Support-wise, Google (also major web browsers) internally use FFmpeg for video handling.
͏ And Google's YouTube extensively uses VP9.
͏ I haven't done in-depth analysis on this codec. (planned future)
͏ Though I did have enough knowledge on its picture variant: WebP Lossless.
͏ .
͏ Through which I estimated VP9 a potential very capable codec.
comment:5 by , 4 months ago
͏ Downloading example using `yt-dlp`:
͏ https://bugzilla.mozilla.org/show_bug.cgi?id=1892185#c1
comment:6 by , 4 months ago
VP9 has superframes. It makes keyframes really not that simple. Anyway, remember webm is just mkv container. There is already a bug about VC1 in mkv, except there it outright tagged all frames as keyframes, m2ts vc1 has no issue. #8515
comment:7 by , 4 months ago
͏ Picking only what's sensible from current standards:
͏ Reinvent only when absolutely necessary.
͏ Superframe appears to be mere patent circumvention of B-frame??
͏ (how is the B-frame mere concept even patentable..?)
͏ .
͏ https://www.google.com/search?hl=en&gl=ca&num=10&q=VP9+superframe
͏ As for VC-1, seems to be defunct codec?
͏ And not much related.
͏ And I know "WebM is Matroska". (verbatim appeared in linked Bugzilla)
Does VP9 have key frames in common sense and do we even support that?