从ASS字幕生成Rythmo乐队

ass2rythmo的Python项目详细描述


ass2rythmo是一个转换器,它在ass(Advanced SubStation)格式的字幕外生成rythmo带。

Rythmo乐队用于为配音视频时的语音演员提供同步脚本。

文本以恒定速度滚动,但宽度可变,以适应需要录制的语音流,以便与屏幕上的嘴唇同步。

安装

ass2rythmo可以从pip安装:

pip install ass2rythmo

或者,在git拉取之后,ass2rythmo可以直接从源代码运行:

git clone https://gitlab.com/zeograd/ass2rythmo.git
cd ass2rythmo && python setup.py install

用法

首先,生成一个定时ASS字幕文件,其中只包括演员必须说的部分。

然后,生成Rythmo波段作为透明PNG文件的集合:

ass2rythmo my_video_script.ass -R 30

如果有ffmpeg可用,也可以作为透明电影:

ass2rythmo my_video_script.ass -R 30 -r rythmo_band.mov

别忘了指定视频的帧速率,png将被叠加在视频上,以确保正确的同步。

默认情况下,这将在当前目录00000.png、00001.png等中生成PNG文件… 您可以通过向-r参数(包括百分号)提供模式来更改生成png文件的目录 (/tmp/%05d.png例如,用于在/tmp目录中生成png并将帧号填充到5位。)

如果指定的模式没有任何百分号,则它将被视为单个电影文件输出文件名。结果将使用ffv1编解码器进行编码,建议使用mov容器,但安装的ffmpeg可能会接受其他扩展。

然后你可以用你最喜欢的视频编辑器在你的电影上烧录PNG序列。您还可以使用ffmpeg执行快速覆盖,命令类似于:

ffmpeg -i input.mp4 -framerate 30 -i %05d.png -filter_complex "overlay=:main_h-overlay_h" output.mp4

要对透明的移动节奏带执行相同的操作,请使用类似于:

ffmpeg -i input.mp4 -i rythmo_band.mov -filter_complex "overlay=:main_h-overlay_h" output.mp4

脚本创建

使用任何ASS兼容的工具,比如Aegisub

您可以使用常规的{}来包含注释,或者使用[]来包含不会出现在Rythmo波段中的内容(但如果您将ASS文件刻录到视频上(如用于演员方向提示),则仍然存在)。

选择了捆绑字体,以便您可以包含Unicode字符,以显示您想要的语调变化类型(使用Unicode箭头)。

您可以使用卡拉OK标签微调一个句子的计时。你不必为了引入停顿或改变句子两部分之间的节奏而拆分脚本。 在这种情况下,您可以预览使用/kf而不是默认的/k标记呈现句子每个部分的速度(这两个标记都将被ass2rythmo/ko接受)

显然,要小心地将你的字幕与屏幕上的嘴唇同步,以确保根据节奏带录制的视频与图像同步。

cli

cliass2rythmo包含合理的默认值。 使用-r选项设置正确的帧速率时应小心。

您可能需要更改生成的宽度,以便在-w中完全使用可用的房间,并在-d中更改滚动速度。

其他的选择很少有用,并记录在下面。

usage: ass2rythmo [-h] [-d] [-v] [-W TARGET_WIDTH] [-H TARGET_HEIGHT]
[-R TARGET_FPS] [-F FONT_FILENAME] [-D SCROLL_DURATION] [-r RESULT_FILENAME_FORMAT] [-s SYNC_POINT_RATIO] ass_filename

GPL v3+ 2018 Olivier Jolly

positional arguments:
ass_filename input file as Ass format
optional arguments:
-h, --helpshow this help message and exit
-d, --debugprint debugging info [default: False]
-v, --versionshow program’s version number and exit
-W TARGET_WIDTH, --target_width TARGET_WIDTH
Width of the generated png files [default: 1920]
-H TARGET_HEIGHT, --target_height TARGET_HEIGHT
Height of the generated png files. Note that it’s not meant to support low heights at this time [default: 380]
-R TARGET_FPS, --target_fps TARGET_FPS
Frame per second to generate. Make sure it matches your subbed video ! [default: 30]
-F FONT_FILENAME, --font_face FONT_FILENAME
Filename of the font used to generate text [default: [install path]/DejaVuSans.ttf]
-D SCROLL_DURATION, --scroll_duration SCROLL_DURATION
Duration of width traversal in ms [default: 4000]
-r RESULT_FILENAME_FORMAT, --result_filename_format RESULT_FILENAME_FORMAT
Filename template for generated files. May include directory part but won’t create any. Including % in the format will generate a list of png files else will generate a transparent movie with the help of ffmpeg [default: %05d.png]
-s SYNC_POINT_RATIO, --sync_point_ratio SYNC_POINT_RATIO
Position of the sync point on screen, 0 is leftmost, 1 is rightmost [default: 0.15]

Convert ASS subtitles to rythmo band as list of transparent png or single transparent movie

限制

这个项目很年轻,没有经过广泛的测试。值得注意的是,到目前为止,它只在linux下运行,但没有使用操作系统专用性。

最大值为2行。因此,有3个演员同时发言,将有一些重叠的文字在对方之上。

某些人工制品可能出现在某些字符的短文本块的最左边(例如一个“i”在一个文本块的开头发音很快。

许可证

ass2rythmo代码本身是在gpl v3+下授权的,捆绑的dejavu字体是在它自己的免费许可下授权的(cf license dejavu.txt)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java IntelliJ找不到依赖项选项卡   java向字符串数组string[]添加元素并在Junit中测试结果   如何在eclipse中获取活动java项目的名称   如何使用java在mysql中插入时间   java ArrayList更新了插入一行,但Jtable仍然没有刷新   如何在JavaSwing中命名坐标(点)   java Matcher/模式不打印   java错误地设置了arraylist   使用UsernamePasswordCredential提供程序的java列表Azure AD   java在HTTP请求中设置UTC时间   未加载事件:jquery完整日历Java集成   java Maven插件依赖项无法从内部repo解析依赖项   Maven更新重置Java版本   java如何向中添加图片。带有Apache POI XWPF的docx,但不指定其大小   Java最大函数递归