AV1 提取关键帧

AV1 提取关键帧

使用此文件 [1],我可以毫无问题地运行此命令:

ffmpeg -i crushed-between-two-portals.mp4 %d.jpg

但如果我运行以下命令之一[2]:

ffmpeg -i crushed-between-two-portals.mp4 -vf "select='eq(pict_type,I)'" %d.jpg
ffmpeg -i crushed-between-two-portals.mp4 -vf "select='eq(pict_type,PICT_TYPE_I)'" %d.jpg

我得到这个结果:

Output file is empty, nothing was encoded (check -ss / -t / -frames parameters
if used)

我认为这是因为视频流:

Stream #0:0(und): Video: av1 (Main) (av01 / 0x31307661), yuv420p(tv, bt709),
1280x720 [SAR 1:1 DAR 16:9], 19 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 60k tbc
(default)

我之前曾将此命令用于其他编解码器。如何从 AV1 编解码器中提取关键帧或类似内容?

  1. https://f002.backblazeb2.com/file/ql8mlh/crushed-between-two-portals.mp4
  2. 每隔 X 秒创建一个视频缩略图

答案1

FFmpeg 为 AV1、dav1d和提供了两个解码器libaom。该问题是由于解码器中的错误造成的libaom[1]。

目前该问题已得到修复 [2],并且有新版本可用 [3]。

  1. https://trac.ffmpeg.org/ticket/9180
  2. https://github.com/FFmpeg/FFmpeg/commit/8b954a72
  3. https://github.com/GyanD/codexffmpeg/releases/tag/2021-04-18-git-d43b26b30d

相关内容