跳转到主要内容

媒体处理的工具集合。

项目描述

压力锅

一个包含各种媒体处理函数和工具的库

设置您的环境

待办事项

转换字幕文件

pressurecooker 库包含将字幕文件从几种不同格式转换为首选 VTT 格式的工具。目前支持的格式包括

pressurecooker 中,"字幕"和"副标题"这两个术语可以互换使用。所有处理转换的类和函数都使用"副标题"这个术语。

语言代码

DFXPSAMITTML格式可以封装一个文件中的多个语言的字幕内容。而SCCSRTVTT格式通常只限于文件中未定义的单种语言(VTT可能是一个例外,但我们的转换器无法检测其语言)。因此,在转换这些文件时,我们无法知道我们正在处理哪种语言,而必须使用常量LANGUAGE_CODE_UNKNOWN来提取转换后的字幕。

注意,字幕文件中使用的语言代码可能与le-utils中定义的 LE 内部语言代码不同。

从文件创建转换器

要使用本地文件路径创建字幕转换器,请使用以下命令

from pressurecooker.subtitles import build_subtitle_converter_from_file

converter = build_subtitle_converter_from_file('/path/to/file.srt')

从字符串创建转换器

如果您已经将字幕加载到字符串变量中,可以像这样创建转换器

from pressurecooker.subtitles import build_subtitle_converter

captions_str = ''   # In this example, `captions_str` holds the caption contents
converter = build_subtitle_converter(captions_str)

转换字幕

对于不包含语言代码信息的 SCCSRTVTT 字幕格式,您必须在提取转换后的字幕时将语言指定为常量 LANGUAGE_CODE_UNKNOWN

from pressurecooker.subtitles import build_subtitle_converter_from_file
from pressurecooker.subtitles import LANGUAGE_CODE_UNKNOWN

converter = build_subtitle_converter_from_file('/path/to/file.srt')

# Option A: Obtain the contents of the converted VTT file as a string
output_str = converter.convert(LANGUAGE_CODE_UNKNOWN)

# Option B: Write the converted subtitles to a local path
converter.write("/path/to/file.vtt", LANGUAGE_CODE_UNKNOWN)

LANGUAGE_CODE_UNKNOWN 常量是 pycaption 使用来表示未知语言代码的内部表示。这是 SCCSRTVTT 字幕转换器的默认且唯一语言代码。

如果您不确定格式,但知道文件的语言,最好在条件替换 LANGUAGE_CODE_UNKNOWN 时使用该语言

from pressurecooker.subtitles import build_subtitle_converter_from_file
from pressurecooker.subtitles import LANGUAGE_CODE_UNKNOWN

converter = build_subtitle_converter_from_file('/path/to/file')

# Replace unknown language code if present
if converter.has_language(LANGUAGE_CODE_UNKNOWN):
    converter.replace_unknown_language('en')
    
assert converter.has_language('en'), 'Must have English after replace'

output_str = converter.convert('en')

下面是如何处理具有多种语言的多语言字幕格式(如DFXPSAMITTML)的示例

from pressurecooker.subtitles import build_subtitle_converter_from_file
from pressurecooker.subtitles import LANGUAGE_CODE_UNKNOWN, InvalidSubtitleLanguageError

converter = build_subtitle_converter_from_file('/path/to/file')

for lang_code in converter.get_language_codes():
    # `some_logic` would be your decisions on whether to use this language
    if some_logic(lang_code):
        converter.write("/path/to/file-{}.vtt".format(lang_code), lang_code)
    elif lang_code == LANGUAGE_CODE_UNKNOWN:
        raise InvalidSubtitleLanguageError('Unexpected unknown language')

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

pressurecooker-0.0.30.tar.gz (33.0 kB 查看哈希值)

上传时间

支持