从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 GlazedList单个列筛选   java Android按顺序从Gallery接收图像   无法解析java“”如何解决此错误?   使用所有源代码生成maven项目的jar的java   java从Android应用程序将数据插入MySQL数据库。数据库中未反映的更改   java如何使此方法可重用?   java@JsonInclude(Include.NON_NULL)不会从内部POJO中删除NULL字段   xml如何解压java。尼奥。使用JAXB的路径?   java Maven未使用服务器的servletapi构建   java我觉得在实体中添加带有@Transient注释的字段非常容易出错。我说得对吗?   java需要什么样的线程启动方法?为什么没有唯一的运行方法?   Apache CXF Maven发行版和CXF发行版之间的java差异   java如何处理播放数据库连接异常   java在Gridview上绘制文本   使用LWJGL时出现java安全错误   java字符数组列表   java无法从RTSP服务器获得任何答案   java如何将对象从servlet传递到JSP?   java如何通过编程设置imageView的高度?