[FFmpeg-trac] #11038(undetermined:new): bsf 'rotate' seemingly not doing anything

FFmpeg trac at avcodec.org
Thu May 30 15:12:22 EEST 2024


#11038: bsf 'rotate' seemingly not doing anything
-------------------------------------+-------------------------------------
             Reporter:  geegee       |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:  git-
  undetermined                       |  master
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 FFMPEG is not changing the rotation matrix when asked to like when for
 example using either of the two sample commands provided below. The two
 output files will be identical to each other and even to a third simple
 output made with `ffmpeg -i input.mp4 -c copy outputx.mp4`, meaning
 `-bsf:v h264_metadata=rotate=90.0` and `-metadata:s:v:0 rotate=90` aren't
 doing anything at all. This can be further verified by opening the output
 file(s) in a hex editor and checking the values of the rotation matrix as
 specified in this external post: https://superuser.com/a/1307206/580856

 Outputs will lack the line `displaymatrix: rotation of 90.00 degrees` when
 analized with ffprobe, but this line will be displayed when the mp4 is
 edited manually with a hex editor as specified in the superuser link.

 How to reproduce:
 {{{
 % ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output2.mp4
 }}}
 or
 {{{
 % ffmpeg -i input.mp4 -c copy -bsf:v h264_metadata=rotate=90.0 output1.mp4
 ffmpeg version 2024-04-04-git-478d97f303-full_build-www.gyan.dev Copyright
 (c) 2000-2024 the FFmpeg developers
   built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
   configuration: --enable-gpl --enable-version3 --enable-static --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-libxevd
 --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp
 --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve
 --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-dxva2 --enable-d3d11va
 --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec
 --enable-nvenc --enable-vaapi --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      59. 13.100 / 59. 13.100
   libavcodec     61.  5.101 / 61.  5.101
   libavformat    61.  3.100 / 61.  3.100
   libavdevice    61.  2.100 / 61.  2.100
   libavfilter    10.  2.101 / 10.  2.101
   libswscale      8.  2.100 /  8.  2.100
   libswresample   5.  2.100 /  5.  2.100
   libpostproc    58.  2.100 / 58.  2.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf59.27.100
   Duration: 00:10:50.38, start: 0.000000, bitrate: 1830 kb/s
   Stream #0:0[0x1](eng): Video: h264 (High) (avc1 / 0x31637661),
 yuv420p(tv, bt709, progressive), 888x1920 [SAR 1:1 DAR 37:80], 1691 kb/s,
 43.14 fps, 43 tbr, 15360 tbn (default)
       Metadata:
         handler_name    : VideoHandler
         vendor_id       : [0][0][0][0]
         encoder         : Lavc59.37.100 libx264
   Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz,
 stereo, fltp, 128 kb/s (default)
       Metadata:
         handler_name    : SoundHandler
         vendor_id       : [0][0][0][0]
 [h264_metadata @ 0000012096b317c0] 4 bytes left at end of AVCC header.
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
   Stream #0:1 -> #0:1 (copy)
 Output #0, mp4, to 'output1.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf61.3.100
   Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv,
 bt709, progressive), 888x1920 [SAR 1:1 DAR 37:80], q=2-31, 1691 kb/s,
 43.14 fps, 43 tbr, 15360 tbn (default)
       Metadata:
         handler_name    : VideoHandler
         vendor_id       : [0][0][0][0]
         encoder         : Lavc59.37.100 libx264
   Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo,
 fltp, 128 kb/s (default)
       Metadata:
         handler_name    : SoundHandler
         vendor_id       : [0][0][0][0]
 Press [q] to stop, [?] for help
 [out#0/mp4 @ 0000012096b53900] video:134242KiB audio:10163KiB
 subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead:
 0.634229%
 size=  145321KiB time=00:10:50.27 bitrate=1830.7kbits/s speed= 881x
 }}}
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/11038>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list