Opened 5 months ago

Last modified 5 months ago

#10730 new defect

-vf vidstab creates binary transform.trf (ffmpeg 6.1)

Reported by: JouMxyzptlk Owned by:
Priority: normal Component: avfilter
Version: unspecified Keywords: vidstabdetect transform.trf binary
Cc: JouMxyzptlk Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description (last modified by JouMxyzptlk)

ffmpeg 6.1 using -vf vidstabdetect=result=transforms.trf creates binary transform.trf

How to reproduce (with any input video):

c:\prog\ffmpeg\bin\ffmpeg.exe  -i "input.mp4" -vf vidstabdetect=stepsize=32:shakiness=10:accuracy=10:result=transformsffmpeg61.trf -f null -
ffmpeg version 6.1-full_build-www.gyan.dev Copyright (c) 2000-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
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2023-12-08T20:37:22.000000Z
    com.android.version: 10
    com.android.capture.fps: 60.000000
  Duration: 00:00:22.74, start: 0.000000, bitrate: 38902 kb/s
  Stream #0:0[0x1](eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt470bg/bt470bg/smpte170m), 3840x2160, 38528 kb/s, SAR 1:1 DAR 16:9, 59.50 fps, 60 tbr, 90k tbn (default)
    Metadata:
      creation_time   : 2023-12-08T20:37:22.000000Z
      handler_name    : VideoHandle
      vendor_id       : [0][0][0][0]
    Side data:
      displaymatrix: rotation of -90.00 degrees
  Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 95 kb/s (default)
    Metadata:
      creation_time   : 2023-12-08T20:37:22.000000Z
      handler_name    : SoundHandle
      vendor_id       : [0][0][0][0]
Stream mapping:
  Stream #0:0 -> #0:0 (hevc (native) -> wrapped_avframe (native))
  Stream #0:1 -> #0:1 (aac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[swscaler @ 000002185c53c200] deprecated pixel format used, make sure you did set range correctly
[vidstabdetect @ 000000b7fa9ff5d8] Multithreading: use 25 threads
[vidstabdetect @ 000000b7fa9ff5d8] For high accuracy use lower stepsize  -- set to 6 nowFieldsize: 224, Maximal translation: 308 pixel
[vidstabdetect @ 000000b7fa9ff548] Number of used measurement fields: 43 out of 65
[vidstabdetect @ 000000b7fa9ff548] Fieldsize: 48, Maximal translation: 48 pixel
[vidstabdetect @ 000000b7fa9ff548] Number of used measurement fields: 506 out of 760
[Parsed_vidstabdetect_0 @ 000002184368ef00] Video stabilization settings (pass 1/2):
[Parsed_vidstabdetect_0 @ 000002184368ef00]      shakiness = 10
[Parsed_vidstabdetect_0 @ 000002184368ef00]       accuracy = 10
[Parsed_vidstabdetect_0 @ 000002184368ef00]       stepsize = 6
[Parsed_vidstabdetect_0 @ 000002184368ef00]    mincontrast = 0.250000
[Parsed_vidstabdetect_0 @ 000002184368ef00]         tripod = 0
[Parsed_vidstabdetect_0 @ 000002184368ef00]           show = 0
[Parsed_vidstabdetect_0 @ 000002184368ef00]         result = transforms.trf
[swscaler @ 000002185c8a3280] deprecated pixel format used, make sure you did set range correctly
    Last message repeated 2 times
Output #0, null, to 'pipe:':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    com.android.capture.fps: 60.000000
    com.android.version: 10
    encoder         : Lavf60.16.100
  Stream #0:0(eng): Video: wrapped_avframe, yuv420p(tv, bt470bg/bt470bg/smpte170m, progressive), 2160x3840 [SAR 1:1 DAR 9:16], q=2-31, 200 kb/s, 60 fps, 60 tbn (default)
    Metadata:
      creation_time   : 2023-12-08T20:37:22.000000Z
      handler_name    : VideoHandle
      vendor_id       : [0][0][0][0]
      encoder         : Lavc60.31.102 wrapped_avframe
    Side data:
      displaymatrix: rotation of -0.00 degrees
  Stream #0:1(eng): Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s (default)
    Metadata:
      creation_time   : 2023-12-08T20:37:22.000000Z
      handler_name    : SoundHandle
      vendor_id       : [0][0][0][0]
      encoder         : Lavc60.31.102 pcm_s16le
[out#0/null @ 0000021842210dc0] video:634kB audio:4264kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
frame= 1353 fps= 16 q=-0.0 Lsize=N/A time=00:00:22.72 bitrate=N/A speed=0.275x

Result: See attachment transformsffmpeg61.trf (and with latest gyan.dev see transformsffmpeg2023-12-07-git-f89cff96d0.trf, same problem)
Expected result: See attachment transformsffmpeg60.trf , created with ffmpeg 6.0

Due to attachment size limit, mentioned transform files at https://joumxyzptlk.de/tmp/ffmpeg/ffmpeg-6.1-vistab-bug.7z

Change History (2)

comment:1 by JouMxyzptlk, 5 months ago

Description: modified (diff)

comment:2 by JouMxyzptlk, 5 months ago

Sorry, the ACTUAL bug seems to be:
-vf vidstabtransform=fileformat=binary
does not work, and should be the "binary" default if "vidstabdetect" is binary by default.

Suggested quick fix: Make the default vidstabdetect=fileformat=ascii. With vidstabdetect=fileformat=ascii ffmpeg 6.1 works fine, working around the binary issue.

if I should create a new bug entry please say.

Last edited 5 months ago by JouMxyzptlk (previous) (diff)
Note: See TracTickets for help on using tickets.