这是一个 Python 工具,用于生成 Unicode 字符的快闪视频。它允许用户通过多种方式选择字符,支持自定义字体,并提供灵活的视频参数设置。
- 完全支持 Unicode17.0.0;
- 支持通过 Unicode 码位范围、文本文件或字体文件生成字符序列;
- 自定义字体支持,可设置多个字体及其优先级;
- 可调节的视频参数(帧率、分辨率等);
- 进度条显示;
- 可选的背景音乐;
- 灵活的字符过滤选项。
-
确保您的系统已安装以下依赖:
Python 3.x;FFmpeg.
-
确保您的系统已安装以下Python第三方库:
pillow;tqdm;fonttools;lxml;opencv-python;msgpack;numpy.
使用命令:
pip install pillow tqdm fonttools lxml opencv-python numpy
若您在安装opencv-python或numpy时遇到错误,请尝试:
apt install opencv-python python-numpy
-
克隆此仓库:
git clone https://github.com/tile-WWDCCS-name/unicode-flash-generator cd unicode-flash-generator
生成从 U+0000 到 U+002F 的 Unicode 快闪视频,帧率为 15fps:
python uni_flash.py 15 -r 0 2F十六进制不区分大小写。
若您想为生成的视频添加音乐,一般运行:
python add_audio.py即可,这将会在当前目录下生成一个带音乐的with_audio.mp4文件。
请在视频生成完成后运行,并确保您没有重命名生成的视频,同时
UFM.mp3存在。
若您想更改音乐或输出文件路径等,请使用参数:
-vp,--video_path: 待添加音乐的视频文件的路径;-ap,--audio_path: 音乐文件的路径;-op,--output_path: 输出文件的路径。
使用一个或多个自定义字体:
python uni_flash.py 15 -r 0 20 -f a.ttf b.otf c.ttf只支持ttf或otf格式的非位图字体。
字体优先级按输入顺序降低。如果所有自定义字体都无法显示某个字符,将使用默认字体。
从文本文件中获取将要快闪的字符:
python uni_flash.py 15 -ftf 1.txt若1.txt中写着:
1234,abc,互相,0123
则表示快闪1234,abc,互相,0123十六个字符。
通过一个写着Unicode编码(不带0x的十六进制数,多个编码间用「,」分隔)的文件获取将要快闪的字符:
python uni_flash.py 15 -fcf 1.txt若1.txt中写着:
1,2,3,4,4E00,9FFE,E0020
十六进制不区分大小写。
则表示快闪U+0001、U+0002、U+0003、U+00004、U+4E00、U+9FFE、U+E0020六个字符。
使用指定字体文件中所有有字形的字符作为将要快闪的字符:
python uni_flash.py 15 -ff -f a.ttf b.otf c.ttf查看所有可用选项:
python uni_flash.py -hUnicode 快闪生成器提供了多种高级设置选项,让您能够精细控制视频的生成过程和最终效果。以下是详细的参数说明:
-
-wt,--width: 设置视频宽度(默认 1920 像素)。 例:python uni_flash.py 15 -r 0 100 -wt 1280 -
-ht,--height: 设置视频高度(默认 1080 像素)。 例:python uni_flash.py 15 -r 0 100 -ht 720 -
-bh,--bar_height: 设置顶部进度条高度(默认 36 像素)。 例:python uni_flash.py 15 -r 0 100 -bh 50 -
-mt,-mb,-ml,-mr(--margin_top,--margin_bottom,--margin_left,--margin_right): 设置视频的上、下、左、右边距(上、下边距默认 15 像素, 左、右边距默认 30 像素。边距可以为负,但不推荐)。 例:python uni_flash.py 15 -r 0 100 -mr 100 -mb 150 -ml -5 -mt 1
-
-sng,--skip_no_glyph: 跳过在所有自定义字体中都没有字形的字符。这一般用于生成某字体的快闪视频。 例:python uni_flash.py 15 -r 0 1000 -fonts custom.ttf -sng -
-sl,--skip_long: 跳过在U+323B0~U+DFFFF范围内的字符。这个范围中均为未定义字符,跳过它们可以显著减少生成(全Unicode快闪的)时间。 例:python uni_flash.py 15 -r 0 FFFFF -sl -
-su,--skip_undefined: 跳过未定义字符、非字符和代理字符等。这可以确保只显示有效的 Unicode 字符。 例:python uni_flash.py 15 -r 0 FFFFF -su -
-shu,--show_undefined: 展示在自定义字体中有字形的未定义字符、非字符、代理字符等。这个选项可以用来检查字体中的特殊字符。 例:python uni_flash.py 15 -ff -fonts custom.ttf -shu -
-sc,--show_control: 展示控制字符。 例:python uni_flash.py 15 -ff -fonts custom.ttf -sc -
-sr,--show_reserved: 展示保留字符。(字形使用其交叉参考字符的字形) 例:python uni_flash.py 15 -ff -fonts custom.ttf -sr
-
-um,--use_mlst: 使用 MonuLast (典迹末境) 字体作为最后的备选字体。 例:python uni_flash.py 15 -r 0 1000 -um -
-ul,--use_last: 使用 LastResort (最后手段) 字体作为最后的备选字体。 例:python uni_flash.py 15 -r 0 1000 -ul
-sp,--show_private: 展示在字体中有字形的私用区字符。这对于包含自定义字符的字体特别有用。 例:python uni_flash.py 15 -ff -fonts custom.ttf -sp
您可以组合多个高级设置选项来精确控制视频生成过程。例如:
python uni_flash.py 15 -r 0 FFFF -wt 1280 -ht 720 -bh 40 -fonts custom1.ttf custom2.ttf -sng -sl
这个命令将生成一个 1280x720 分辨率的视频,进度条高度为40像素,使用两个自定义字体,跳过没有在所有自定义字体中都没有字形的字符和在U+323B0~U+DFFFF范围内的字符。
某些选项可能会相互影响或冲突。例如,-su 和 -shu 是互斥的,不能同时使用。在使用这些高级选项时,请仔细考虑它们的组合效果,以获得最佳的视频生成结果。
直接使用make命令即可。