场景文件写入器

限定名称: manim.scene.scene\_file\_writer.SceneFileWriter

class SceneFileWriter(renderer, scene_name, **kwargs)[来源]

基础:object

SceneFileWriter 是实际将播放的动画写入视频文件的对象,使用 FFMPEG。 这主要是供 Manim 内部使用。除非你正在调整 Manim 的核心结构,否则你很少需要使用这个类的方法。

sections

用于分割场景

Type:

Section的列表

sections_output_dir

章节视频存储在哪里

Type:

pathlib.Path

output_name

电影名称(不带扩展名)以及视频片段名称的基础

Type:

字符串

Some useful attributes are:
“write_to_movie” (bool=False)

是否将动画写入视频文件。

“movie_file_extension” (str=”.mp4”)

输出视频的文件类型扩展名。

“partial_movie_files”

所有部分电影文件的列表。

方法

add_audio_segment

此方法从AudioSegment类型对象和适当的参数中添加一个音频段。

add_partial_movie_file

将新的部分电影文件路径添加到scene.partial_movie_files并从哈希中获取当前部分。

add_sound

此方法从声音文件中添加一个音频片段。

begin_animation

manim内部使用,用于将动画流式传输到FFMPEG以进行显示或写入文件。

clean_cache

将通过删除最旧的partial_movie_files来清理缓存。

close_movie_pipe

Manim内部使用,用于优雅地停止写入FFMPEG的输入缓冲区

combine_files

combine_to_movie

Manim内部使用,用于将组成场景的单独部分电影文件合并为该场景的单个视频文件。

combine_to_section_videos

为每个部分连接部分电影文件。

create_audio_segment

创建一个空的、无声的音频片段。

end_animation

Manim内部使用,用于优雅地停止向FFMPEG流式传输。

finish

完成写入FFMPEG缓冲区或将图像写入输出目录。

finish_last_section

如果当前部分为空,则删除它。

flush_cache_directory

删除所有缓存的电影部分文件

get_resolution_directory

直接获取包含视频文件的分辨率目录的名称。

init_audio

准备写入器以向电影添加音频。

init_output_directories

初始化输出目录。

is_already_cached

将检查是否存在名为hash_invocation的文件。

next_section

在此处创建分段切割。

open_movie_pipe

Manim内部使用,用于初始化FFMPEG并开始写入FFMPEG的输入缓冲区。

output_image

output_image_from_array

print_file_ready_message

将“文件准备就绪”消息打印到STDOUT。

save_final_image

这个名字用词不当。

write_frame

Manim 内部使用,用于将帧写入 FFMPEG 输入缓冲区。

write_opengl_frame

write_subcaption_file

写入子标题文件。

属性

force_output_as_scene_name

add_audio_segment(new_segment, time=None, gain_to_background=None)[source]

此方法从AudioSegment类型对象和合适的参数中添加一个音频片段。

Parameters:
  • new_segment (AudioSegment) – 要添加的音频片段

  • 时间 (浮点数 | ) – 应该添加声音的时间戳。

  • gain_to_background (float | None) – 从背景中获取的段的增益。

add_partial_movie_file(hash_animation)[source]

将新的部分电影文件路径添加到scene.partial_movie_files并从哈希值中获取当前部分。 此方法将从哈希值计算路径。此外,它还将新动画添加到当前部分。

Parameters:

hash_animation (str) – 动画的哈希值。

add_sound(sound_file, time=None, gain=None, **kwargs)[来源]

此方法从声音文件中添加一个音频片段。

Parameters:
  • sound_file (str) – 声音文件的路径。

  • time (float | None) – 音频应添加的时间戳。

  • gain (float | None) – 给定音频片段的增益。

  • **kwargs – 此方法使用 add_audio_segment,因此在那里使用的任何关键字参数都可以在这里引用。

begin_animation(allow_write=False, file_path=None)[source]

manim内部使用,用于将动画流传输到FFMPEG以进行显示或写入文件。

Parameters:

allow_write (bool) – 是否写入视频文件。

clean_cache()[source]

将通过删除最旧的partial_movie_files来清理缓存。

close_movie_pipe()[source]

Manim内部使用,用于优雅地停止写入FFMPEG的输入缓冲区

combine_to_movie()[source]

Manim内部使用,用于将组成场景的单独部分电影文件合并为该场景的单个视频文件。

combine_to_section_videos()[来源]

为每个部分连接部分电影文件。

Return type:

create_audio_segment()[source]

创建一个空的、无声的音频片段。

end_animation(allow_write=False)[来源]

Manim 内部使用,用于优雅地停止向 FFMPEG 流式传输。

Parameters:

allow_write (bool) – 是否写入视频文件。

finish()[来源]

完成写入FFMPEG缓冲区或将图像写入输出目录。 将部分电影文件合并为整个场景。 如果save_last_frame为True,则在默认图像目录中保存最后一帧。

finish_last_section()[来源]

如果当前部分为空,则删除它。

Return type:

flush_cache_directory()[source]

删除所有缓存的电影部分文件

get_resolution_directory()[source]

直接获取包含视频文件的分辨率目录的名称。

此方法获取直接包含视频文件的目录名称。该名称为p。例如,如果您正在渲染一个854x480像素的动画,帧率为15fps,那么直接包含视频文件的目录名称将为480p15

文件结构应该类似于:

MEDIA_DIR
    |--Tex
    |--texts
    |--videos
    |--<name_of_file_containing_scene>
        |--<height_in_pixels_of_video>p<frame_rate>
            |--<scene_name>.mp4
Returns:

目录的名称。

Return type:

str

init_audio()[source]

准备写入器以向电影添加音频。

init_output_directories(scene_name)[source]

初始化输出目录。

注释

目录是从config中读取的,例如 config['media_dir']。如果目标目录尚不存在, 它们将被创建。

is_already_cached(hash_invocation)[source]

将检查是否存在名为hash_invocation的文件。

Parameters:

hash_invocation (str) – 对应于调用 scene.playscene.wait 的哈希值。

Returns:

文件是否存在。

Return type:

bool

next_section(name, type, skip_animations)[来源]

在此处创建分段切割。

Parameters:
  • 名称 (字符串)

  • 类型 (字符串)

  • skip_animations (bool)

Return type:

open_movie_pipe(file_path=None)[来源]

Manim内部使用,用于初始化FFMPEG并开始写入FFMPEG的输入缓冲区。

print_file_ready_message(file_path)[source]

将“文件准备就绪”消息打印到STDOUT。

save_final_image(image)[来源]

这个名字是一个误称。此方法将传递给它的图像保存为默认图像目录中的图像。

Parameters:

image (ndarray) – 要保存的图像的像素数组。

write_frame(frame_or_renderer)[source]

Manim 内部使用,用于将帧写入 FFMPEG 输入缓冲区。

Parameters:

frame_or_renderer (np.ndarray | OpenGLRenderer) – 帧的像素数组。

write_subcaption_file()[source]

写入子标题文件。