Opened 3 years ago
Closed 3 years ago
#9812 closed defect (fixed)
LEAD_PERFORMER tag on Matroska chapter gets changed to PERFORMER
Reported by: | wvc | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | avformat |
Version: | git-master | Keywords: | matroska metadata |
Cc: | wvc | Blocked By: | |
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | yes |
Description (last modified by )
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.
Attachments (1)
Change History (4)
by , 3 years ago
comment:1 by , 3 years ago
Description: | modified (diff) |
---|
comment:2 by , 3 years ago
Analyzed by developer: | set |
---|---|
Component: | ffmpeg → avformat |
Reproduced by developer: | set |
Status: | new → open |
Patch is available here. Will probably apply it tomorrow.
Thanks for the report.
comment:3 by , 3 years ago
Resolution: | → fixed |
---|---|
Status: | open → closed |
Fixed in 672987b2db9051a4738402751b94133c0d6c405d.
Note:
See TracTickets
for help on using tickets.
Test input file with a LEAD_PERFORMER tag on a chapter