TA的每日心情 | 慵懒 昨天 12:25 |
---|
签到天数: 71 天 [LV.6]常住居民II
金牌会员
- 积分
- 36562
|
本帖最后由 ssh_0224 于 2024-6-20 10:38 编辑
我打包好了硬压ass的VapourSynth脚本“ass_render.py”,以及所有用到的软件(ffmpeg、python、VapourSynth)和几个找到的ass渲染插件,使用说明和命令行在下面的链接里:
https://wwm.lanzouq.com/i6zvu228qahg
最近恰好自己也有这方面需求,所以研究了下,现在分享给各位。
下面是“ass_render.py”中的vpy代码(文件扩展名可以是“.py”也可以是“.vpy”,注意保存时,文本编码为UTF-8),已经装好软件和插件的VapourSynth老用户可以借鉴一下:
- # 将“drive:\\path\\to\\video_file”字样替换为你的视频路径
- # 将“drive:\\path\\to\\subtitle_file(.ass/.srt)”字样替换为你的ass文件路径
- # 用“\\”分隔路径,或者可以试试“/”。
- from vapoursynth import core
- #设置缓存大小
- core.max_cache_size = 1024000
- #解码原视频中的视频流,转换为原始视频流
- video_clip_handle = core.bs.VideoSource(source = "drive:\\path\\to\\video_file")
- #向原始视频流中硬压ass字幕
- # 下面这个,是我这边试过,个人认为质量最好的ass渲染器
- video_clip_handle = core.sub.TextFile(video_clip_handle,"drive:\\path\\to\\subtitle_file(.ass/.srt)")
- # 还可以试试下面这几个ass渲染器,一行代表一个ass渲染器,要用哪个就把这行最前面的“#”去掉
- # 同时不要忘记给之前用过,现在不用的行加上“#”注释掉,否则会重复渲染,多个字幕会叠在一起
- #video_clip_handle = core.vsfm.TextSubMod(video_clip_handle,"drive:\\path\\to\\subtitle_file(.ass/.srt)")
- #video_clip_handle = core.xyvsf.TextSub(video_clip_handle,"drive:\\path\\to\\subtitle_file(.ass/.srt)")
- #video_clip_handle = core.assrender.TextSub(video_clip_handle,"drive:\\path\\to\\subtitle_file(.ass/.srt)")
- video_clip_handle.set_output()
复制代码
以及预览ass渲染效果和导出硬压视频的CMD命令行:
- # 先确保“ass_render.py”里的文件路径已经替换完毕!且所有软件和插件已经安装到位!
- # 先确保“ass_render.py”里的文件路径已经替换完毕!且所有软件和插件已经安装到位!
- # 先确保“ass_render.py”里的文件路径已经替换完毕!且所有软件和插件已经安装到位!
- # 在当前ass_render.py路径下运行cmd,然后按需复制以下命令(没有“#”注释的两行),
- # 注意替换原视频的路径!!
- # 如果原视频也在同目录下,只需要替换为原视频文件名即可
- # 预览ass字幕渲染效果的命令(没有声音)
- #(全屏,按ESC退出预览,左右方向键快进,因为视频是源码流的形式,建议只快进,快退可能会出问题)
- vspipe -c y4m "ass_render.py" - | ffplay -i -
- # 导出压缩好的视频,输出的视频在当前目录下的“output.mkv”
- # 因为vspipe只能导出单独的视频流(没有声音),所以需要ffmpeg将原视频的声音也混流进去,也就是需要原视频路径
- # 如果对ffmpeg命令不熟悉的话,两个“-i”的顺序绝对不要碰!
- vspipe -c y4m "ass_render.py" - | ffmpeg -i - -i "【你原视频的完整绝对路径,或相对路径】" -map 0 -map 1:a -c:v libx264 -preset veryfast -b:v 16M -level 52 -crf 16 -g 120 -c:a copy -f matroska output.mkv
- # “-g”参数可以理解为关键帧之间间隔的帧数
- # “-b:v”参数为视频码率,16 M = 16000 kbps
- # “-preset”预设可以调慢一点,medium、slow、veryslow都行
- # “-crf”顾名思义控制crf,越低视频质量越好,不过也不能过低
复制代码
VapourSynth的字幕渲染插件是有更新网站的:https://vsdb.top/vsrepogui
进入网站后,在绿色列表顶部右侧的筛选器里单击下拉按钮,选中最底下的“Subtitles”即可筛选出所有有关字幕的插件。除了ass外,还有PGS、sup等的插件。
可以留意一下:
①Subtext(发帖时所打包版本的更新日期:2023-10-04)
https://github.com/vapoursynth/subtext/releases
②assrender(发帖时所打包版本的更新日期:2024-05-26)
https://github.com/AmusementClub/assrender/releases
上面这两个我比较看好的插件的更新。
感谢@孤雨独火 的建议,已放上插件github链接。
|
评分
-
查看全部评分
|