К сожалению, kdenlive не позволяет добавлять главы в файл MKV, только на DVD.
Как я могу добавить главы?
В 2012 году ^ rooker опубликовал решение этой проблемы, в котором используется устаревшая схема kdenlive. К сожалению регистрация отключена на его форуме, или я бы разместил его там.
Я обновил файл, теперь вы можете применить этот XSLT к любому файлу .kdenlive
и получить обратно используемые главы. Все , что вам нужно , это xsltproc
и mkvmerge
(часть Mkvtoolnix).
Добавьте маркеры в kdenlive и сначала сохраните их.
<?xml version="1.0"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<Chapters>
<EditionEntry>
<xsl:for-each select="mlt/playlist/property[contains(@name, 'marker')]">
<xsl:variable name="step1" select="translate(@name, 'kdenlive:marker', '')"/>
<xsl:variable name="time" select="substring($step1, 3, string-length($step1) - 3)"/>
<xsl:variable name="seconds" select="$time mod 60" />
<xsl:variable name="minutes" select="floor($time div 60) mod 60" />
<xsl:variable name="hours" select="floor(($time div 60) div 60)" />
<!-- hh:mm:ss.msec -->
<xsl:variable name="timecode">
<xsl:value-of select="format-number($hours, '00')"/>:<xsl:value-of select="format-number($minutes, '00')"/>:<xsl:value-of select="format-number($seconds, '00.000')"/>
</xsl:variable>
<ChapterAtom>
<ChapterDisplay>
<ChapterString>
<xsl:value-of select="text()"/>
</ChapterString>
</ChapterDisplay>
<ChapterFlagHidden>0</ChapterFlagHidden>
<ChapterFlagEnabled>1</ChapterFlagEnabled>
<ChapterTimeStart>
<xsl:value-of select="$timecode"/>
</ChapterTimeStart>
</ChapterAtom>
</xsl:for-each>
</EditionEntry>
</Chapters>
</xsl:template>
</xsl:stylesheet>
xsltproc 4subs.xslt 4subs.kdenlive > chaps
mkvmerge --chapters chaps -o cm2.mkv cm.mkv