找回密码
 立即注册
查看: 3815|回复: 10

ass字幕如何合成到视频流中

4

主题

56

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
59141
QQ
Force_cc 发表于 2020-6-24 23:16:33 | 显示全部楼层 |阅读模式
本来想剪一些好康的画面,遇到了这个问题。


我用的是pr,百度出来大概都是ffmpeg生成透明底的mov,但是这个方法有个问题,当在aegisub的淡入淡出命令{\fad(0.0)}的时候,生成的字幕视频无法达到想要的效果。


命令
  1. ffmpeg -y -f lavfi -i "[email protected]:size=1920x1080,format=rgba,subtitles=subtitle.ass:alpha=1" -c:v png -t "01:52:13.735" subtitle.mov -stats
复制代码



想要的:


生成的却是


我在搜索过程中得到另一个命令,虽然可以实现我对字幕的要求,但是需要对原视频的视频流进行转码处理,生成的文件变得很小,个人感觉损失了一部分画质。
  1. ffmpeg -i video.mp4 -vf ass=subtitle.ass -y dest.mp4
复制代码


其他方法,比如说在安装了avisynth的前提下,在pr中添加插件,名为“PremiereAVSPlugin”,可以利用avs脚本实现在pr中添加一条透明背景的视频流字幕,但是在我的pr版本下,在最后编译视频的时候出现了错误“premiere cs avs importer x64 错误代码:5”,到这里我就很绝望了,虽然我知道可能是版本问题,,,
  1. avs脚本:
复制代码


还有一种方法是在aegisub中添加ass2MP4的插件,但由于原理和第一个命令是相同的,所以只能选择放弃
https://mp.weixin.qq.com/s/GQr5_YJwGq-Ls1CK6LxCVg

没想到我这种小白第一次剪好康的视频遇到个这么大麻烦,啊啊啊(╯‵□′)╯︵┻━┻

现在就很绝望,想知道大家有没有方法把ass合成到视频流中,或者有没有其他的可以导入ass的视频编辑软件0.0

1_1.png
1_2.png
2_1.png
2_2.png
醒来口干的离谱,浑身是汗,衣服紧贴在身上,脱下来都感觉费劲。看着外面漆黑的天色,人只感觉一阵恍惚。想看看时间,手机不知道飞哪了,找了半天发现被被子包裹着,发烫剩下1%电。感觉耳朵痒,刚上发现耳朵上有无线耳机,另一个不知道飞哪了,又找了半天,发现耳机被床单卷起来,藏在边边。
回复

使用道具 举报

1

主题

62

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
8108
kyriakos 发表于 2020-6-25 00:24:09 | 显示全部楼层
vapoursynth?
回复

使用道具 举报

69

主题

1438

回帖

1万

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
3161197

卓越贡献

tonyhsie 发表于 2020-6-25 03:15:54 | 显示全部楼层
既然有 avisynth

那就放個 VSFilter.dll 在 plugin 裡

avs 檔的最後加一行
TextSub("E:\op.ass")


這樣就把 ass 字幕加進這個 avs 裡了
回复

使用道具 举报

49

主题

468

回帖

2581

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
1787471

崭露头角活跃达人新人登场渐入佳境

菜姬 发表于 2020-6-25 07:36:49 | 显示全部楼层
只要想把“ass合成到视频流中”,就要“进行转码处理”
  1. ffmpeg -i video.mp4 -vf ass=subtitle.ass -y dest.mp4
复制代码

可以在这个命令上添加一些压制参数 比如-c:v libx264 -preset slower -crf 20 这种

当然你把视频和字幕混流成一个mkv也可以
回复

使用道具 举报

4

主题

56

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
59141
QQ
Force_cc  楼主| 发表于 2020-6-25 10:13:53 | 显示全部楼层

感谢推荐φ(* ̄0 ̄)
醒来口干的离谱,浑身是汗,衣服紧贴在身上,脱下来都感觉费劲。看着外面漆黑的天色,人只感觉一阵恍惚。想看看时间,手机不知道飞哪了,找了半天发现被被子包裹着,发烫剩下1%电。感觉耳朵痒,刚上发现耳朵上有无线耳机,另一个不知道飞哪了,又找了半天,发现耳机被床单卷起来,藏在边边。
回复

使用道具 举报

4

主题

56

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
59141
QQ
Force_cc  楼主| 发表于 2020-6-25 10:16:04 | 显示全部楼层
菜姬 发表于 2020-6-25 07:36
只要想把“ass合成到视频流中”,就要“进行转码处理”

可以在这个命令上添加一些压制参数 比如-c:v libx2 ...

感谢回复,我在找找ffmpeg的命令格式(●'◡'●)
醒来口干的离谱,浑身是汗,衣服紧贴在身上,脱下来都感觉费劲。看着外面漆黑的天色,人只感觉一阵恍惚。想看看时间,手机不知道飞哪了,找了半天发现被被子包裹着,发烫剩下1%电。感觉耳朵痒,刚上发现耳朵上有无线耳机,另一个不知道飞哪了,又找了半天,发现耳机被床单卷起来,藏在边边。
回复

使用道具 举报

4

主题

56

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
59141
QQ
Force_cc  楼主| 发表于 2020-6-25 10:18:08 | 显示全部楼层
tonyhsie 发表于 2020-6-25 03:15
既然有 avisynth

那就放個 VSFilter.dll 在 plugin 裡

感谢回复,我会试试这个...(* ̄0 ̄)ノ
醒来口干的离谱,浑身是汗,衣服紧贴在身上,脱下来都感觉费劲。看着外面漆黑的天色,人只感觉一阵恍惚。想看看时间,手机不知道飞哪了,找了半天发现被被子包裹着,发烫剩下1%电。感觉耳朵痒,刚上发现耳朵上有无线耳机,另一个不知道飞哪了,又找了半天,发现耳机被床单卷起来,藏在边边。
回复

使用道具 举报

4

主题

56

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
59141
QQ
Force_cc  楼主| 发表于 2020-6-25 11:05:12 | 显示全部楼层
tonyhsie 发表于 2020-6-25 03:15
既然有 avisynth

那就放個 VSFilter.dll 在 plugin 裡

感谢,原来我的pr 的错误代码5 是因为没有加载这个dll,我只是在avs脚本里添加了LoadPlugin("VSFilter.dll")
醒来口干的离谱,浑身是汗,衣服紧贴在身上,脱下来都感觉费劲。看着外面漆黑的天色,人只感觉一阵恍惚。想看看时间,手机不知道飞哪了,找了半天发现被被子包裹着,发烫剩下1%电。感觉耳朵痒,刚上发现耳朵上有无线耳机,另一个不知道飞哪了,又找了半天,发现耳机被床单卷起来,藏在边边。
回复

使用道具 举报

7

主题

38

回帖

436

VC币

至尊会员

Rank: 16Rank: 16Rank: 16Rank: 16

积分
161362
ssh_0224 发表于 2024-6-19 21:50:00 | 显示全部楼层
本帖最后由 ssh_0224 于 2025-3-30 18:22 编辑
Force_cc 发表于 2020-6-25 10:13
感谢推荐φ(* ̄0 ̄)

我打包好了硬压ass的VapourSynth脚本“ass_render.py”,以及所有用到的软件(ffmpeg、python、VapourSynth)和几个找到的ass渲染插件,使用说明和命令行在下面的链接里:
https://www.123684.com/s/BSsrTd-OjzD3(主链接)

https://www.123912.com/s/BSsrTd-OjzD3(备用链接)





最近恰好自己也有这方面需求,所以研究了下,现在分享给各位。


下面是ass_render.py”中的vpy代码(文件扩展名可以是“.py”也可以是“.vpy”,注意保存时,文本编码为UTF-8),已经装好软件和插件的VapourSynth老用户可以借鉴一下:
  1. # 将“drive:\\path\\to\\video_file”字样替换为你的视频路径
  2. # 将“drive:\\path\\to\\subtitle_file(.ass/.srt)”字样替换为你的ass文件路径
  3. # 用“\\”分隔路径,或者可以试试“/”。

  4. from vapoursynth import core

  5. #设置缓存大小(单位:MiB),尽量大
  6. core.max_cache_size = 8192

  7. #解码原视频中的视频流,转换为原始视频流
  8. video_clip_handle = core.bs.VideoSource(source = "drive:\\path\\to\\video_file")

  9. #向原始视频流中硬压ass字幕
  10. # 下面这个,是我这边试过,个人认为质量最好的ass渲染器
  11. video_clip_handle = core.sub.TextFile(video_clip_handle,"drive:\\path\\to\\subtitle_file(.ass/.srt)")

  12. # 还可以试试下面这几个ass渲染器,一行代表一个ass渲染器,要用哪个就把这行最前面的“#”去掉
  13. # 同时不要忘记给之前用过,现在不用的行加上“#”注释掉,否则会重复渲染,多个字幕会叠在一起
  14. #video_clip_handle = core.vsfm.TextSubMod(video_clip_handle,"drive:\\path\\to\\subtitle_file(.ass/.srt)")
  15. #video_clip_handle = core.xyvsf.TextSub(video_clip_handle,"drive:\\path\\to\\subtitle_file(.ass/.srt)")
  16. #video_clip_handle = core.assrender.TextSub(video_clip_handle,"drive:\\path\\to\\subtitle_file(.ass/.srt)")

  17. video_clip_handle.set_output()
复制代码

以及预览ass渲染效果和导出硬压视频的CMD命令行:
  1. # 先确保“ass_render.py”里的文件路径已经替换完毕!且所有软件和插件已经安装到位!
  2. # 先确保“ass_render.py”里的文件路径已经替换完毕!且所有软件和插件已经安装到位!
  3. # 先确保“ass_render.py”里的文件路径已经替换完毕!且所有软件和插件已经安装到位!


  4. # 在当前ass_render.py路径下运行cmd,然后按需复制以下命令(没有“#”注释的两行),
  5. # 注意替换原视频的路径!!
  6. # 如果原视频也在同目录下,只需要替换为原视频文件名即可

  7. # 预览ass字幕渲染效果的命令(没有声音)
  8. #(全屏,按ESC退出预览,左右方向键快进,因为视频是源码流的形式,建议只快进,快退可能会出问题)
  9. vspipe -c y4m "ass_render.py" - | ffplay -i -


  10. # 导出压缩好的视频,输出的视频在当前目录下的“output.mkv”
  11. # 因为vspipe只能导出单独的视频流(没有声音),所以需要ffmpeg将原视频的声音也混流进去,也就是需要原视频路径
  12. # 如果对ffmpeg命令不熟悉的话,两个“-i”的顺序绝对不要碰!
  13. 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

  14. # “-g”参数可以理解为关键帧之间间隔的帧数
  15. # “-b:v”参数为视频码率,16 M = 16000 kbps
  16. # “-preset”预设可以调慢一点,medium、slow、veryslow都行
  17. # “-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链接。








点评

https://github.com/vapoursynth/subtext/releases  发表于 2024-6-19 23:31
直接去人仓库拉就完事了 https://github.com/AmusementClub/assrender/releases  发表于 2024-6-19 23:31

评分

参与人数 1活跃度 +6400 收起 理由
Force_cc + 6400 很给力!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表