必剪软件字幕提取工具
应 ak360 建议,加了一种格式必剪字幕提取工具.zip(247.8 KB, 下载次数: 393)2025-4-11 11:30 上传
点击文件名下载附件
------------------------------------------------------------------------老板看中个演讲视频,想把里面的内容提取成文本,百度了一下,发现哔哩上有个软件,但是要收费,
所以有了这个软件,无非是json的解析,技术难度不大,希望能给同样需求的伙伴提供些帮助
转换精度有限,取决必剪,不过大部分还可以,稍加改动即可.
1.使用必剪软件识别字幕
2.看下草稿的保存路径
3.到相应文件夹下,找到字幕文件
4.随便选择个比较大的文件,拖入软件进行转换
为啥没反应 问了DS,他给了这段代码,测试一下很好用,给需要的朋友。
import os
import json
from datetime import datetime
def find_target_json():
base_dir = r"C:\Users\174501259\Documents\Bcut Drafts"
target_files = []
for root, dirs, files in os.walk(base_dir):
for file in files:
if file.lower().endswith(".json") and file.lower() != "draftinfo.json":
full_path = os.path.join(root, file)
mtime = os.path.getmtime(full_path)
size = os.path.getsize(full_path)
target_files.append((full_path, mtime, size))
if not target_files:
return None
# 按修改时间降序和文件大小降序排序
target_files.sort(key=lambda x: (-x, -x))
return target_files
def parse_subtitles(json_path):
with open(json_path, 'r', encoding='utf-8') as f:
data = json.load(f)
subtitles = []
for track in data.get('tracks', []):
if track.get('BTrackType') == 0:# 只处理字幕轨道
for clip in track.get('clips', []):
asset = clip.get('AssetInfo', {})
content = asset.get('content', '')
in_point = clip.get('inPoint', 0)
duration = clip.get('duration', 0)
# 假设时间单位为毫秒
start = in_point
end = in_point + duration
subtitles.append({
'start': start,
'end': end,
'content': content
})
# 按开始时间排序
subtitles.sort(key=lambda x: x['start'])
return subtitles
def ms_to_srt_time(ms):
hours = ms // 3600000
ms %= 3600000
minutes = ms // 60000
ms %= 60000
seconds = ms // 1000
milliseconds = ms % 1000
return f"{hours:02d}:{minutes:02d}:{seconds:02d},{milliseconds:03d}"
def create_srt(subtitles):
srt_content = []
for i, sub in enumerate(subtitles, 1):
start = ms_to_srt_time(sub['start'])
end = ms_to_srt_time(sub['end'])
srt_content.append(f"{i}\n{start} --> {end}\n{sub['content']}\n")
return "\n".join(srt_content)
def main():
if os.path.exists("subtitles.srt"):
return
json_path = find_target_json()
if not json_path:
return
subtitles = parse_subtitles(json_path)
if not subtitles:
return
srt_content = create_srt(subtitles)
with open("subtitles.srt", 'w', encoding='utf-8-sig') as f:
f.write(srt_content)
if __name__ == "__main__":
main() 下载学习下,感谢分享 感谢分享 我记得剪映也有,也是免费提取和导出,现在也是收费了? 很不错的提取字幕软件,感谢分享 能加上时间吗 剪映没用过不太清楚 有加时间的选项啊
页:
[1]
2