gpt4 book ai didi

ffmpeg - 将章节从 xml 转换为 ffmetadata?

转载 作者:行者123 更新时间:2023-12-04 22:58:41 29 4
gpt4 key购买 nike

我想在我的编码 mkv 中添加章节,但我得到 *.xml当我从网上下载文件时。那么有什么方法可以将其转换为FFMETADATAFILE这样当我使用 ffmpeg 对其进行编码时,我可以将章节添加到我的 mkv 中?

样本输入

<?xml version="1.0"?>

<!-- <!DOCTYPE Chapters SYSTEM "matroskachapters.dtd"> -->

-<Chapters>


-<EditionEntry>

<EditionFlagDefault>1</EditionFlagDefault>

<EditionFlagHidden>0</EditionFlagHidden>


-<ChapterAtom>

<ChapterUID>95534594</ChapterUID>

<ChapterTimeStart>00:00:00.000000000</ChapterTimeStart>

<ChapterTimeEnd>00:01:30.000000000</ChapterTimeEnd>

<ChapterFlagHidden>0</ChapterFlagHidden>

<ChapterFlagEnabled>1</ChapterFlagEnabled>


-<ChapterDisplay>

<ChapterString>Chapter 1</ChapterString>

<ChapterLanguage>und</ChapterLanguage>

</ChapterDisplay>

</ChapterAtom>



</EditionEntry>

</Chapters>

样本输出
;FFMETADATA1
title=bike\\shed
;this is a comment
artist=FFmpeg troll team

[CHAPTER]
TIMEBASE=1/1000
START=0
#chapter ends at 0:01:00
END=60000
title=chapter \#1
[STREAM]
title=multi\
line

顺便说一句,我只在 cli 模式下使用 ffmpeg。

最佳答案

Welp,我写了这个方便的花花公子脚本,正是这样做的。
链接到 gist
脚本

from bs4 import BeautifulSoup # pip install bs4
import re


with open(r"PATH/TO/CHAPTERS/XML/FILE.xml", 'r') as f:
soup = BeautifulSoup(f.read(), 'html.parser')


chapters = soup.select('editionentry > chapteratom')
chapters_array = []


for chapter in chapters:
time = re.search(r'(\d{2}):(\d{2}):(\d{2})', str(chapter))
hrs = int(time.group(1))
mins = int(time.group(2))
secs = int(time.group(3))

minutes = (hrs * 60) + mins
seconds = secs + (minutes * 60)
timestamp = (seconds * 1000)
chap = {
"title": re.sub(r'(=|;|#|\n)', r'\\\1', chapter.find('chapterstring').text),
"startTime": timestamp
}
chapters_array.append(chap)

text = ";FFMETADATA1\n\n"

for i in range(len(chapters_array)-1):
chap = chapters_array[i]
title = chap['title']
start = chap['startTime']
end = chapters_array[i+1]['startTime']-1
text += f"\n[CHAPTER]\nTIMEBASE=1/1000\nSTART={start}\nEND={end}\ntitle={title}\n"

text = text.strip()

print(text)
如何使用?
替换 PATH/TO/CHAPTERS/XML/FILE.xml使用 xml 文件的实际文件路径。
确保您已安装 python 3。
运行 python -m pip install bs4安装依赖项。
只需运行脚本。 (例如 python script.py 其中 script.py 是您用来保存脚本的名称)
如果您欣赏我的回答,请将其标记为该问题的已接受答案。
PS:这个脚本的灵感来自 https://ikyle.me/blog/2020/add-mp4-chapters-ffmpeg

关于ffmpeg - 将章节从 xml 转换为 ffmetadata?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59207231/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com