SceneFileWriter¶
限定名称: manim.scene.scene\_file\_writer.SceneFileWriter
- class SceneFileWriter(renderer, scene_name, **kwargs)[来源]¶
基类:
object
SceneFileWriter 是实际将播放的动画写入视频文件(使用 FFMPEG)的对象。这主要供 Manim 内部使用。您很少(如果有的话)需要使用此类的各种方法,除非您正在修改 Manim 的核心实现。
- 参数:
renderer (CairoRenderer | OpenGLRenderer)
scene_name (StrPath)
kwargs (Any)
- sections_output_dir¶
各分段视频的存储位置
- 类型:
pathlib.Path
- output_name¶
不带扩展名的电影名称,也是分段视频名称的基础
- 类型:
str
- 一些有用的属性包括
- “write_to_movie” (bool=False)
是否将动画写入视频文件。
- “movie_file_extension” (str=”.mp4”)
输出视频的文件类型扩展名。
- “partial_movie_files”
所有部分电影文件的列表。
方法
此方法从 AudioSegment 类型对象和合适的参数添加一个音频片段。
根据哈希值,将新的部分电影文件路径添加到 scene.partial_movie_files 和当前分段。
此方法从声音文件添加一个音频片段。
Manim 内部使用此方法将动画流式传输到 FFMPEG 以进行显示或写入文件。
将通过删除最旧的部分电影文件来清理缓存。
关闭当前打开的视频容器。
combine_files
Manim 内部使用此方法将构成一个场景的单独部分电影文件组合成该场景的单个视频文件。
连接每个分段的部分电影文件。
创建一个空的、静音的音频片段。
仅供内部使用:获取给定帧(
np.ndarray
格式)并将其写入流。Manim 内部使用此方法优雅地停止向 FFMPEG 流式传输。
完成向 FFMPEG 缓冲区写入或将图像写入输出目录。将部分电影文件组合成完整场景。如果 save_last_frame 为 True,则将最后一帧保存到默认图像目录。
如果当前分段为空,则删除。
删除所有缓存的部分电影文件
获取直接包含视频文件的分辨率目录的名称。
准备写入器以向电影添加音频。
初始化输出目录。
将检查是否存在以 hash_invocation 命名的文件。
仅供内部使用:阻塞直到队列中出现新帧。
在此处创建分段切点。
打开一个包含视频流的容器。
output_image
将“文件就绪”消息打印到标准输出。
此名称不准确。
Manim 内部使用此方法将帧写入 FFMPEG 输入缓冲区。
写入字幕文件。
属性
force_output_as_scene_name
- add_audio_segment(new_segment, time=None, gain_to_background=None)[来源]¶
此方法从 AudioSegment 类型对象和合适的参数添加一个音频片段。
- 参数:
new_segment (AudioSegment) – 要添加的音频片段
time (float | None) – 应该添加声音的时间戳。
gain_to_background (float | None) – 片段相对于背景的增益。
- add_partial_movie_file(hash_animation)[来源]¶
根据哈希值,将新的部分电影文件路径添加到 scene.partial_movie_files 和当前分段。此方法将根据哈希值计算路径。此外,它还将新动画添加到当前分段。
- 参数:
hash_animation (str) – 动画的哈希值。
- add_sound(sound_file, time=None, gain=None, **kwargs)[来源]¶
此方法从声音文件添加一个音频片段。
- 参数:
sound_file (str) – 声音文件的路径。
time (float | None) – 应该添加音频的时间戳。
gain (float | None) – 给定音频片段的增益。
**kwargs – 此方法使用 add_audio_segment,因此此处可以引用该方法中使用的任何关键字参数。
- begin_animation(allow_write=False, file_path=None)[来源]¶
Manim 内部使用此方法将动画流式传输到 FFMPEG 以进行显示或写入文件。
- 参数:
allow_write (bool) – 是否写入视频文件。
file_path (StrPath | None)
- 返回类型:
无
- encode_and_write_frame(frame, num_frames)[来源]¶
仅供内部使用:获取给定帧(
np.ndarray
格式)并将其写入流。- 参数:
frame (PixelArray)
num_frames (int)
- 返回类型:
无
- end_animation(allow_write=False)[来源]¶
Manim 内部使用此方法优雅地停止向 FFMPEG 流式传输。
- 参数:
allow_write (bool) – 是否写入视频文件。
- 返回类型:
无
- finish()[来源]¶
完成向 FFMPEG 缓冲区写入或将图像写入输出目录。将部分电影文件组合成完整场景。如果 save_last_frame 为 True,则将最后一帧保存到默认图像目录。
- 返回类型:
无
- get_resolution_directory()[来源]¶
获取直接包含视频文件的分辨率目录的名称。
此方法获取直接包含视频文件的目录名称。此名称为
<height_in_pixels_of_video>p<frame_rate>
。例如,如果您以 15fps 渲染 854x480 像素的动画,则直接包含视频文件的目录名称将是480p15
。目录的名称。
MEDIA_DIR |--Tex |--texts |--videos |--<name_of_file_containing_scene> |--<height_in_pixels_of_video>p<frame_rate> |--<scene_name>.mp4
- 返回:
文件结构应如下所示:
- 返回类型:
str
- init_output_directories(scene_name)[来源]¶
初始化输出目录。
注意
目录从
config
中读取,例如config['media_dir']
。如果目标目录尚不存在,则会创建它们。- 参数:
scene_name (StrPath)
- 返回类型:
无
- is_already_cached(hash_invocation)[来源]¶
将检查是否存在以 hash_invocation 命名的文件。
- 参数:
hash_invocation (str) – 对应于 scene.play 或 scene.wait 调用的哈希值。
- 返回:
文件是否存在。
- 返回类型:
bool
- next_section(name, type_, skip_animations)[来源]¶
在此处创建分段切点。
- 参数:
name (str)
type_ (str)
skip_animations (bool)
- 返回类型:
无
- open_partial_movie_stream(file_path=None)[来源]¶
打开一个包含视频流的容器。
Manim 内部使用此方法初始化包含部分电影文件视频流的容器。
- 返回类型:
无