AIStacker
媒体新上线

概览

字幕时间轴偏移与帧率转换工具

对 SRT、ASS、WebVTT 字幕进行毫秒级偏移与帧率换算(23.976 ↔ 25fps 等),用于不同视频源之间的字幕重新同步。

分类 hub

媒体

问题

5

FAQ

3

字幕时间轴偏移工具

对 SRT、ASS 或 WebVTT 字幕进行时间轴偏移和拉伸。支持毫秒偏移与帧率换算,可将字幕重新同步到不同帧率的视频。

检测到的格式: srt · 缩放系数: 1.000000
转换结果将显示于此

可以解决的问题

My subtitles start on time but drift later and later — what's happening?

That is the signature of an FPS mismatch. A subtitle authored for 23.976 fps played against a 25 fps re-encode will get later by about 4 ms per second, which compounds visibly after a few minutes. Use the FPS conversion (23.976 → 25 preset) to rescale all timestamps. Do not use offset alone — offset will only fix the first cue.

Subtitles are exactly 1 second late through the whole video — how do I fix it?

A constant delay means a pure offset problem, not an FPS issue. Set Offset (ms) to -1000 and leave From/To FPS blank. Every cue moves earlier by one second, no rescaling. Negative values move earlier, positive values move later.

I have Blu-ray subtitles but a web 25 fps source — how do I match them?

Blu-ray is usually 23.976 fps. The web 25 fps source has been PAL-sped up. Apply the 23.976 → 25 FPS preset, then check the first dialogue line and add a small offset if it is a few hundred ms off. The combined pass handles both the speed change and the boot-up delay.

How do I convert NTSC 29.97 fps subtitles back to 23.976 fps film?

If you ripped a NTSC DVD and now have a 23.976 fps film master, apply From FPS 29.97 → To FPS 23.976 (preset available). Every timecode is multiplied by 0.7992, undoing the 2:3 pulldown timing the DVD added.

Does shifting break my ASS styling or my SRT cue numbers?

No. Only the time fields in each cue are rewritten. ASS styles, override tags, layer numbers, and SRT cue indices pass through untouched. The output stays in the same format as the input.

典型使用流程

ASS to SRT Subtitle Converter字幕时间轴偏移与帧率转换工具

该工作流相关指南

Supporting guides that connect this tool to the broader category workflow.

打开分类 hub

是什么

字幕时间轴偏移与帧率转换工具 是什么

Subtitles drift for two reasons: the timecodes start at the wrong moment (offset), or they were authored against a different frame rate than your video file (FPS mismatch). One slips by a constant amount; the other drifts further as the video plays. This tool fixes both at once.

The offset shifts every cue by the same millisecond delta. The FPS converter multiplies every timestamp by a from/to ratio — so a 23.976 fps subtitle file targeted at a 25 fps source gets every timecode multiplied by 0.95904. Apply both together when you need to re-sync after a frame rate conversion, then download in the same format the file came in.

如何使用

如何使用字幕时间轴偏移与帧率转换工具

1. Paste or upload your .srt, .ass, or .vtt file — the format is detected automatically.

2. Enter a millisecond offset (negative to make subs appear earlier).

3. If the video frame rate differs from the subtitle source, set From FPS / To FPS or pick a preset (23.976 → 25 etc.).

4. Copy or download the corrected file.

使用示例

使用示例

Offset −1500ms applied to:
00:00:05,000 --> 00:00:07,000 Hello

Results in:
00:00:03,500 --> 00:00:05,500 Hello

FPS conversion 23.976 → 25 multiplies every timestamp by 0.95904, so a 10-minute file ends ~24 seconds earlier.

常见使用场景

常见使用场景

1. Re-sync subtitles when the audio starts a few seconds late on a particular release.

2. Match a fansub authored against a 23.976 fps source to a 25 fps PAL transfer.

3. Convert NTSC-to-film telecine subtitles (29.97 → 23.976) when ripping a Blu-ray.

4. Combine offset and FPS shift in one pass to avoid double-rounding error.

常见问题

常见问题

How does the FPS conversion math work?v
Every timestamp is multiplied by (From FPS / To FPS). A 23.976 → 25 conversion multiplies by 0.95904, compressing the timeline. A 25 → 23.976 conversion multiplies by 1.04271, stretching it.
Can I apply offset and FPS conversion at the same time?v
Yes — they are applied in one pass. The output time is (input_ms × scale) + offset_ms. This avoids the compounding rounding error you would get from running two separate tools back-to-back.
What about negative timestamps after offsetting?v
Any cue that would land before 0 is clamped to 00:00:00. If you need cues before the original start, shift forward instead of backward, or pad the video itself.