#4733 TaskCfgVTT(uuid='0aca5a80c6', name='E:/-076-C.mp4', dirname='E:/', noextname='-076-C', basename='-076-C.mp4', ext='mp4',

2409:8a6a* Posted at: 3 hours ago

cannot unpack non-iterable NoneType object
Traceback (most recent call last):
File "videotrans\task\only_one.py", line 128, in run
File "videotrans\task\trans_create.py", line 707, in assembling
File "videotrans\task\trans_create.py", line 1233, in _join_video_audio_srt
TypeError: cannot unpack non-iterable NoneType object
TaskCfgVTT(uuid='0aca5a80c6', name='E:/-076-C.mp4', dirname='E:/', noextname='-076-C', basename='-076-C.mp4', ext='mp4', target_dir='E:/aaa/-076-C-mp4', cache_folder='E:/win-pyvideotrans-v4.00-525/tmp/109100/0aca5a80c6', is_cuda=False, source_language='日语', source_language_code='ja', source_sub='E:/aaa/-076-C-mp4/ja.srt', source_wav='E:/win-pyvideotrans-v4.00-525/tmp/109100/0aca5a80c6/ja.wav', source_wav_output='E:/aaa/RBK-076-C-mp4/ja.m4a', target_language='简体中文', target_language_code='zh-cn', target_sub='E:/aaa/-076-C-mp4/zh-cn.srt', target_wav='E:/win-pyvideotrans-v4.00-525/tmp/109100/0aca5a80c6/target.wav', target_wav_output='E:/aaa/RBK-076-C-mp4/zh-cn.m4a', translate_type=2, tts_type=0, volume='+0%', pitch='+0Hz', voice_rate='+0%', voice_role='No', voice_autorate=False, video_autorate=False, remove_silent_mid=False, align_sub_audio=True, detect_language='ja', recogn_type=0, model_name='medium', shibie_audio=None, remove_noise=False, enable_diariz=False, nums_diariz=0, rephrase=0, fix_punc=False, subtitle_language=None, app_mode='biaozhun', subtitles='', targetdir_mp4='E:/aaa/RBK-076-C-mp4/RBK-076-C.mp4', novoice_mp4='E:/win-pyvideotrans-v4.00-525/tmp/109100/0aca5a80c6/novoice.mp4', is_separate=False, embed_bgm=True, instrument=None, vocal='E:/win-pyvideotrans-v4.00-525/tmp/109100/0aca5a80c6/vocal.wav', clear_cache=False, background_music='', subtitle_type=2, only_out_mp4=False, recogn2pass=False, output_srt=0, copysrt_rawvideo=False, loop_backaudio=1, backaudio_volume=0.8)


=
system:Windows-10-10.0.19045-SP0
version:v4.00
frozen:True
language:zh
root_dir:E:/win-pyvideotrans-v4.00-525

1 Replies

这个错误是在视频合成的最后阶段 _join_video_audio_srt 函数中,某个被期望返回元组的函数返回了 None,导致解包失败。核心原因通常是字幕文件路径与视频文件名不匹配缺失必要的音频/字幕文件


根本原因分析

从你的配置日志可以看到:

  • 原始视频文件名:-076-C.mp4(注意前面有一个连字符 -
  • 但你手动放置的字幕文件放在了 E:/aaa/RBK-076-C-mp4/ 目录下(文件名中包含了 RBK 前缀),而软件期望的字幕目录是 E:/aaa/-076-C-mp4/(见 target_dir 字段)。
  • 你使用的 target_dirE:/aaa/-076-C-mp4,但 source_subtarget_sub 却指向了 E:/aaa/RBK-076-C-mp4/ja.srtzh-cn.srt,路径不一致。

根据知识库第13节“使用已有的SRT字幕文件”,必须确保字幕文件所在目录名与视频文件名严格匹配(视频去掉扩展名后加 -后缀)。例如:

  • 视频 -076-C.mp4 → 字幕目录应为 _video_out/-076-C-mp4/
  • 目录名中的 -mp4 后缀是 v3.87 版本之后强制要求的格式,必须包含此后缀

你的视频名以 - 开头可能导致目录命名解析异常,而且手动创建的 RBK-076-C-mp4 与预期不符,软件在最终合成时找不到正确的字幕和音频文件,返回 None


解决方案

  1. 统一目录命名
    删除或清空手动创建的 E:/aaa/RBK-076-C-mp4/E:/aaa/-076-C-mp4/,让软件自动生成输出目录。
    或者严格按照以下结构手动放置字幕:

    E:\
    ├── -076-C.mp4                  # 原始视频
    └── _video_out\
        └── -076-C-mp4\             # 注意后缀 -mp4 必须存在
            ├── ja.srt              # 日文字幕(源语言)
            └── zh-cn.srt           # 中文字幕(目标语言)
  2. 使用默认输出目录
    在主界面“输出到..”处不要手动指定,清空或留空,让软件默认在视频同目录下创建 _video_out
    勾选“清理已生成”强制重新处理,避免旧缓存干扰。
  3. 检查配音角色设置
    你选择了 voice_role='No'(不配音),但目标语言是中文,如果期望只添加字幕而不替换声音,这是正确的。但需要注意:

    • 如果不配音,“目标目录”下仍会生成 target.wav 等音频文件,但这些文件可能为空或不完整。在合成时,软件会尝试读取音频文件路径,如果文件不存在或内容异常,可能导致 None 错误。
    • 建议先测试一个简单的案例:使用完整配音(选择 Edge-TTS 并指定一个中文角色)来排除纯字幕合成分支的 Bug。
  4. 检查翻译结果
    你使用的是 M2M100(本地) 翻译渠道(translate_type=2)。请确认该模型已正确下载并加载完成。如果翻译结果为空或字幕文件损坏,也会导致合成失败。可以尝试切换到免费的微软翻译(translate_type=1)测试。
  5. 查看详细日志
    请打开软件根目录下的 logs/ 文件夹,找到最新的 .log 文件,复制最后约50行报错内容。重点关注 _join_video_audio_srt 之前是否有文件无法打开、路径错误等提示,以便进一步定位是具体哪个文件(音频、字幕还是视频)返回了 None

如果以上调整后仍然报错,请提供完整的日志内容,我会帮你进一步分析。


请查阅相关文档:

Post Your Reply
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.

Related resource

Similar issues already exist