[FFmpeg-trac] #9812(ffmpeg:new): LEAD_PERFORMER tag on Matroska chapter gets changed to PERFORMER

FFmpeg trac at avcodec.org
Wed Jun 15 06:55:10 EEST 2022


#9812: LEAD_PERFORMER tag on Matroska chapter gets changed to PERFORMER
-------------------------------------+-------------------------------------
             Reporter:  wvc          |                    Owner:  (none)
                 Type:  defect       |                   Status:  new
             Priority:  normal       |                Component:  ffmpeg
              Version:  git-master   |               Resolution:
             Keywords:  matroska     |               Blocked By:
  metadata                           |
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Description changed by wvc:

Old description:

> Summary of the bug:
> When processing a Matroska file with a `LEAD_PERFORMER` tag on a chapter,
> FFmpeg changes the tag to `PERFORMER`.
>
> How to reproduce:
> {{{
> $ mkvextract test.mkv tags
> <?xml version="1.0"?>
> <!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
> <Tags>
>   <Tag>
>     <Targets>
>       <ChapterUID>1</ChapterUID>
>     </Targets>
>     <Simple>
>       <Name>LEAD_PERFORMER</Name>
>       <String>Bob</String>
>     </Simple>
>   </Tag>
>   <Tag>
>     <Targets />
>     <Simple>
>       <Name>ENCODER</Name>
>       <String>Lavf59.16.100</String>
>     </Simple>
>   </Tag>
>   <Tag>
>     <Targets>
>       <TrackUID>6303416409872754858</TrackUID>
>     </Targets>
>     <Simple>
>       <Name>ENCODER</Name>
>       <String>Lavc59.18.100 libx264</String>
>     </Simple>
>     <Simple>
>       <Name>DURATION</Name>
>       <String>00:00:01.000000000</String>
>     </Simple>
>   </Tag>
> </Tags>
>
> $ $ ffmpeg -i test.mkv -c copy test2.mkv
> ffmpeg version N-107110-ge5f6707a7b Copyright (c) 2000-2022 the FFmpeg
> developers
>   built with gcc 10 (Debian 10.2.1-6)
>   configuration:
>   libavutil      57. 27.100 / 57. 27.100
>   libavcodec     59. 33.100 / 59. 33.100
>   libavformat    59. 25.100 / 59. 25.100
>   libavdevice    59.  6.100 / 59.  6.100
>   libavfilter     8. 40.100 /  8. 40.100
>   libswscale      6.  6.100 /  6.  6.100
>   libswresample   4.  6.100 /  4.  6.100
> Input #0, matroska,webm, from 'test.mkv':
>   Metadata:
>     ENCODER         : Lavf59.16.100
>   Duration: 00:00:01.00, start: 0.000000, bitrate: 68 kb/s
>   Chapters:
>     Chapter #0:0: start 0.000000, end 1.000000
>       Metadata:
>         performer       : Bob
>   Stream #0:0: Video: h264 (High 4:4:4 Predictive), yuv444p(tv,
> progressive), 320x240 [SAR 1:1 DAR 4:3], 25 fps, 25 tbr, 1k tbn
>     Metadata:
>       ENCODER         : Lavc59.18.100 libx264
>       DURATION        : 00:00:01.000000000
> Output #0, matroska, to 'test2.mkv':
>   Metadata:
>     encoder         : Lavf59.25.100
>   Chapters:
>     Chapter #0:0: start 0.000000, end 1.000000
>       Metadata:
>         LEAD_PERFORMER  : Bob
>   Stream #0:0: Video: h264 (High 4:4:4 Predictive) (H264 / 0x34363248),
> yuv444p(tv, progressive), 320x240 [SAR 1:1 DAR 4:3], q=2-31, 25 fps, 25
> tbr, 1k tbn
>     Metadata:
>       ENCODER         : Lavc59.18.100 libx264
>       DURATION        : 00:00:01.000000000
> Stream mapping:
>   Stream #0:0 -> #0:0 (copy)
> Press [q] to stop, [?] for help
> frame=   25 fps=0.0 q=-1.0 Lsize=       8kB time=00:00:00.88 bitrate=
> 77.5kbits/s speed=3.66e+03x
> video:7kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
> muxing overhead: 11.583214%
>
> $ $ mkvextract test2.mkv tags
> <?xml version="1.0"?>
> <!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
> <Tags>
>   <Tag>
>     <Targets>
>       <ChapterUID>1</ChapterUID>
>     </Targets>
>     <Simple>
>       <Name>PERFORMER</Name>
>       <String>Bob</String>
>     </Simple>
>   </Tag>
>   <Tag>
>     <Targets />
>     <Simple>
>       <Name>ENCODER</Name>
>       <String>Lavf59.25.100</String>
>     </Simple>
>   </Tag>
>   <Tag>
>     <Targets>
>       <TrackUID>11395597827482505527</TrackUID>
>     </Targets>
>     <Simple>
>       <Name>ENCODER</Name>
>       <String>Lavc59.18.100 libx264</String>
>     </Simple>
>     <Simple>
>       <Name>DURATION</Name>
>       <String>00:00:01.000000000</String>
>     </Simple>
>   </Tag>
> </Tags>
>
> $ ffmpeg -v 9 -loglevel 99 -i test.mkv
> ffmpeg version N-107110-ge5f6707a7b Copyright (c) 2000-2022 the FFmpeg
> developers
>   built with gcc 10 (Debian 10.2.1-6)
>   configuration:
>   libavutil      57. 27.100 / 57. 27.100
>   libavcodec     59. 33.100 / 59. 33.100
>   libavformat    59. 25.100 / 59. 25.100
>   libavdevice    59.  6.100 / 59.  6.100
>   libavfilter     8. 40.100 /  8. 40.100
>   libswscale      6.  6.100 /  6.  6.100
>   libswresample   4.  6.100 /  4.  6.100
> Splitting the commandline.
> Reading option '-v' ... matched as option 'v' (set logging level) with
> argument '9'.
> Reading option '-loglevel' ... matched as option 'loglevel' (set logging
> level) with argument '99'.
> Reading option '-i' ... matched as input url with argument 'test.mkv'.
> Finished splitting the commandline.
> Parsing a group of options: global .
> Applying option v (set logging level) with argument 9.
> Successfully parsed a group of options.
> Parsing a group of options: input url test.mkv.
> Successfully parsed a group of options.
> Opening an input file: test.mkv.
> [NULL @ 0x560ab5fd3400] Opening 'test.mkv' for reading
> [file @ 0x560ab5fd3c80] Setting default whitelist 'file,crypto,data'
> Probing matroska,webm score:100 size:2048
> Probing mp3 score:1 size:2048
> [matroska,webm @ 0x560ab5fd3400] Format matroska,webm probed with
> size=2048 and score=100
> st:0 removing common factor 1000000 from timebase
> [matroska,webm @ 0x560ab5fd3400] Before avformat_find_stream_info() pos:
> 718 bytes read:8567 seeks:0 nb_streams:1
> [h264 @ 0x560ab5fd60c0] nal_unit_type: 7(SPS), nal_ref_idc: 3
> [h264 @ 0x560ab5fd60c0] nal_unit_type: 8(PPS), nal_ref_idc: 3
> [h264 @ 0x560ab5fd60c0] nal_unit_type: 7(SPS), nal_ref_idc: 3
> [h264 @ 0x560ab5fd60c0] nal_unit_type: 8(PPS), nal_ref_idc: 3
> [h264 @ 0x560ab5fd60c0] nal_unit_type: 6(SEI), nal_ref_idc: 0
> [h264 @ 0x560ab5fd60c0] nal_unit_type: 5(IDR), nal_ref_idc: 3
> [h264 @ 0x560ab5fd60c0] Format yuv444p chosen by get_format().
> [h264 @ 0x560ab5fd60c0] Reinit context to 320x240, pix_fmt: yuv444p
> [h264 @ 0x560ab5fd60c0] no picture
> [matroska,webm @ 0x560ab5fd3400] All info found
> [matroska,webm @ 0x560ab5fd3400] stream 0: start_time: 0 duration: NOPTS
> [matroska,webm @ 0x560ab5fd3400] format: start_time: 0 duration: 1
> (estimate from stream) bitrate=68 kb/s
> [matroska,webm @ 0x560ab5fd3400] After avformat_find_stream_info() pos:
> 5118 bytes read:8567 seeks:0 frames:4
> Input #0, matroska,webm, from 'test.mkv':
>   Metadata:
>     ENCODER         : Lavf59.16.100
>   Duration: 00:00:01.00, start: 0.000000, bitrate: 68 kb/s
>   Chapters:
>     Chapter #0:0: start 0.000000, end 1.000000
>       Metadata:
>         performer       : Bob
>   Stream #0:0, 4, 1/1000: Video: h264 (High 4:4:4 Predictive), 1
> reference frame, yuv444p(tv, progressive, left), 320x240 [SAR 1:1 DAR
> 4:3], 0/1, 25 fps, 25 tbr, 1k tbn
>     Metadata:
>       ENCODER         : Lavc59.18.100 libx264
>       DURATION        : 00:00:01.000000000
> Successfully opened the file.
> At least one output file must be specified
> [AVIOContext @ 0x560ab5fdc040] Statistics: 8567 bytes read, 0 seeks
> }}}
>
> The test file was produced with `ffmpeg -i metadata -f lavfi -i testsrc
> -t 1 test.mkv` where `metadata` contains
> {{{
> ;FFMETADATA1
>
> [CHAPTER]
> TIMEBASE=1/1000000000
> START=0
> END=1000000000
> LEAD_PERFORMER=Bob
> }}}

New description:

 Summary of the bug:
 When processing a Matroska file with a `LEAD_PERFORMER` tag on a chapter,
 FFmpeg changes the tag to `PERFORMER`.

 How to reproduce:
 {{{
 $ mkvextract test.mkv tags
 <?xml version="1.0"?>
 <!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
 <Tags>
   <Tag>
     <Targets>
       <ChapterUID>1</ChapterUID>
     </Targets>
     <Simple>
       <Name>LEAD_PERFORMER</Name>
       <String>Bob</String>
     </Simple>
   </Tag>
   <Tag>
     <Targets />
     <Simple>
       <Name>ENCODER</Name>
       <String>Lavf59.16.100</String>
     </Simple>
   </Tag>
   <Tag>
     <Targets>
       <TrackUID>6303416409872754858</TrackUID>
     </Targets>
     <Simple>
       <Name>ENCODER</Name>
       <String>Lavc59.18.100 libx264</String>
     </Simple>
     <Simple>
       <Name>DURATION</Name>
       <String>00:00:01.000000000</String>
     </Simple>
   </Tag>
 </Tags>

 $ $ ffmpeg -i test.mkv -c copy test2.mkv
 ffmpeg version N-107110-ge5f6707a7b Copyright (c) 2000-2022 the FFmpeg
 developers
   built with gcc 10 (Debian 10.2.1-6)
   configuration:
   libavutil      57. 27.100 / 57. 27.100
   libavcodec     59. 33.100 / 59. 33.100
   libavformat    59. 25.100 / 59. 25.100
   libavdevice    59.  6.100 / 59.  6.100
   libavfilter     8. 40.100 /  8. 40.100
   libswscale      6.  6.100 /  6.  6.100
   libswresample   4.  6.100 /  4.  6.100
 Input #0, matroska,webm, from 'test.mkv':
   Metadata:
     ENCODER         : Lavf59.16.100
   Duration: 00:00:01.00, start: 0.000000, bitrate: 68 kb/s
   Chapters:
     Chapter #0:0: start 0.000000, end 1.000000
       Metadata:
         performer       : Bob
   Stream #0:0: Video: h264 (High 4:4:4 Predictive), yuv444p(tv,
 progressive), 320x240 [SAR 1:1 DAR 4:3], 25 fps, 25 tbr, 1k tbn
     Metadata:
       ENCODER         : Lavc59.18.100 libx264
       DURATION        : 00:00:01.000000000
 Output #0, matroska, to 'test2.mkv':
   Metadata:
     encoder         : Lavf59.25.100
   Chapters:
     Chapter #0:0: start 0.000000, end 1.000000
       Metadata:
         LEAD_PERFORMER  : Bob
   Stream #0:0: Video: h264 (High 4:4:4 Predictive) (H264 / 0x34363248),
 yuv444p(tv, progressive), 320x240 [SAR 1:1 DAR 4:3], q=2-31, 25 fps, 25
 tbr, 1k tbn
     Metadata:
       ENCODER         : Lavc59.18.100 libx264
       DURATION        : 00:00:01.000000000
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
 Press [q] to stop, [?] for help
 frame=   25 fps=0.0 q=-1.0 Lsize=       8kB time=00:00:00.88 bitrate=
 77.5kbits/s speed=3.66e+03x
 video:7kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 11.583214%

 $ $ mkvextract test2.mkv tags
 <?xml version="1.0"?>
 <!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
 <Tags>
   <Tag>
     <Targets>
       <ChapterUID>1</ChapterUID>
     </Targets>
     <Simple>
       <Name>PERFORMER</Name>
       <String>Bob</String>
     </Simple>
   </Tag>
   <Tag>
     <Targets />
     <Simple>
       <Name>ENCODER</Name>
       <String>Lavf59.25.100</String>
     </Simple>
   </Tag>
   <Tag>
     <Targets>
       <TrackUID>11395597827482505527</TrackUID>
     </Targets>
     <Simple>
       <Name>ENCODER</Name>
       <String>Lavc59.18.100 libx264</String>
     </Simple>
     <Simple>
       <Name>DURATION</Name>
       <String>00:00:01.000000000</String>
     </Simple>
   </Tag>
 </Tags>

 $ ffmpeg -v 9 -loglevel 99 -i test.mkv
 ffmpeg version N-107110-ge5f6707a7b Copyright (c) 2000-2022 the FFmpeg
 developers
   built with gcc 10 (Debian 10.2.1-6)
   configuration:
   libavutil      57. 27.100 / 57. 27.100
   libavcodec     59. 33.100 / 59. 33.100
   libavformat    59. 25.100 / 59. 25.100
   libavdevice    59.  6.100 / 59.  6.100
   libavfilter     8. 40.100 /  8. 40.100
   libswscale      6.  6.100 /  6.  6.100
   libswresample   4.  6.100 /  4.  6.100
 Splitting the commandline.
 Reading option '-v' ... matched as option 'v' (set logging level) with
 argument '9'.
 Reading option '-loglevel' ... matched as option 'loglevel' (set logging
 level) with argument '99'.
 Reading option '-i' ... matched as input url with argument 'test.mkv'.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option v (set logging level) with argument 9.
 Successfully parsed a group of options.
 Parsing a group of options: input url test.mkv.
 Successfully parsed a group of options.
 Opening an input file: test.mkv.
 [NULL @ 0x560ab5fd3400] Opening 'test.mkv' for reading
 [file @ 0x560ab5fd3c80] Setting default whitelist 'file,crypto,data'
 Probing matroska,webm score:100 size:2048
 Probing mp3 score:1 size:2048
 [matroska,webm @ 0x560ab5fd3400] Format matroska,webm probed with
 size=2048 and score=100
 st:0 removing common factor 1000000 from timebase
 [matroska,webm @ 0x560ab5fd3400] Before avformat_find_stream_info() pos:
 718 bytes read:8567 seeks:0 nb_streams:1
 [h264 @ 0x560ab5fd60c0] nal_unit_type: 7(SPS), nal_ref_idc: 3
 [h264 @ 0x560ab5fd60c0] nal_unit_type: 8(PPS), nal_ref_idc: 3
 [h264 @ 0x560ab5fd60c0] nal_unit_type: 7(SPS), nal_ref_idc: 3
 [h264 @ 0x560ab5fd60c0] nal_unit_type: 8(PPS), nal_ref_idc: 3
 [h264 @ 0x560ab5fd60c0] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x560ab5fd60c0] nal_unit_type: 5(IDR), nal_ref_idc: 3
 [h264 @ 0x560ab5fd60c0] Format yuv444p chosen by get_format().
 [h264 @ 0x560ab5fd60c0] Reinit context to 320x240, pix_fmt: yuv444p
 [h264 @ 0x560ab5fd60c0] no picture
 [matroska,webm @ 0x560ab5fd3400] All info found
 [matroska,webm @ 0x560ab5fd3400] stream 0: start_time: 0 duration: NOPTS
 [matroska,webm @ 0x560ab5fd3400] format: start_time: 0 duration: 1
 (estimate from stream) bitrate=68 kb/s
 [matroska,webm @ 0x560ab5fd3400] After avformat_find_stream_info() pos:
 5118 bytes read:8567 seeks:0 frames:4
 Input #0, matroska,webm, from 'test.mkv':
   Metadata:
     ENCODER         : Lavf59.16.100
   Duration: 00:00:01.00, start: 0.000000, bitrate: 68 kb/s
   Chapters:
     Chapter #0:0: start 0.000000, end 1.000000
       Metadata:
         performer       : Bob
   Stream #0:0, 4, 1/1000: Video: h264 (High 4:4:4 Predictive), 1 reference
 frame, yuv444p(tv, progressive, left), 320x240 [SAR 1:1 DAR 4:3], 0/1, 25
 fps, 25 tbr, 1k tbn
     Metadata:
       ENCODER         : Lavc59.18.100 libx264
       DURATION        : 00:00:01.000000000
 Successfully opened the file.
 At least one output file must be specified
 [AVIOContext @ 0x560ab5fdc040] Statistics: 8567 bytes read, 0 seeks
 }}}

 The test file was produced with `ffmpeg -i metadata -f lavfi -i testsrc -t
 1 test.mkv` where `metadata` contains
 {{{
 ;FFMETADATA1

 [CHAPTER]
 TIMEBASE=1/1000000000
 START=0
 END=1000000000
 LEAD_PERFORMER=Bob
 }}}

 The official tag according to the Matroska specification appears to be
 `LEAD_PERFORMER`, but `PERFORMER` is also mentioned at
 https://matroska.org/technical/tagging.html.

--
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/9812#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list