[FFmpeg-trac] #7946(ffmpeg:new): drawtext %{metadata:key} can only pull manually entered tags

FFmpeg trac at avcodec.org
Fri Jun 7 01:36:31 EEST 2019


#7946: drawtext %{metadata:key} can only pull manually entered tags
-------------------------------------+-------------------------------------
             Reporter:               |                     Type:
  electron.rotoscope                 |  enhancement
               Status:  new          |                 Priority:  minor
            Component:  ffmpeg       |                  Version:
             Keywords:  drawtext     |  unspecified
  metadata                           |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:

 ffmpeg's drawtext filter supports text expansion for metadata, but it only
 seems to be able to read keys that show up in ffprobe packet outputs
 prepended by "TAG:", which are rare. (I can only find them if I manually
 insert them via a concat list)
 It would be useful to be able to access other packet metadata (e.g. size
 of current packet) the same way %{n} and %{pts} work.

 How to reproduce:
 Running the latest ffmpeg on windows, if I don't create a
 "file_packet_metadata" line in a concat list, there's nothing the
 %{metadata} can access. It can't access any of the other information that
 shows up with ffprobe -show_packets

 {{{
 C:\ffmpeg>echo file 'C:\ffmpeg\testfile.mov' > catjustfile.txt

 C:\ffmpeg>ffprobe -f concat -safe 0 -show_packets -read_intervals "%+#1"
 catjustfile.txt
 ffprobe version N-93994-gd81913e680 Copyright (c) 2007-2019 the FFmpeg
 developers
   built with gcc 8.3.1 (GCC) 20190414
   configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
 fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-
 libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame
 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
 --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr
 --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack
 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2
 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-
 libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa
 --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx
 --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-
 nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
   libavutil      56. 28.100 / 56. 28.100
   libavcodec     58. 52.102 / 58. 52.102
   libavformat    58. 27.103 / 58. 27.103
   libavdevice    58.  7.100 / 58.  7.100
   libavfilter     7. 55.100 /  7. 55.100
   libswscale      5.  4.101 /  5.  4.101
   libswresample   3.  4.100 /  3.  4.100
   libpostproc    55.  4.100 / 55.  4.100
 Input #0, concat, from 'catjustfile.txt':
   Duration: N/A, start: 0.000000, bitrate: 57 kb/s
     Stream #0:0(eng): Video: prores (Proxy) (apco / 0x6F637061),
 yuv422p10le(tv, smpte170m/unknown/unknown, progressive), 64x64, 57 kb/s,
 25 fps, 25 tbr, 25 tbn, 25 tbc
     Metadata:
       creation_time   : 2019-06-06T23:17:35.000000Z
       handler_name    : Apple Video Media Handler
       encoder         : Apple ProRes 422 (Proxy)
 [PACKET]
 codec_type=video
 stream_index=0
 pts=0
 pts_time=0.000000
 dts=0
 dts_time=0.000000
 duration=1
 duration_time=0.040000
 convergence_duration=N/A
 convergence_duration_time=N/A
 size=288
 pos=1569
 flags=K_
 [/PACKET]

 C:\ffmpeg>ffmpeg -f concat -safe 0 -i catjustfile.txt -vf
 "drawtext=text='%{metadata\:manualkey\:notfound}'" -vframes 1 -y
 "out1.png"
 ffmpeg version N-93994-gd81913e680 Copyright (c) 2000-2019 the FFmpeg
 developers
   built with gcc 8.3.1 (GCC) 20190414
   configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
 fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-
 libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame
 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
 --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr
 --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack
 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2
 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-
 libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa
 --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx
 --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-
 nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
   libavutil      56. 28.100 / 56. 28.100
   libavcodec     58. 52.102 / 58. 52.102
   libavformat    58. 27.103 / 58. 27.103
   libavdevice    58.  7.100 / 58.  7.100
   libavfilter     7. 55.100 /  7. 55.100
   libswscale      5.  4.101 /  5.  4.101
   libswresample   3.  4.100 /  3.  4.100
   libpostproc    55.  4.100 / 55.  4.100
 Input #0, concat, from 'catjustfile.txt':
   Duration: N/A, start: 0.000000, bitrate: 57 kb/s
     Stream #0:0(eng): Video: prores (Proxy) (apco / 0x6F637061),
 yuv422p10le(tv, smpte170m/unknown/unknown, progressive), 64x64, 57 kb/s,
 25 fps, 25 tbr, 25 tbn, 25 tbc
     Metadata:
       creation_time   : 2019-06-06T23:17:35.000000Z
       handler_name    : Apple Video Media Handler
       encoder         : Apple ProRes 422 (Proxy)
 Stream mapping:
   Stream #0:0 -> #0:0 (prores (native) -> png (native))
 Press [q] to stop, [?] for help
 Fontconfig error: Cannot load default config file
 [Parsed_drawtext_0 @ 000000000064c6c0] Using
 "C:/Windows/fonts/mingliu.ttc"
 Output #0, image2, to 'out1.png':
   Metadata:
     encoder         : Lavf58.27.103
     Stream #0:0(eng): Video: png, rgb48be, 64x64, q=2-31, 200 kb/s, 25
 fps, 25 tbn, 25 tbc
     Metadata:
       creation_time   : 2019-06-06T23:17:35.000000Z
       handler_name    : Apple Video Media Handler
       encoder         : Lavc58.52.102 png
 frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A speed=
 2.5x
 video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: unknown

 C:\ffmpeg>echo file 'C:\ffmpeg\testfile.mov' > catmanualentry.txt && echo
 file_packet_metadata manualkey=manualentry >> catmanualentry.txt

 C:\ffmpeg>ffprobe -f concat -safe 0 -show_packets -read_intervals "%+#1"
 catmanualentry.txt
 ffprobe version N-93994-gd81913e680 Copyright (c) 2007-2019 the FFmpeg
 developers
   built with gcc 8.3.1 (GCC) 20190414
   configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
 fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-
 libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame
 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
 --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr
 --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack
 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2
 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-
 libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa
 --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx
 --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-
 nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
   libavutil      56. 28.100 / 56. 28.100
   libavcodec     58. 52.102 / 58. 52.102
   libavformat    58. 27.103 / 58. 27.103
   libavdevice    58.  7.100 / 58.  7.100
   libavfilter     7. 55.100 /  7. 55.100
   libswscale      5.  4.101 /  5.  4.101
   libswresample   3.  4.100 /  3.  4.100
   libpostproc    55.  4.100 / 55.  4.100
 Input #0, concat, from 'catmanualentry.txt':
   Duration: N/A, start: 0.000000, bitrate: 57 kb/s
     Stream #0:0(eng): Video: prores (Proxy) (apco / 0x6F637061),
 yuv422p10le(tv, smpte170m/unknown/unknown, progressive), 64x64, 57 kb/s,
 25 fps, 25 tbr, 25 tbn, 25 tbc
     Metadata:
       creation_time   : 2019-06-06T23:17:35.000000Z
       handler_name    : Apple Video Media Handler
       encoder         : Apple ProRes 422 (Proxy)
 [PACKET]
 codec_type=video
 stream_index=0
 pts=0
 pts_time=0.000000
 dts=0
 dts_time=0.000000
 duration=1
 duration_time=0.040000
 convergence_duration=N/A
 convergence_duration_time=N/A
 size=288
 pos=1569
 flags=K_
 TAG:manualkey=manualentry
 [SIDE_DATA]
 side_data_type=Strings Metadata
 [/SIDE_DATA]
 [/PACKET]

 C:\ffmpeg>ffmpeg -f concat -safe 0 -i catmanualentry.txt -vf
 "drawtext=text='%{metadata\:manualkey\:notfound}'" -vframes 1 -y
 "out2.png"
 ffmpeg version N-93994-gd81913e680 Copyright (c) 2000-2019 the FFmpeg
 developers
   built with gcc 8.3.1 (GCC) 20190414
   configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
 fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-
 libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame
 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
 --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr
 --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack
 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2
 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-
 libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa
 --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx
 --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-
 nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
   libavutil      56. 28.100 / 56. 28.100
   libavcodec     58. 52.102 / 58. 52.102
   libavformat    58. 27.103 / 58. 27.103
   libavdevice    58.  7.100 / 58.  7.100
   libavfilter     7. 55.100 /  7. 55.100
   libswscale      5.  4.101 /  5.  4.101
   libswresample   3.  4.100 /  3.  4.100
   libpostproc    55.  4.100 / 55.  4.100
 Input #0, concat, from 'catmanualentry.txt':
   Duration: N/A, start: 0.000000, bitrate: 57 kb/s
     Stream #0:0(eng): Video: prores (Proxy) (apco / 0x6F637061),
 yuv422p10le(tv, smpte170m/unknown/unknown, progressive), 64x64, 57 kb/s,
 25 fps, 25 tbr, 25 tbn, 25 tbc
     Metadata:
       creation_time   : 2019-06-06T23:17:35.000000Z
       handler_name    : Apple Video Media Handler
       encoder         : Apple ProRes 422 (Proxy)
 Stream mapping:
   Stream #0:0 -> #0:0 (prores (native) -> png (native))
 Press [q] to stop, [?] for help
 Fontconfig error: Cannot load default config file
 [Parsed_drawtext_0 @ 000000000057e740] Using
 "C:/Windows/fonts/mingliu.ttc"
 Output #0, image2, to 'out2.png':
   Metadata:
     encoder         : Lavf58.27.103
     Stream #0:0(eng): Video: png, rgb48be, 64x64, q=2-31, 200 kb/s, 25
 fps, 25 tbn, 25 tbc
     Metadata:
       creation_time   : 2019-06-06T23:17:35.000000Z
       handler_name    : Apple Video Media Handler
       encoder         : Lavc58.52.102 png
 frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
 speed=1.48x
 video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: unknown
 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/7946>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list