ffmpegで16x16未満のh265 (yuv420p)動画への変換が失敗する

#8bcbba894ea44752b0c3dd364a9887a9
2026.4.21
2026.4.21

環境

  • Ubuntu 25.04.4

    • Dockerのubuntu:latest

  • ffmpeg 6.1.1-3ubuntu5

    • aptでインストール済み

    ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers
    built with gcc 13 (Ubuntu 13.2.0-23ubuntu3)
    configuration: --prefix=/usr --extra-version=3ubuntu5 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-linux-gnu --arch=arm64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared
    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
  • ImageMagick 6.9.12-98

現象

  • 16x16より小さい画像をh265 (yuv420p)に変換しようとすると変換に失敗する

    $ convert -size 10x10 xc:white input_10x10.png
    $ ffmpeg -i input_10x10.png -c:v libx265 -pix_fmt yuv420p out.mp4
    ...
    [libx265 @ 0xaaaaf8240260] Image size is too small (10x10).
    [vost#0:0/libx265 @ 0xaaaaf823ff20] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.
    Error while filtering: Invalid argument
    [out#0/mp4 @ 0xaaaaf823e820] Nothing was written into output file, because at least one of its streams received no packets.
    frame=    0 fps=0.0 q=0.0 Lsize=       0kB time=N/A bitrate=N/A speed=N/A
    Conversion failed!
  • 16x16では成功する

    $ convert -size 16x16 xc:white input_16x16.png
    $ ffmpeg -i input_16x16.png -c:v libx265 -pix_fmt yuv420p out.mp4
  • 奇数x奇数の場合も失敗する

調査

  • 奇数で失敗するのはYUV 4:2:0が2x2ピクセル単位で処理するため

  • 16x16未満の偶数で失敗するのはh265のブロックサイズの仕様に起因している?

    • 要調査