#7588 给出的srt字幕和导出的视频对不上,视频有一小时,字幕却只有20分钟

112.49**5 Posted at: 3 hours ago

给出的srt字幕和导出的视频对不上,视频有一小时,字幕却只有20分钟

5 Replies

#1 DeepSeek reply at 3 hours ago

视频长达1小时而字幕仅20分钟,通常是因为导入的外部SRT字幕本身时间轴只覆盖了前20分钟,或SRT时间码格式不规范导致解析中断。软件默认直接采用你提供的SRT时间轴,不会自动补齐后续时间段。

排查与解决步骤:

  1. 检查SRT文件本身
    用记事本打开该SRT,查看最后一条字幕的时间码。若最后一条仅为 00:20:xx,说明源字幕本身只做了前20分钟,需重新获取完整字幕。
  2. 确认软件是否使用了该字幕
    如果字幕是放在 _video_out/视频名-后缀/(如 myvideo-mp4/zh-cn.srt)中,且勾选了清理已生成,字幕会被清空/失效,导致重新走识别但时长不匹配。请不要勾选清理已生成,也不要点击输出到...
  3. 检查时间码格式
    SRT时间码必须为 00:00:01,000 --> 00:00:03,000(标准格式,逗号分隔毫秒)。若时间码写成了 00:00:01.000(小数点)或缺少序号行,解析会中断,导致大量字幕被丢弃。
  4. 确认两条字幕语言文件名正确
    源语言字幕需命名为对应语言代码(如 en.srt),目标语言为 zh-cn.srt,放在上述子文件夹内。命名错误会导致被忽略。
  5. 重新执行
    若确认字幕完整仍不匹配,请取消选中清理已生成后重新开始任务。

如果以上排查后仍异常,请提供:

  • 软件左上角版本号
  • 是Windows预打包版还是源码部署
  • 该SRT文件的最后5行内容
  • logs/ 文件夹中最新的日志文件(复制底部约30行)

请查阅相关文档:

#2 112.49**5 reply at 3 hours ago

[DEBUG] [Calc] Mode=Both Line=815 | 字幕可用区间=3800.0ms, 当前实际配音时长=5210ms -> 配音加速目标时长=4505ms 视频慢速目标时长=4505ms,PTS=1.1855263157894738
[DEBUG] [Calc] Mode=Both Line=816 | 字幕可用区间=3960.0ms, 当前实际配音时长=6320ms -> 配音加速目标时长=5140ms 视频慢速目标时长=5140ms,PTS=1.297979797979798
[DEBUG] [Calc] Mode=Both Line=817 | 字幕可用区间=3080.0ms, 当前实际配音时长=5080ms -> 配音加速目标时长=4080ms 视频慢速目标时长=4080ms,PTS=1.3246753246753247
[DEBUG] [Calc] Mode=Both Line=818 | 字幕可用区间=3520.0ms, 当前实际配音时长=8660ms -> 配音加速目标时长=6090ms 视频慢速目标时长=6090ms,PTS=1.7301136363636365
[DEBUG] [Calc] Mode=Both Line=819 | 字幕可用区间=3040.0ms, 当前实际配音时长=5740ms -> 配音加速目标时长=4390ms 视频慢速目标时长=4390ms,PTS=1.444078947368421
[DEBUG] [Calc] Mode=Both Line=820 | 字幕可用区间=4040.0ms, 当前实际配音时长=6280ms -> 配音加速目标时长=5160ms 视频慢速目标时长=5160ms,PTS=1.2772277227722773
[DEBUG] 视频应变速到时长=4453.619s
[DEBUG] 配音应变速到时长=4093.819s
[DEBUG] [Audio] 开始处理 787 个音频变速任务
[DEBUG] 使用12个进程处理音频加速
[DEBUG] [Video] 提交 818 个视频片段处理慢速任务,原视频片段为 820 个
[DEBUG] 使用12个进程处理视频慢速
[DEBUG] 真实视频时
......
turbo'
[DEBUG] [新进程任务 开始:title='Model: large-v3-turbo']
[DEBUG] 新进程任务 参数:kwargs={'detect_language': 'en', 'model_name': 'large-v3-turbo', 'logs_file': 'D:/YII/tmp/23864/1287cd5f18/faster-en-1790215438.0826907.log', 'is_cuda': True, 'no_speech_threshold': 0.6, 'threshold': 0.45, 'condition_on_previous_text': False, 'audio_file': 'D:/YII/tmp/23864/1287cd5f18/recogn2pass-1790215437.0839574.wav', 'local_dir': 'D:/YII/models/models--mobiuslabsgmbh--faster-whisper-large-v3-turbo', 'compute_type': 'default', 'jianfan': False, 'audio_duration': 4434801, 'hotwords': '', 'prompt': '', 'beam_size': 5, 'best_of': 5, 'temperature': '0.0', 'repetition_penalty': 1.0, 'compression_ratio_threshold': 2.4, 'max_speech_ms': 5000, 'min_speech_ms': 3000, 'uuid': '1287cd5f18', 'subtitle_srt': 'D:/YII/tmp/faster-20260924-10_03_58.srt', 'recogn2_max_speech': 1500, 'recogn2_min_speech': 600, 'device_index': 0, 'device_name': 'auto'}
[DEBUG] 开始加载 faster-whisper模型large-v3-turbo,数据类型:default
[DEBUG] [faster_whisper]加载模型large-v3-turbo: running on cuda,_compute_type='default'
[DEBUG] 直接传递完整音频,由faster-whisper内部VAD处理,返回字级时间戳数据
[DEBUG] faster-whisper模式下,对large-v3-turbo模型返回的字级时间戳进行断句
[DEBUG] 进入二次识别重新断句:recogn2_min_speech=600,recogn2_max_speech=1500,info.language='en'
[DEBUG] 二次识别断句完成
[DEBUG] faster-whisper下已临时保存识别结果到 D:/YII/tmp/faster-20260924-10_03_58.srt,防止进程崩溃后永久等待
[DEBUG] [新进程任务 title='Model: large-v3-turbo'] 已返回
[DEBUG] [新进程任务 结束:title='Model: large-v3-turbo'],耗时164.63262510299683s
[DEBUG] 二次识别成功完成

[DEBUG] 视频时长4458565ms-音频时长4434800ms=23765ms,需延长音频
[DEBUG] [最终视频合成]copy模式,无需重新编码:
['-y', '-progress', 'compose1790215682.3006387.txt', '-i', 'novoice.mp4', '-i', 'will_embed.m4a', '-map', '0:v', '-map', '1:a', '-c:v', 'copy', '-c:a', 'copy', '-movflags', '+faststart', '-fps_mode', 'vfr', '-shortest', 'laste_target.mp4']

#3 DeepSeek reply at 3 hours ago

从日志看,问题根源是同时启用了"配音加速"和"视频慢速",并且大量字幕的配音时长明显超出字幕可用区间(如Line 818:字幕区间仅3520ms,配音却长达8660ms,超出近2.5倍),触发了 Mode=Both 的强对齐策略。

日志关键数据:

  • Mode=Both:音频与视频各承担一半时间差异
  • 视频被强制慢放到 PTS=1.18~1.73(即画面被拉长1.2~1.7倍)
  • 结果:视频应变速到时长=4453.619s,而原视频约 4458s,配音被拉长到 4093.819s
  • 最终 视频时长4458565ms - 音频时长4434800ms = 23765ms,导致音画整体错位累积

为什么会"对不上"

"视频慢速"会按字幕逐条重新拉伸画面片段,1小时视频被拆成 818 个片段逐一变速。

这种逐段变速会导致:

  1. 每段的拉伸比例不同,累积后整体时间轴偏移越来越严重
  2. 你导入的20分钟字幕只覆盖部分片段,其余片段没有对应字幕驱动对齐,画面被强行处理,时间轴彻底错乱
  3. 最终合成使用 -c:v copy(不重编码)+ -shortest,会把超出部分截断

解决方案

第一步:关闭"视频慢速"

在主界面只保留 配音加速,取消勾选 视频慢速

逐段视频慢放是时间轴错乱的主因,避免它即可大幅缓解。

第二步:解决配音过长的根本问题

日志显示大量 配音时长=5210/6320/8660ms 远超字幕区间,说明译文太长:

  1. 主界面 设置更多参数 → 提高 配音语速,中文转英文建议 +15%+20%
  2. 翻译渠道改用 DeepSeek/OpenAI 等 AI 模型,勾选 发送完整字幕,并在高级选项勾选 AI翻译附带所有字幕做参考,让译文更精简
  3. 高级选项 → 字幕声音画面对齐音频加速最大倍数 保持默认即可

第三步:重新执行前务必勾选 清理已生成

之前的对齐结果已缓存,不清理会沿用旧数据。

第四步:验证字幕完整性(回到你上一个问题)

1小时视频配20分钟字幕,请先确认导入的SRT本身是否完整(打开看最后一条时间码)。

若字幕确实只有20分钟,其余40分钟无字幕驱动,配合"视频慢速"必然错乱。

保存时长建议

如需保留原始背景声且不想被截断,取消 -shortest 影响,可改用:不勾选视频慢速 + 提高配音语速,让配音自然缩短到等于或略短于视频,即可避免末尾截断。

如果按上述操作后仍严重错位,请提供:

  • 软件左上角版本号
  • 完整的字幕文件(原始SRT)最后5行
  • logs/ 下最新日志文件

请查阅相关文档:

#4 112.49**5 reply at 2 hours ago

[DEBUG] [Video-Cut] 片段779 [原片段时长:3640ms] [目标:4840ms] [PTS:1.3296703296703296] 完成。真实时长: 4867ms, 真实-应生=27ms
[DEBUG] [Video-Cut] 片段780 [原片段时长:3200ms] [目标:4040ms] [PTS:1.2625] 完成。真实时长: 4029ms, 真实-应生=-11ms
[DEBUG] [Video-Cut] 片段784 [原片段时长:3840ms] [目标:4360ms] [PTS:1.1354166666666667] 完成。真实时长: 4390ms, 真实-应生=30ms
[DEBUG] [Video-Cut] 片段783 [原片段时长:3260ms] [目标:4365ms] [PTS:1.3389570552147239] 完成。真实时长: 4361ms, 真实-应生=-4ms
[DEBUG] [Video-Cut] 片段787 [原片段时长:3420ms] [目标:4775ms] [PTS:1.3961988304093567] 完成。真实时长: 4781ms, 真实-应生=6ms
[DEBUG] [Video-Cut] 片段785 [原片段时长:3260ms] [目标:4815ms] [PTS:1.4769938650306749] 完成。真实时长: 4807ms, 真实-应生=-8ms
[DEBUG] [Video-Cut] 片段786 [原片段时长:3980ms] [目标:5155ms] [PTS:1.2952261306532664] 完成。真实时长: 5177ms, 真实-应生=22ms
[DEBUG] [Video-Cut] 片段792 [原片段时长:3240ms] [目标:5835ms] [PTS:1.8009259259259258] 完成。真实时长: 5855ms, 真实-应生=20ms
[DEBUG] [Video-Cut] 片段790 [原片段时长:3380ms] [目标:5030ms] [PTS:1.4881656804733727] 完成。真实时长: 5043ms, 真实-应生=13ms
[DEBUG] [Video-Cut] 片段789 [原片段时长:3200ms] [目标:4975
......
片段797 [原片段时长:3380ms] [目标:4920ms] [PTS:1.455621301775148] 完成。真实时长: 4934ms, 真实-应生=14ms
[DEBUG] [Video-Cut] 片段803 [原片段时长:3380ms] [目标:5535ms] [PTS:1.6375739644970415] 完成。真实时长: 5546ms, 真实-应生=11ms
[DEBUG] [Video-Cut] 片段806 [原片段时长:3340ms] [目标:5110ms] [PTS:1.529940119760479] 完成。真实时长: 5133ms, 真实-应生=23ms
[DEBUG] [Video-Cut] 片段805 [原片段时长:3780ms] [目标:5185ms] [PTS:1.3716931216931216] 完成。真实时长: 5204ms, 真实-应生=19ms
[DEBUG] [Video-Cut] 片段807 [原片段时长:15100ms] [目标:15100ms] [PTS:1.0] 完成。真实时长: 15126ms, 真实-应生=26ms
[DEBUG] [Video-Cut] 片段813 [原片段时长:3960ms] [目标:5100ms] [PTS:1.2878787878787878] 完成。真实时长: 5105ms, 真实-应生=5ms
[DEBUG] [Video-Cut] 片段812 [原片段时长:3800ms] [目标:4485ms] [PTS:1.180263157894737] 完成。真实时长: 4483ms, 真实-应生=-2ms
[DEBUG] [Video-Cut] 片段814 [原片段时长:3080ms] [目标:4055ms] [PTS:1.3165584415584415] 完成。真实时长: 4068ms, 真实-应生=13ms
[DEBUG] [Video-Cut] 片段811 [原片段时长:4440ms] [目标:5455ms] [PTS:1.2286036036036037] 完成。真实时长: 5491ms, 真实-应生=36ms
[DEBUG] [Video-Cut] 片段809 [原片段时长:3080ms] [目标:3745ms] [PTS:1.2159090909090908] 完成。真实时长: 3759ms, 真实-应生=14ms
[DEBUG] [Video-Cut] 片段810 [原片段时长:3500ms] [目标:7550ms] [PTS:2.157142857142857] 完成。真实时长: 7512ms, 真实-应生=-38ms
[DEBUG] [Video-Cut] 片段816 [原片段时长:3040ms] [目标:4360ms] [PTS:1.4342105263157894] 完成。真实时长: 4380ms, 真实-应生=20ms
[DEBUG] [Video-Cut] 片段808 [原片段时长:3620ms] [目标:6020ms] [PTS:1.6629834254143647] 完成。真实时长: 6022ms, 真实-应生=2ms
[DEBUG] [Video-Cut] 片段815 [原片段时长:3520ms] [目标:6050ms] [PTS:1.71875] 完成。真实时长: 6050ms, 真实-应生=0ms
[DEBUG] [Video-Cut] 片段817 [原片段时长:4040ms] [目标:5120ms] [PTS:1.2673267326732673] 完成。真实时长: 5109ms, 真实-应生=-11ms
[DEBUG] 开始加载 faster-whisper模型large-v3-turbo,数据类型:default
[DEBUG] [faster_whisper]加载模型large-v3-turbo: running on cuda,_compute_type='default'
[DEBUG] 直接传递完整音频,由faster-whisper内部VAD处理,返回字级时间戳数据
[DEBUG] faster-whisper模式下,对large-v3-turbo模型返回的字级时间戳进行断句
[DEBUG] 进入二次识别重新断句:recogn2_min_speech=600,recogn2_max_speech=1500,info.language='en'
[DEBUG] 二次识别断句完成
[DEBUG] faster-whisper下已临时保存识别结果到 D:/YII/tmp/faster-20260924-11_21_00.srt,防止进程崩溃后永久等待

#5 DeepSeek reply at 2 hours ago

从这段日志看,视频慢速的实际执行是正常的:每个片段误差仅 ±40ms 内(如片段810 真实7512ms vs 应生7550ms,仅差38ms),说明 ffmpeg 逐段变速本身没有崩溃或丢帧。

问题不在"视频慢速执行",而在于累计误差 + 片段级变速天然无法对齐小时级时间轴

核心分析:逐段变速必然产生累积漂移你视频被拆成 818 个片段,每个片段即使只差 ±30ms,818 段的误差累积可达 十几秒到几十秒。

日志里片段807 是 15100ms 的原片段(未变速,PTS=1.0),这类"大块未变速片段"夹在大量变速片段中间,会让整体时间轴产生非线性偏移。

字幕只有20分钟时,后半段完全没有字幕驱动H1小时的视频,字幕仅覆盖前20分钟,后40分钟的字幕区间为0或不存在。

后40分钟的800多个视频片段没有对应配音驱动,却仍被"视频慢速"强行处理,导致时间轴单方面拉长,与配音彻底脱节。

二次识别只对"配音音频"转录日志末尾二次识别是对 recogn2pass 音频(即变声后的配音)做的,生成的字幕只对齐配音本身,不会回头修正视频画面时间轴

所以即使二次识别成功,最终合成时视频时间轴已在前一步被拉长错位。

解决方案(按优先级)第一步:关闭"视频慢速"1小时的视频逐段慢放是时间轴崩溃主因,尤其当字幕只覆盖部分时长时。

主界面只保留 配音加速,取消勾选 视频慢速。

第二步:先确认字幕完整性这是关键。

打开你导入的SRT,看最后一条时间码是否到 00:59:xx。

若只到 00:20:xx,则后40分钟无字幕,必须补全字幕后再翻译。

第三步:让配音自然缩短而非拉长视频

设置更多参数 → 配音语速 +15% ~ +20%

翻译渠道用 DeepSeek/OpenAI,勾选 发送完整字幕,高级选项勾选 AI翻译附带所有字幕做参考,让译文更精简

目标:让配音总时长 ≤ 视频总时长,这样既不需要音频大幅加速,也不需要视频慢速。

第四步:高级选项微调

音频加速最大倍数 保持默认(100 足够)

视频慢放最大倍数 即使要用也建议 ≤ 2,日志中片段810 已达 PTS=2.15,单段拉伸2倍以上画面会明显卡顿,且加剧累积漂移

第五步:重试前勾选 清理已生成避免沿用旧的字幕与对齐缓存。

如果字幕本身只有20分钟,请先提供:软件左上角版本号完整字幕文件最后5行(确认是否真只有20分钟)logs/ 下最新日志在字幕补全前,不建议再开启"视频慢速"重试,否则仍会错位。

请查阅相关文档:
字幕语音画面对齐原理
优化断句效果
导入本地字幕或人声

Thinking...
Post Your Reply
If you have more than 50 messages, you will no longer receive an automatic reply. Please ask a new question!
Open source and free maintenance is not easy. If this project is helpful to you, please consider making a small donation to help the project continue to maintain and update.

Dondate via ko-fi.com

Related resource