[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