如何更改 VLC 中的字幕偏移步长(从其默认的 50 毫秒)?

如何更改 VLC 中的字幕偏移步长(从其默认的 50 毫秒)?

VLC 播放器(Windows)中默认的字幕偏移步长为 50ms(热键为g/ h)。我更希望它更大(例如 500ms 或 1s)。

有没有办法配置该值(无需重新编译)(首选项或注册表)?

编辑:

实际上,我找到了处理这个偏移的代码(是的,它是硬编码的):

模块/控制/热键.c

        else if( i_action == ACTIONID_SUBDELAY_DOWN )
        {
            int64_t i_delay = var_GetTime( p_input, "spu-delay" );
            i_delay -= 50000;    /* 50 ms */
            var_SetTime( p_input, "spu-delay", i_delay );
            ClearChannels( p_intf, p_vout );
            DisplayMessage( p_vout, SPU_DEFAULT_CHANNEL,
                            _( "Subtitle delay %i ms" ),
                            (int)(i_delay/1000) );
        }
        else if( i_action == ACTIONID_SUBDELAY_UP )
        {
            int64_t i_delay = var_GetTime( p_input, "spu-delay" );
            i_delay += 50000;    /* 50 ms */
            var_SetTime( p_input, "spu-delay", i_delay );
            ClearChannels( p_intf, p_vout );
            DisplayMessage( p_vout, SPU_DEFAULT_CHANNEL,
                            _( "Subtitle delay %i ms" ),
                             (int)(i_delay/1000) );
        }

我现在正尝试在可执行文件中定位这段代码,但我不知道该怎么做。有什么帮助吗?

我也考虑了另一个选项,即重新编译所有内容,但我最终放弃了这个(在 Windows 上)......

答案1

如果您单击 G 或 H 几次,它会增加。按下按钮 10 次,那么您将有 500 毫秒。检查按住按键是否会产生影响。或者您是否可以在键盘快捷键中增加该值。

硬核方式:你可以下载十六进制工作坊、TSearch 或任何其他十六进制编辑器可以附加到进程中,找到每 50ms 增加的值并尝试更改它。找到正确的位置后,还应该有一个指向更改该值(50ms)的地址的指针。在内存中找到该地址后,您可以轻松地在 EXE 文件中永久更改它。听起来很简单:)

相关内容