Opened 8 years ago
Last modified 8 years ago
#7549 new defect
Matroska Edition Titles used as Segment Title
| Reported by: | dave rice | Owned by: | |
|---|---|---|---|
| Priority: | normal | Component: | avformat |
| Version: | unspecified | Keywords: | mkv |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | no | |
| Analyzed by developer: | no |
Description
Summary of the bug:
Hi, I'm using Matroska files with ordered editions and these have Edition titles but there is no Segment title. I notice that FFmpeg is interpretting the default Edition title as the Segment title anyway though. Also when remuxing the Edition title is then mapped to the Segment title which IMHO is not intended.
How to reproduce:
# create a sample Matroska file
ffmpeg -y -f lavfi -i "smptebars=s=720x480:r=25:d=5" -f lavfi -i "aevalsrc=0.1*sin(1000*2*PI*t):d=5:s=48000:c=stereo" -f lavfi -i "color=color=black:s=720x480:r=25:d=5" -f lavfi -i "aevalsrc=0:d=5:s=48000:c=stereo" -f lavfi -i "color=s=2x2:r=1:d=6,format=gray,geq=lum=4-N,datascope=s=24x12,crop=6:12:10:0,scale=iw*30:ih*30:flags=neighbor,pad=720:480:(720-iw)/2:(480-ih)/2,fps=25" -f lavfi -i "sine=r=48000:frequency=1:beep_factor=400:duration=5" -f lavfi -i "nullsrc=s=720x480:r=25:d=5,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128,geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'" -f lavfi -i "anoisesrc=colour=pink:d=5:r=48000,tremolo=f=0.1:d=0.9" -f lavfi -i "color=color=black:s=720x480:r=25:d=5" -f lavfi -i "aevalsrc=0:d=5:s=48000:c=stereo" -filter_complex "[0:v][1:a][2:v][3:a][4:v][5:a][6:v][7:a][8:v][9:a]concat=n=5:v=1:a=1[v];[v]scale=240x120" -c:v ffv1 -c:a flac chapters_test.mkv
Use the following files to express chapters and tags.
# tags.xml
<?xml version="1.0"?>
<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
<Tags>
<Tag>
<Targets>
<EditionUID>12338659363134957115</EditionUID>
<TargetTypeValue>50</TargetTypeValue>
</Targets>
<Simple>
<Name>TITLE</Name>
<String>Full Transfer</String>
<TagLanguage>eng</TagLanguage>
<DefaultLanguage>1</DefaultLanguage>
</Simple>
</Tag>
<Tag>
<Targets>
<EditionUID>3475548369</EditionUID>
<TargetTypeValue>50</TargetTypeValue>
</Targets>
<Simple>
<Name>TITLE</Name>
<String>Presentation</String>
<TagLanguage>eng</TagLanguage>
<DefaultLanguage>1</DefaultLanguage>
</Simple>
</Tag>
</Tags>
chapters.xml
<?xml version="1.0"?>
<!-- <!DOCTYPE Chapters SYSTEM "matroskachapters.dtd"> -->
<Chapters>
<EditionEntry>
<EditionFlagOrdered>1</EditionFlagOrdered>
<EditionFlagHidden>0</EditionFlagHidden>
<EditionFlagDefault>1</EditionFlagDefault>
<EditionUID>3475548369</EditionUID>
<ChapterAtom>
<ChapterTimeStart>00:00:15.000000000</ChapterTimeStart>
<ChapterTimeEnd>00:00:20.000000000</ChapterTimeEnd>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
<ChapterUID>15183902702307841284</ChapterUID>
<ChapterDisplay>
<ChapterString>Fuzzy Ball</ChapterString>
<ChapterLanguage>eng</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
</EditionEntry>
<EditionEntry>
<EditionFlagOrdered>1</EditionFlagOrdered>
<EditionFlagHidden>0</EditionFlagHidden>
<EditionFlagDefault>0</EditionFlagDefault>
<EditionUID>12338659363134957115</EditionUID>
<ChapterAtom>
<ChapterTimeStart>00:00:00.000000000</ChapterTimeStart>
<ChapterTimeEnd>00:00:05.000000000</ChapterTimeEnd>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
<ChapterUID>14224305391220421330</ChapterUID>
<ChapterDisplay>
<ChapterString>Color Bars</ChapterString>
<ChapterLanguage>eng</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:00:05.000000000</ChapterTimeStart>
<ChapterTimeEnd>00:00:10.000000000</ChapterTimeEnd>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
<ChapterUID>14224305391220421331</ChapterUID>
<ChapterDisplay>
<ChapterString>Black Frames</ChapterString>
<ChapterLanguage>eng</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:00:10.000000000</ChapterTimeStart>
<ChapterTimeEnd>00:00:15.000000000</ChapterTimeEnd>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
<ChapterUID>14224305391220421332</ChapterUID>
<ChapterDisplay>
<ChapterString>Countdown</ChapterString>
<ChapterLanguage>eng</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:00:15.000000000</ChapterTimeStart>
<ChapterTimeEnd>00:00:20.000000000</ChapterTimeEnd>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
<ChapterUID>14224305391220421333</ChapterUID>
<ChapterDisplay>
<ChapterString>Fuzzy Ball</ChapterString>
<ChapterLanguage>eng</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterTimeStart>00:00:20.000000000</ChapterTimeStart>
<ChapterTimeEnd>00:00:25.000000000</ChapterTimeEnd>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
<ChapterUID>14224305391220421334</ChapterUID>
<ChapterDisplay>
<ChapterString>Black Frames</ChapterString>
<ChapterLanguage>eng</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
</EditionEntry>
</Chapters>
Mux chapters and tags into MKV file.
mkvpropedit chapters_test.mkv -c chapters.xml -t global:tags.xml
The output of mkvpropedit is attached as a sample. An ffmpeg -i shows
ffmpeg -i chapters_test.mkv
ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
built with Apple LLVM version 9.0.0 (clang-900.0.38)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gpl --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfreetype --enable-opencl --enable-videotoolbox
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Input #0, matroska,webm, from 'chapters_test.mkv':
Metadata:
encoder : Lavf58.20.100
TITLE : Presentation
TITLE-eng : Presentation
Duration: 00:00:25.00, start: 0.000000, bitrate: 533 kb/s
Chapter #0:0: start 15.000000, end 20.000000
Metadata:
title : Fuzzy Ball
Chapter #0:1: start 20.000000, end 25.000000
Metadata:
title : Black Frames
Stream #0:0: Audio: flac, 48000 Hz, stereo, s32 (24 bit) (default)
Metadata:
ENCODER : Lavc58.35.100 flac
DURATION : 00:00:25.000000000
Stream #0:1: Video: ffv1 (FFV1 / 0x31564646), yuv420p, 240x120, SAR 3:4 DAR 3:2, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
ENCODER : Lavc58.35.100 ffv1
DURATION : 00:00:25.000000000
At least one output file must be specified
Presentation is the title of the default edition but not for the segment which was intentionally left blank.
When remuxing such as ffmpeg -i chapters_test.mkv -c copy -map 0 output.mkv, then the edition title is mapped to the segment title and then the title of the edition is lost.
ffmpeg -i chapters_test.mkv -c copy -map 0 output.mkv
ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
built with Apple LLVM version 9.0.0 (clang-900.0.38)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gpl --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfreetype --enable-opencl --enable-videotoolbox
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Input #0, matroska,webm, from 'chapters_test.mkv':
Metadata:
encoder : Lavf58.20.100
TITLE : Presentation
TITLE-eng : Presentation
Duration: 00:00:25.00, start: 0.000000, bitrate: 533 kb/s
Chapter #0:0: start 15.000000, end 20.000000
Metadata:
title : Fuzzy Ball
Chapter #0:1: start 20.000000, end 25.000000
Metadata:
title : Black Frames
Stream #0:0: Audio: flac, 48000 Hz, stereo, s32 (24 bit) (default)
Metadata:
ENCODER : Lavc58.35.100 flac
DURATION : 00:00:25.000000000
Stream #0:1: Video: ffv1 (FFV1 / 0x31564646), yuv420p, 240x120, SAR 3:4 DAR 3:2, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
ENCODER : Lavc58.35.100 ffv1
DURATION : 00:00:25.000000000
Output #0, matroska, to 'output.mkv':
Metadata:
TITLE-eng : Presentation
TITLE : Presentation
encoder : Lavf58.20.100
Chapter #0:0: start 15.000000, end 20.000000
Metadata:
title : Fuzzy Ball
Chapter #0:1: start 20.000000, end 25.000000
Metadata:
title : Black Frames
Stream #0:0: Audio: flac ([172][241][0][0] / 0xF1AC), 48000 Hz, stereo, s32 (24 bit) (default)
Metadata:
ENCODER : Lavc58.35.100 flac
DURATION : 00:00:25.000000000
Stream #0:1: Video: ffv1 (FFV1 / 0x31564646), yuv420p, 240x120 [SAR 3:4 DAR 3:2], q=2-31, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
ENCODER : Lavc58.35.100 ffv1
DURATION : 00:00:25.000000000
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 625 fps=0.0 q=-1.0 Lsize= 1628kB time=00:00:24.96 bitrate= 534.1kbits/s speed=1.55e+03x
video:493kB audio:1126kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.542953%
Here's the resulting tags of the output.mkv
mkvextract tags output.mkv
<?xml version="1.0"?>
<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
<Tags>
<Tag>
<Targets />
<Simple>
<Name>TITLE</Name>
<TagLanguage>eng</TagLanguage>
<String>Presentation</String>
</Simple>
<Simple>
<Name>ENCODER</Name>
<String>Lavf58.20.100</String>
</Simple>
</Tag>
<Tag>
<Targets>
<TrackUID>1</TrackUID>
</Targets>
<Simple>
<Name>ENCODER</Name>
<String>Lavc58.35.100 flac</String>
</Simple>
</Tag>
<Tag>
<Targets>
<TrackUID>2</TrackUID>
</Targets>
<Simple>
<Name>ENCODER</Name>
<String>Lavc58.35.100 ffv1</String>
</Simple>
</Tag>
<Tag>
<Targets>
<TrackUID>1</TrackUID>
</Targets>
<Simple>
<Name>DURATION</Name>
<String>00:00:25.000000000</String>
</Simple>
</Tag>
<Tag>
<Targets>
<TrackUID>2</TrackUID>
</Targets>
<Simple>
<Name>DURATION</Name>
<String>00:00:25.000000000</String>
</Simple>
</Tag>
</Tags>
Note, now the editions are untitled, and the default edition title is now without a target, so implied to be the Segment title.
Also in output.mkv the non-default edition is completely lost:
mkvextract chapters output.mkv
<?xml version="1.0"?>
<!-- <!DOCTYPE Chapters SYSTEM "matroskachapters.dtd"> -->
<Chapters>
<EditionEntry>
<EditionFlagDefault>1</EditionFlagDefault>
<EditionFlagHidden>0</EditionFlagHidden>
<ChapterAtom>
<ChapterUID>2529763887</ChapterUID>
<ChapterTimeStart>00:00:15.000000000</ChapterTimeStart>
<ChapterTimeEnd>00:00:20.000000000</ChapterTimeEnd>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
<ChapterDisplay>
<ChapterString>Fuzzy Ball</ChapterString>
<ChapterLanguage>und</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
<ChapterAtom>
<ChapterUID>1</ChapterUID>
<ChapterTimeStart>00:00:20.000000000</ChapterTimeStart>
<ChapterTimeEnd>00:00:25.000000000</ChapterTimeEnd>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
<ChapterDisplay>
<ChapterString>Black Frames</ChapterString>
<ChapterLanguage>und</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
</EditionEntry>
</Chapters>
Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.
Attachments (2)
Change History (4)
by , 8 years ago
| Attachment: | chapters_test.mkv added |
|---|
comment:1 by , 8 years ago
| Keywords: | mkv added; matroska removed |
|---|
Is this issue reproducible with current FFmpeg git head?
comment:2 by , 8 years ago
yes, i rebuilt just now using git-head and the result was the same.
I do notice that ffmpeg -i on both the input and output are interpretted similarly although the files contain very different segment info and chapter info.
ffmpeg -i chapters_test.mkv -i output.mkv
ffmpeg version N-53923-gb41f378fc4 Copyright (c) 2000-2018 the FFmpeg developers
built with Apple LLVM version 9.0.0 (clang-900.0.38)
configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-b41f378 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gpl --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-opencl --enable-videotoolbox
libavutil 56. 24.101 / 56. 24.101
libavcodec 58. 42.100 / 58. 42.100
libavformat 58. 24.100 / 58. 24.100
libavdevice 58. 6.101 / 58. 6.101
libavfilter 7. 46.101 / 7. 46.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
libpostproc 55. 4.100 / 55. 4.100
Input #0, matroska,webm, from 'chapters_test.mkv':
Metadata:
encoder : Lavf58.24.100
TITLE : Presentation
TITLE-eng : Presentation
Duration: 00:00:25.00, start: 0.000000, bitrate: 533 kb/s
Chapter #0:0: start 15.000000, end 20.000000
Metadata:
title : Fuzzy Ball
Chapter #0:1: start 20.000000, end 25.000000
Metadata:
title : Black Frames
Stream #0:0: Audio: flac, 48000 Hz, stereo, s32 (24 bit) (default)
Metadata:
ENCODER : Lavc58.42.100 flac
DURATION : 00:00:25.000000000
Stream #0:1: Video: ffv1 (FFV1 / 0x31564646), yuv420p, 240x120, SAR 3:4 DAR 3:2, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
ENCODER : Lavc58.42.100 ffv1
DURATION : 00:00:25.000000000
Input #1, matroska,webm, from 'output.mkv':
Metadata:
title : Presentation
TITLE-eng : Presentation
ENCODER : Lavf58.24.100
Duration: 00:00:25.00, start: 0.000000, bitrate: 533 kb/s
Chapter #1:0: start 15.000000, end 20.000000
Metadata:
title : Fuzzy Ball
Chapter #1:1: start 20.000000, end 25.000000
Metadata:
title : Black Frames
Stream #1:0: Audio: flac, 48000 Hz, stereo, s32 (24 bit) (default)
Metadata:
ENCODER : Lavc58.42.100 flac
DURATION : 00:00:25.000000000
Stream #1:1: Video: ffv1 (FFV1 / 0x31564646), yuv420p, 240x120, SAR 3:4 DAR 3:2, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
ENCODER : Lavc58.42.100 ffv1
DURATION : 00:00:25.000000000
At least one output file must be specified



chapters_test.mkv