#2863 TaskCfg(cache_folder='/Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c', target_dir='/Users/waley/Movie

155.254* Posted at: 2 days ago 👁36

合并阶段出错 最后一步字幕配音嵌入时出错
Traceback (most recent call last):
File "/Users/waley/Documents/vides-ai/pyvideotrans/videotrans/util/help_ffmpeg.py", line 364, in runffmpeg

subprocess.run(

File "/Users/waley/.local/share/uv/python/cpython-3.10.19-macos-aarch64-none/lib/python3.10/subprocess.py", line 526, in run

raise CalledProcessError(retcode, process.args,

subprocess.CalledProcessError: Command '['ffmpeg', '-hide_banner', '-ignore_unknown', '-threads', '0', '-y', '-progress', '/Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c/compose1769303935.5982358.txt', '-i', '/Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c/novoice.mp4', '-i', '/Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c/origin_audio.m4a', '-map', '0:v', '-map', '1:a', '-c:v', 'hevc_videotoolbox', '-c:a', 'copy', '-vf', 'subtitles=shuang.srt.ass', '-movflags', '+faststart', '-q:v', '56', '-t', '360.800000', '/Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37a
......
s/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c/compose1769303935.5982358.txt', '-i', '/Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c/novoice.mp4', '-i', '/Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c/origin_audio.m4a', '-map', '0:v', '-map', '1:a', '-c:v', 'libx265', '-c:a', 'copy', '-vf', 'subtitles=shuang.srt.ass', '-movflags', '+faststart', '-crf', '24', '-preset', 'veryfast', '-t', '360.800000', '/Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c/laste_target.mp4']' returned non-zero exit status 234.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/waley/Documents/vides-ai/pyvideotrans/videotrans/task/trans_create.py", line 1306, in _join_video_audio_srt

tools.runffmpeg(cmd,cmd_dir=self.cfg.cache_folder,force_cpu=False)

File "/Users/waley/Documents/vides-ai/pyvideotrans/videotrans/util/help_ffmpeg.py", line 405, in runffmpeg

return runffmpeg(fallback_args, noextname=noextname, uuid=uuid, force_cpu=True,cmd_dir=cmd_dir)

File "/Users/waley/Documents/vides-ai/pyvideotrans/videotrans/util/help_ffmpeg.py", line 410, in runffmpeg

raise RuntimeError(err)

RuntimeError: parsing a filter description around: parsing filterchain 'subtitles=shuang.srt.ass' around: opening output file /Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c/laste_target.mp4. opening output files: Invalid argument

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/waley/Documents/vides-ai/pyvideotrans/videotrans/task/job.py", line 299, in run

trk.assembling()

File "/Users/waley/Documents/vides-ai/pyvideotrans/videotrans/task/trans_create.py", line 590, in assembling

self._join_video_audio_srt()

File "/Users/waley/Documents/vides-ai/pyvideotrans/videotrans/task/trans_create.py", line 1311, in _join_video_audio_srt

raise RuntimeError(msg)

RuntimeError: 最后一步字幕配音嵌入时出错

TaskCfg(cache_folder='/Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c', target_dir='/Users/waley/Movies/4K Video Downloader+/_video_out/test-mp4', remove_noise=False, is_separate=False, detect_language='en', subtitle_language=None, source_language='英语', target_language='简体中文', source_language_code='en', target_language_code='zh-cn', source_sub='/Users/waley/Movies/4K Video Downloader+/_video_out/test-mp4/en.srt', target_sub='/Users/waley/Movies/4K Video Downloader+/_video_out/test-mp4/zh-cn.srt', source_wav='/Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c/en.wav', source_wav_output='/Users/waley/Movies/4K Video Downloader+/_video_out/test-mp4/en.m4a', target_wav='/Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c/target.wav', target_wav_output='/Users/waley/Movies/4K Video Downloader+/_video_out/test-mp4/zh-cn.m4a', subtitles='', novoice_mp4='/Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c/novoice.mp4', noextname='test', shibie_audio=None, targetdir_mp4='/Users/waley/Movies/4K Video Downloader+/_video_out/test-mp4/test.mp4', instrument=None, vocal=None, back_audio='', background_music=None, app_mode='biaozhun', subtitle_type=3, volume='+0%', pitch='+0Hz', voice_rate='+0%', voice_role='Yunyang(Male/CN)', copysrt_rawvideo=False, clear_cache=False, translate_type=0, tts_type=0, recogn_type=0, model_name='large-v3', split_type=0, voice_autorate=True, video_autorate=False, cuda=False, name='/Users/waley/Movies/4K Video Downloader+/test.mp4', basename='test.mp4', ext='mp4', dirname='/Users/waley/Movies/4K Video Downloader+', shound_del_name=None, uuid='37aa1f4c0c', remove_silent_mid=False, align_sub_audio=True, enable_diariz=False, nums_diariz=0, rephrase=0, only_out_mp4=False)


=
system:macOS-26.2-arm64-arm-64bit
version:v3.91
frozen:False
language:zh
root_dir:/Users/waley/Documents/vides-ai/pyvideotrans
Python: 3.10.19 (main, Jan 14 2026, 23:38:29) [Clang 21.1.4 ]

9 Replies

根据错误日志,问题出现在最后一步合并视频、音频和字幕时,具体是 ffmpeg 在处理 subtitles=shuang.srt.ass 这个滤镜时失败。错误信息 Invalid argument 通常与字幕文件路径、编码或内容格式有关。

核心解决步骤:

  1. 检查字幕文件路径和内容:

    • 前往临时文件夹 /Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c/
    • 找到 shuang.srt.ass 文件,用文本编辑器(如记事本、VS Code)打开。
    • 检查文件内容: 确认文件是有效的 ASS 字幕格式,没有乱码或异常的字符(特别是路径、文件名中可能包含的特殊符号或中文字符)。如果文件为空或格式错误,会导致此问题。
  2. 简化输出路径和文件名:

    • 根本原因: 你的原始视频路径 /Users/waley/Movies/4K Video Downloader+/test.mp4 中包含特殊符号 +,这可能在生成中间文件时引发问题。
    • 解决方案: 将待处理的视频文件重命名,移除所有特殊符号(如 +, &, 空格, 括号等),只保留字母、数字、下划线或短横线。例如,重命名为 test.mp4 并放置在一个纯英文路径下(如 /Users/waley/Videos/test.mp4),然后重新处理。
  3. 检查 ASS 字幕文件编码:

    • 确保 shuang.srt.ass 文件的编码为 UTF-8(无 BOM)。某些文本编辑器保存时可能使用其他编码(如 UTF-8 with BOM 或 GBK),这会导致 ffmpeg 解析失败。用高级文本编辑器将其另存为 UTF-8 编码。
  4. 尝试软字幕输出:

    • 在主界面第5行“字幕显示”中,将选项从“嵌入硬字幕”改为“嵌入软字幕”再试。软字幕的处理方式不同,可能规避此问题。
  5. 手动执行合并命令(高级用户):

    • 如果以上步骤无效,可以尝试在终端手动执行出错的 ffmpeg 命令(需根据你的实际路径调整),观察更详细的错误输出:

      cd /Users/waley/Documents/vides-ai/pyvideotrans/tmp/46116/37aa1f4c0c/
      ffmpeg -i novoice.mp4 -i origin_audio.m4a -map 0:v -map 1:a -c:v libx265 -c:a copy -vf "subtitles=shuang.srt.ass" -movflags +faststart -crf 24 -preset veryfast -t 360.800000 last_target.mp4
    • 查看终端的完整错误信息,可能会给出更具体的线索(例如缺少字体、ASS样式定义错误等)。

预防措施:

  • 始终将待处理的音视频文件放在纯英文、无特殊字符的路径下,并确保文件名本身也符合此规则。
  • 如果问题持续,请提供 shuang.srt.ass 文件的内容片段(前20行)以供进一步分析。

请查看更多参考文档:

2026-01-25 09:46:35,068 - WARNING - FFmpeg 命令执行失败 (force_cpu=False)。
命令: ffmpeg -hide_banner -ignore_unknown -threads 0 -y -progress /Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/compose1769305594.957643.txt -i /Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/novoice.mp4 -i /Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/origin_audio.m4a -map 0:v -map 1:a -c:v hevc_videotoolbox -c:a copy -vf subtitles=shuang.srt.ass -movflags +faststart -q:v 56 -t 360.800000 /Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/laste_target.mp4
错误: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/novoice.mp4':
Metadata:

major_brand     : isom
minor_version   : 512
compatible_brands: isomiso2avc1mp41
title           : Dirty linen shouldn’t be washed in public:Navika Kumar on inter-channel rivalry & history with Arnab
date            : 2022:10:18 10:46

......
4040f3/novoice.mp4', '-i', '/Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/origin_audio.m4a', '-map', '0:v', '-map', '1:a', '-c:v', 'hevc_videotoolbox', '-c:a', 'copy', '-vf', 'subtitles=shuang.srt.ass', '-movflags', '+faststart', '-q:v', '56', '-t', '360.800000', '/Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/laste_target.mp4']' returned non-zero exit status 234.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/waley/Documents/video-ai/pyvideotrans/videotrans/util/help_ffmpeg.py", line 364, in runffmpeg

subprocess.run(

File "/Users/waley/.local/share/uv/python/cpython-3.10.19-macos-aarch64-none/lib/python3.10/subprocess.py", line 526, in run

raise CalledProcessError(retcode, process.args,

subprocess.CalledProcessError: Command '['ffmpeg', '-hide_banner', '-ignore_unknown', '-threads', '0', '-y', '-progress', '/Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/compose1769305594.957643.txt', '-i', '/Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/novoice.mp4', '-i', '/Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/origin_audio.m4a', '-map', '0:v', '-map', '1:a', '-c:v', 'libx265', '-c:a', 'copy', '-vf', 'subtitles=shuang.srt.ass', '-movflags', '+faststart', '-crf', '24', '-preset', 'veryfast', '-t', '360.800000', '/Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/laste_target.mp4']' returned non-zero exit status 234.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/waley/Documents/video-ai/pyvideotrans/videotrans/task/trans_create.py", line 1306, in _join_video_audio_srt

tools.runffmpeg(cmd,cmd_dir=self.cfg.cache_folder,force_cpu=False)

File "/Users/waley/Documents/video-ai/pyvideotrans/videotrans/util/help_ffmpeg.py", line 405, in runffmpeg

return runffmpeg(fallback_args, noextname=noextname, uuid=uuid, force_cpu=True,cmd_dir=cmd_dir)

File "/Users/waley/Documents/video-ai/pyvideotrans/videotrans/util/help_ffmpeg.py", line 410, in runffmpeg

raise RuntimeError(err)

RuntimeError: parsing a filter description around: parsing filterchain 'subtitles=shuang.srt.ass' around: opening output file /Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/laste_target.mp4. opening output files: Invalid argument

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/waley/Documents/video-ai/pyvideotrans/videotrans/task/_only_one.py", line 116, in run

trk.assembling()

File "/Users/waley/Documents/video-ai/pyvideotrans/videotrans/task/trans_create.py", line 590, in assembling

self._join_video_audio_srt()

File "/Users/waley/Documents/video-ai/pyvideotrans/videotrans/task/trans_create.py", line 1311, in _join_video_audio_srt

raise RuntimeError(msg)

RuntimeError: 最后一步字幕配音嵌入时出错

根据新的错误日志,问题依然出现在 subtitles=shuang.srt.ass 滤镜处理环节,但这次提供了更多上下文。关键信息是原始视频的元数据中包含特殊字符(如 &),这可能在生成中间文件时引发路径或文件名问题,最终导致 ffmpeg 在处理 ASS 字幕文件时失败。

核心解决步骤:

  1. 检查并清理 ASS 字幕文件

    • 前往临时文件夹:/Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/
    • 找到 shuang.srt.ass 文件,用文本编辑器(如 VS Code、Sublime Text)打开。
    • 重点检查:文件头部 [Script Info][V4+ Styles] 部分,确认没有异常字符或格式错误。确保文件是有效的 UTF-8 编码(无 BOM)。
    • 尝试修复:如果文件内容复杂,可以尝试用软件(如 Aegisub)重新保存一次,或手动将其转换为 SRT 格式(使用工具箱的“字幕格式转换”功能)。
  2. 简化原始视频文件名和路径(最可能的原因)

    • 错误显示原始视频标题为:Dirty linen shouldn’t be washed in public:Navika Kumar on inter-channel rivalry & history with Arnab
    • 包含特殊字符 &: 和空格,这在文件处理中极易导致问题。
    • 解决方案:将原始视频文件重命名为纯英文、无特殊字符的短名称,例如 test_video.mp4,并放置在一个纯英文路径下(如 /Users/waley/Videos/)。然后使用这个新文件重新开始处理。
  3. 修改输出视频的编码设置(针对 macOS)

    • 错误中首次尝试使用了 hevc_videotoolbox(macOS 硬件编码),失败后回退到 libx265(软件编码)也失败。
    • 在软件主界面,点击右下角 “设置更多参数”
    • 在弹出窗口中,找到 “视频输出” 区域:

      • “视频编码器”自动 改为 libx264(兼容性更好)。
      • “视频输出质量 (CRF)” 设置为 23(默认值)。
      • “输出视频压缩率 (Preset)” 设置为 fastmedium
    • 勾选 “强制软编码” 选项,避免使用可能有问题的硬件编码器。
  4. 尝试软字幕输出

    • 在主界面第5行“字幕显示”中,将选项从“嵌入硬字幕”改为“嵌入软字幕”。软字幕(如 .srt)的处理方式与硬字幕(.ass)不同,可能规避 ASS 滤镜的解析问题。
  5. 清理缓存并重新处理

    • 在临时文件夹 tmp/49757/ab614040f3/ 中,删除 shuang.srt.ass 文件(或整个 ab614040f3 文件夹)。
    • 回到主界面,务必勾选“清理已生成”,然后重新拖入已重命名的视频文件进行处理。

如果以上步骤均无效,请执行以下诊断命令:
在终端中,进入临时文件夹并运行以下命令,查看更详细的错误信息:

cd /Users/waley/Documents/video-ai/pyvideotrans/tmp/49757/ab614040f3/
ffmpeg -i novoice.mp4 -i origin_audio.m4a -map 0:v -map 1:a -c:v libx264 -c:a copy -vf "subtitles=shuang.srt.ass" -movflags +faststart -crf 23 -preset fast last_target.mp4

将终端的完整输出提供给我,以便进一步分析。

请查看更多参考文档:

是FFmpeg不支持libass导致的么

是的,这个错误 parsing a filter description around: parsing filterchain 'subtitles=shuang.srt.ass' 极有可能是由于你的 FFmpeg 编译时没有包含 libass 库导致的。subtitles 滤镜需要 libass 来解析和渲染 ASS/SSA 字幕格式。

核心解决方案:安装或更新包含 libass 的 FFmpeg

由于你使用的是 macOS,请按以下步骤操作:

  1. 检查当前 FFmpeg 是否支持 libass
    在终端运行以下命令:

    ffmpeg -version | grep libass

    如果输出为空或显示 --enable-libassno,则确认问题所在。

  2. 重新安装包含 libass 的 FFmpeg
    使用 Homebrew(macOS 包管理器)重新安装 FFmpeg,并确保启用 libass。

    # 先卸载现有版本(可选)
    brew uninstall ffmpeg
    
    # 重新安装,并指定启用 libass
    brew install ffmpeg --with-libass
    # 或者直接安装(最新版默认应包含)
    brew install ffmpeg
  3. 验证安装
    安装后再次运行 ffmpeg -version | grep libass,确认输出中包含 --enable-libass 且为 yes
  4. 在 pyVideoTrans 中指定 FFmpeg 路径(如果必要)
    如果系统中有多个 FFmpeg,确保 pyVideoTrans 使用的是新安装的版本。

    • 打开 pyVideoTrans。
    • 进入菜单栏:工具 -> 设置
    • 在“FFmpeg 路径”中,填入新 FFmpeg 的完整路径(通常为 /usr/local/bin/ffmpeg/opt/homebrew/bin/ffmpeg)。
  5. 清理并重试

    • 在 pyVideoTrans 主界面勾选“清理已生成”。
    • 重新处理视频。

如果问题依旧,可能是 ASS 文件本身格式问题
即使 FFmpeg 支持 libass,如果 shuang.srt.ass 文件内容有误(如编码问题、样式定义错误),也会导致解析失败。你可以尝试:

  • 在临时文件夹中找到该文件,用文本编辑器检查其内容。
  • 或者,在 pyVideoTrans 主界面第5行“字幕显示”中,暂时改为“嵌入软字幕”(生成 .srt 文件)或“不嵌入字幕”,先测试是否能完成视频合并。

备用方案:使用软字幕
如果安装 libass 后问题仍存在,最稳妥的方案是改用软字幕:

  • 在主界面第5行“字幕显示”中,选择“嵌入软字幕”。
  • 这样会生成独立的 .srt 字幕文件并嵌入视频,不依赖 libass 进行硬字幕渲染,兼容性更好。

请先执行第1、2步检查并重新安装 FFmpeg,这很可能是根本原因。

请查看更多参考文档:

确实没有--enable-libass

确认了,问题根源就是你的 FFmpeg 缺少 libass 支持,无法渲染 ASS 字幕。请按以下步骤解决:

1. 重新安装包含 libass 的 FFmpeg (macOS)

在终端中执行:

# 1. 先卸载现有版本
brew uninstall ffmpeg

# 2. 重新安装(最新版默认应包含 libass)
brew install ffmpeg

# 3. 验证安装
ffmpeg -version | grep libass

预期输出应包含 --enable-libass 且为 yes

2. 在 pyVideoTrans 中更新 FFmpeg 路径

打开 pyVideoTrans:

  • 进入菜单栏:工具 -> 设置
  • 在“FFmpeg 路径”中,填入新 FFmpeg 的完整路径:

    • Intel Mac: /usr/local/bin/ffmpeg
    • Apple Silicon (M1/M2/M3) Mac: /opt/homebrew/bin/ffmpeg

3. 清理缓存并重试

  • 在主界面务必勾选“清理已生成”
  • 重新拖入视频文件进行处理

4. 备用方案:改用软字幕(无需 libass)

如果安装后问题依旧,或想快速完成当前任务:

  • 在主界面第5行“字幕显示”中,选择 “嵌入软字幕”
  • 这样会生成独立的 .srt 字幕文件嵌入视频,不依赖 libass,兼容性100%

5. 验证 ASS 文件格式(可选)

如果坚持使用硬字幕,安装 libass 后仍失败,检查临时文件夹中的 shuang.srt.ass 文件:

  • 用文本编辑器打开,确认是有效的 UTF-8 编码
  • 检查 [Script Info][V4+ Styles] 部分格式是否正确

总结:先执行第1步重新安装 FFmpeg,这是最根本的解决方案。macOS 上通过 Homebrew 安装的 FFmpeg 默认应包含 libass,如果仍缺失,可尝试 brew install ffmpeg --with-libass(但此参数可能已弃用)。

请查看更多参考文档:

这样安装的ffpmeg不包含libass,m4 版本的macos如何安装带libass的ffpmeg

你说得对,macOS 上通过 Homebrew 安装的 FFmpeg 默认可能不包含 libass。对于 Apple Silicon (M1/M2/M3/M4) Mac,请按以下步骤安装带 libass 的 FFmpeg:1. 先清理并安装 libass 库# 确保 Homebrew 已更新
brew update

安装 libass 库

brew install libass2. 从源码编译 FFmpeg(包含 libass)# 安装编译依赖
brew install automake nasm pkg-config

下载 FFmpeg 源码(或使用 git clone)

cd ~/Downloads
wget https://ffmpeg.org/releases/ffmpeg-7.0.tar.xz
tar xf ffmpeg-7.0.tar.xz
cd ffmpeg-7.0

配置编译选项(针对 Apple Silicon 优化)

./configure \
--prefix=/opt/homebrew \
--enable-shared \
--enable-pthreads \
--enable-version3 \
--cc=clang \
--host-cflags= \
--host-ldflags= \
--enable-libass \
--enable-videotoolbox \
--enable-neon \
--enable-hardcoded-tables \
--disable-ffplay \
--disable-doc

编译并安装

make -j$(sysctl -n hw.ncpu)
sudo make install3. 验证安装/opt/homebrew/bin/ffmpeg -version | grep libass应显示 --enable-libass=yes4. 在 pyVideoTrans 中设置路径打开 pyVideoTrans:工具 -> 设置在“FFmpeg 路径”填入:/opt/homebrew/bin/ffmpeg5. 更简单的替代方案:使用预编译的带 libass 的 FFmpeg下载第三方预编译版本(推荐):访问 https://evermeet.cx/ffmpeg/ 下载 “ffmpeg” 和 “libass” 组件。或使用 https://www.osxexperts.net/ 的预编译包。下载后,将 ffmpeg 可执行文件放在某个目录(如 /Users/你的用户名/ffmpeg/)。在 pyVideoTrans 设置中指定该路径。6. 终极备用方案:改用软字幕如果以上步骤太复杂,最快捷的解决方案是:在 pyVideoTrans 主界面第5行“字幕显示”中,选择“嵌入软字幕”这样完全绕过 libass 依赖,使用 .srt 字幕嵌入视频。总结:对于大多数用户,方案5(下载预编译版本)或方案6(改用软字幕)是最简单有效的。如果你熟悉命令行,方案2(源码编译)能获得最佳定制版本。请先尝试方案5或6,能最快解决问题。请查看更多参考文档:常见问题与故障排查 (FAQ)视频翻译最佳配置

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