找回密码
 立即注册
查看: 1198|回复: 8

Aeguisub有没有办法让一些字幕持续时间时间结束在帧与帧变换的时间点?

  • TA的每日心情
    无聊
    昨天 20:55
  • 签到天数: 317 天

    [LV.8]以坛为家I

    26

    主题

    75

    回帖

    1322

    VC币

    星辰大海

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

    积分
    309612

    崭露头角新人登场

    月夜残星 发表于 2023-12-28 14:20:13 | 显示全部楼层 |阅读模式
    如题,很多字幕调轴的时候都会出现,一条字幕时间结束后,就过了一两帧,画面就切换了,明明在画面切换的时候结束那一行字幕就非常完美(不管是时间还是观感上),但是就是差了这一两帧,就让画面看起来闪来闪去的,影响观感。有没有办法批量解决这个问题呢?还是说只能一帧一帧一点一点慢慢调?
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 20:55
  • 签到天数: 317 天

    [LV.8]以坛为家I

    26

    主题

    75

    回帖

    1322

    VC币

    星辰大海

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

    积分
    309612

    崭露头角新人登场

    月夜残星  楼主| 发表于 2023-12-28 15:21:50 | 显示全部楼层
    难道说和“紧贴镜头”这个选项有关?
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-4 00:11
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    45

    主题

    518

    回帖

    126

    VC币

    至尊会员

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

    积分
    164586
    dtlnor 发表于 2023-12-28 15:33:04 | 显示全部楼层
    本帖最后由 dtlnor 于 2023-12-28 15:50 编辑

    你可以
    1. 用某些脚本生成关键帧文件。这个文件实际上应该记录了场景切换的帧号。然后用aegisub加载
    2. 或者,你可以用x265等编码器压制一遍,设置非固定间隔的关键帧。这样关键帧就会在场景切换的时候生成了

    最后,使用紧贴镜头(实际上是紧贴关键帧)。这个在时间后续处理器可以有更详细的设定(按帧数计时的时候,或者以当前帧分割行的时候,都默认会有200ms提前、延后的)
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 20:55
  • 签到天数: 317 天

    [LV.8]以坛为家I

    26

    主题

    75

    回帖

    1322

    VC币

    星辰大海

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

    积分
    309612

    崭露头角新人登场

    月夜残星  楼主| 发表于 2023-12-28 20:55:40 | 显示全部楼层
    本帖最后由 月夜残星 于 2023-12-28 21:23 编辑
    dtlnor 发表于 2023-12-28 15:33
    你可以
    1. 用某些脚本生成关键帧文件。这个文件实际上应该记录了场景切换的帧号。然后用aegisub加载
    2. 或 ...

    感谢,其实时间后续处理器的紧贴关键帧有注意到过,但是我看有很多视频的某些场景转换并没有插入关键帧,到头来还是要一点一点检查,所以我就一直没有尝试
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2023-3-18 18:33
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    23

    主题

    309

    回帖

    1056

    VC币

    星辰大海

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

    积分
    406057
    Lambholl 发表于 2023-12-28 20:55:55 | 显示全部楼层
    本帖最后由 Lambholl 于 2023-12-28 21:21 编辑

    就我们 LPSub 的制作而言,在某个时间点注意到了这个问题之后,就开始将对话轴的起止位置贴紧关键帧位置。
    由于我们从一开始,打轴的时候便贴紧对话,在全部对话轴完成之后,使用 Aegisub 的「时间后续处理器」进行延长。
    这是两次延长的操作:

    如此处理完,就没有闪轴了,但是就会有如楼主所说的问题。
    因此我们开始选择用 x264/x265 重新压一遍片源,以便在场景切换时插入关键帧,其中发现 x265 对于这个需求来说更加准确(而且 HEVC 版本是要在制作完成之后发布的,因此我们的流程变成了在出稿之前先压一份 HEVC 版本,顺便可以打轴用)
    而延长的操作就变成了这样:

    这里需要说明一下,为什么 250ms 的延长改成了 150ms 呢?是为了防止和贴紧关键帧冲突。当然其实要用 250 也是可以的,只是打轴的时候多加注意一些就行了,这一点需要理解这几个数字的工作逻辑后灵活变化了。
    我知道这套数字肯定不是最优解,而且也知道优化空间可能在哪,不过贸然改动可能会让效果变得更差,而且改动这里的数字必然要配合打轴习惯的改变,因此暂时就不改了,各位可以按实际情况修改。

    处理前:

    这里需要稍微注意一点,就是为了吸附关键帧,倘若说话结束的频谱正好在关键帧上,或者像下图一样,稍稍超出了关键帧一点,这时我们选择将轴的结束时间稍微提前一点,打在关键帧以内的位置,以便后处理的吸附。


    处理后:


    效果还是挺不错的。

    但是受限于 x265 压制版本需要发布,keyint 毕竟是不能太大,再加上编码器的 IDR 帧是按照开销计算的,并不是真正的画面变换位置,因此也不是很准确。
    再后来,我拿到了 MIR 佬的一份脚本,用来计算画面动态,计算出场景变换的帧编号,发现这个结果比起 x264/x265 等编码器来说,生成的关键帧位置对于打轴来说最准确。


    (大佬应该不介意我发出来吧)

    脚本是基于 VapourSynth 的,把 bat 里面的 vspipe 位置替换掉即可。生成完成的是一个 txt 文件,可以用 Aegisub 视频=>打开关键帧。

    对于我们组来说,因为我们压制所使用的思路是单脚本输出多个视频,因此使用这个脚本生成关键帧文件,可以将 HEVC 版本的压制延后到轴完后和 AVC 两个版本一起压制,省去一次视频预处理的算力(毕竟我们的 WebRip 脚本里面常年都有 bm3d,省去一次预处理还是能省下不少电的)

    如果想参考一下,之前我有录过打轴的视频传B站:BV19H4y1y7Aw,不过是在没用上生成脚本的时候,也不是自家的稿子



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 20:55
  • 签到天数: 317 天

    [LV.8]以坛为家I

    26

    主题

    75

    回帖

    1322

    VC币

    星辰大海

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

    积分
    309612

    崭露头角新人登场

    月夜残星  楼主| 发表于 2023-12-28 21:38:03 | 显示全部楼层
    Lambholl 发表于 2023-12-28 20:55
    就我们 LPSub 的制作而言,在某个时间点注意到了这个问题之后,就开始将对话轴的起止位置贴紧关键帧位置。
    ...

    感谢,但是我发现,有的时候某些没有场景转换并没有插入关键帧,这时设置紧贴的话,会直接把没有关键帧的地方时间延长50毫秒,本来手动调好了,结果又得手动调回来,这有办法解决吗?
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2023-3-18 18:33
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    23

    主题

    309

    回帖

    1056

    VC币

    星辰大海

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

    积分
    406057
    Lambholl 发表于 2023-12-28 23:55:13 | 显示全部楼层
    月夜残星 发表于 2023-12-28 21:38
    感谢,但是我发现,有的时候某些没有场景转换并没有插入关键帧,这时设置紧贴的话,会直接把没有关键帧的 ...

    那没办法,只能手动检查了,还有就是让关键帧插的尽量准确一些。


    这个脚本我看了已经算是效果比较好了,如果还要效果更好的话,可以考虑用AI模型来识别,就是还没搓出个完整的脚本(也不知道为啥,get_frame() 一直给我报 vapoursynth.Error: all input arrays must have the same shape
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-12-16 08:49
  • 签到天数: 2 天

    [LV.1]初来乍到

    3

    主题

    23

    回帖

    0

    VC币

    注册会员

    Rank: 2

    积分
    1744
    foodie 发表于 2024-1-16 09:20:23 | 显示全部楼层
    实际上使用时间后续处理器进行时间轴紧贴是并不严谨的,在很多连续对话中,比如有时候两句之间的断点在关键帧的附近,但并不能对齐到关键帧上的这种情况,此时再使用时间后续处理器就会造成错轴或者重叠,正确做法其实在打轴的时候就要考虑对帧的问题了


    截图中这一条紫色的线就是视频中附带的关键帧信息,如果你是使用鼠标打轴,只需要按住shift,再在紫色线附近点击左键或右键,就可以将此条轴的进入或结束时间点对齐到关键帧上,可能会有那么一丝不重合,但是实际上是没有问题的

    关于视频中附带的关键帧信息这一点,最开始的源视频并不一定带有这种信息,或者即使带了也并不是所有关键帧都能识别到,此时需要提前对所需打轴的视频源进行一定的压制处理,具体参数可以参照其他帖子,并且这件事情最好是由最后负责的压制人员来做,因为有些视频并不是那么完美,可能会在前面带有1到2帧的空白帧,播放器不会识别但aegisub内会识别,造成误差,并且不同的压制参数对于最后的成品也会有一定影响

    最后再说一句,可以在windows设置里把shift切换中英文的选项去掉,这样打轴时就不会因为不停使用shift导致一直切换中英文,影响打轴效率
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2023-3-18 18:33
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    23

    主题

    309

    回帖

    1056

    VC币

    星辰大海

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

    积分
    406057
    Lambholl 发表于 2024-1-16 11:33:27 | 显示全部楼层
    foodie 发表于 2024-1-16 09:20
    实际上使用时间后续处理器进行时间轴紧贴是并不严谨的,在很多连续对话中,比如有时候两句之间的断点在关键 ...

    按照我们的习惯,后处理的结果是严谨的,如果出现不贴合,那么多半是那几个数字没有调教好。


    不知道你有没有看到我所做的一些说明,即片源自带为固定间距关键帧,而x264/x265考虑的是码率开销,并不一定在转场处插入IDR帧,因此最优方案是使用脚本生成关键帧文件
    回复

    使用道具 举报

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

    本版积分规则

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