Skip to content

Python API

SceneFab 提供完整的 Python API,支持在脚本或项目中调用核心功能。

快速示例

python
from scenefab.services.video import MonologueMaker

### 创建解说器
maker = MonologueMaker(voice_provider="edge")

### 创建项目
project = maker.create_project(
    source_video="./input/movie.mp4",
    context="分析这段视频的精彩瞬间",
    emotion="平静",
)

### 生成解说
maker.generate_script(project)
maker.generate_voice(project)
maker.generate_captions(project, style="cinematic")

### 导出剪映草稿
draft_path = maker.export_to_jianying(project, "./output")
print(f"草稿路径: {draft_path}")

核心类

MonologueMaker

第一人称视频解说的核心类,封装了从视频分析到导出的完整流程。

python
from scenefab.services.video import MonologueMaker

maker = MonologueMaker(voice_provider="edge")

参数:

参数类型默认值说明
voice_providerstr"edge"TTS 引擎:"edge" / "openai"

主要方法:

create_project(source_video, context, emotion)

创建视频解说项目。

python
project = maker.create_project(
    source_video="./movie.mp4",
    context="解说主题或背景描述",
    emotion="平静",  # 平静/紧张/激动/幽默
)

generate_script(project, custom_script=None)

生成解说脚本。传入 custom_script 使用自定义文案,否则由 AI 生成。

python
### AI 自动生成
maker.generate_script(project)

### 使用自定义文案
maker.generate_script(project, custom_script="这是我的自定义解说词...")

generate_voice(project)

生成配音音频。

python
maker.generate_voice(project)

generate_captions(project, style="cinematic")

生成字幕文件。

python
maker.generate_captions(project, style="cinematic")

export_to_jianying(project, output_dir)

导出剪映草稿。

python
draft_path = maker.export_to_jianying(project, "./output/jianying_drafts")

set_progress_callback(callback)

设置进度回调函数。

python
def on_progress(stage, progress):
    print(f"[{stage}] {progress * 100:.0f}%")

maker.set_progress_callback(on_progress)

SceneAnalyzer

场景分析器,用于检测视频场景、提取关键帧和计算重要性评分。

python
from scenefab.services.ai import SceneAnalyzer

analyzer = SceneAnalyzer()

主要方法:

analyze(video_path)

分析视频场景,返回场景列表。

python
scenes = analyzer.analyze("./movie.mp4")

for scene in scenes:
    print(f"场景 {scene.index}: {scene.start:.1f}s - {scene.end:.1f}s")
    print(f"  类型: {scene.type.value}")
    print(f"  评分: {scene.suitability_score:.0f}/100")

analyze_with_importance(video_path)

分析场景并计算重要性评分(含叙事重要性)。

python
scenes = analyzer.analyze_with_importance("./movie.mp4")

extract_key_moments(scenes, top_k=5)

提取关键时刻(评分最高的场景)。

python
key_moments = analyzer.extract_key_moments(scenes, top_k=5)

generate_scene_context_prompt(scenes)

生成场景上下文提示(用于脚本生成)。

python
prompt = analyzer.generate_scene_context_prompt(scenes)
print(prompt)

JianyingExporter

剪映草稿导出器。

python
from scenefab.services.export import JianyingExporter, JianyingConfig

exporter = JianyingExporter(
    JianyingConfig(
        canvas_ratio="9:16",
        copy_materials=True,
    )
)

导出流程:

python
from scenefab.services.export import (
    JianyingExporter, JianyingConfig,
    Track, TrackType, Segment, TimeRange, VideoMaterial,
)

### 创建导出器
exporter = JianyingExporter(JianyingConfig(canvas_ratio="9:16"))

### 创建草稿
draft = exporter.create_draft("我的项目")

### 添加视频轨道
video_track = Track(type=TrackType.VIDEO, attribute=1)
draft.add_track(video_track)

### 添加视频素材
video_material = VideoMaterial(path="./movie.mp4")
draft.add_video(video_material)

### 添加片段
segment = Segment(
    material_id=video_material.id,
    source_timerange=TimeRange.from_seconds(0, 30),
    target_timerange=TimeRange.from_seconds(0, 30),
)
video_track.add_segment(segment)

### 导出
draft_path = exporter.export(draft, "./output")

ConfigManager

配置管理器(单例),用于加载和管理应用配置。

python
from scenefab.settings import ConfigManager, get_config, get_llm_config

### 获取配置管理器
config = ConfigManager()

### 获取应用配置
app_config = get_config()
print(f"应用名: {app_config.name}")
print(f"版本: {app_config.version}")

### 获取 LLM 配置
llm_config = get_llm_config("deepseek")
if llm_config and llm_config.is_valid():
    print(f"模型: {llm_config.model}")

数据模型

SceneInfo

场景信息,由 SceneAnalyzer.analyze() 返回。

属性类型说明
indexint场景序号
startfloat开始时间(秒)
endfloat结束时间(秒)
durationfloat时长(秒)
typeSceneType场景类型
avg_brightnessfloat平均亮度 (0-1)
motion_levelfloat运动程度 (0-1)
audio_levelfloat音频音量 (0-1)
suitability_scorefloat适用性评分 (0-100)
descriptionstr场景描述

SceneType

场景类型枚举。

说明
LANDSCAPE风景画面
B_ROLL素材画面
ACTION动作场景
TALKING_HEAD人物讲话
TRANSITION转场
TITLE标题画面
PRODUCT产品展示
UNKNOWN未知

LLMConfig

LLM 提供者配置。

属性类型说明
namestr提供者名称
enabledbool是否启用
api_keystrAPI 密钥
base_urlstrAPI 地址
modelstr模型名称
max_tokensint最大 token 数
temperaturefloat温度参数

相关文档

SceneFab 文档中心 · 面向影视/短剧第一人称解说生产