这是完整的log文件。你可以看下:
Application started at 2026-03-05 17:12:12
First searching GPU...
[DEBUG] 平台: Windows。正在按优先级检测最佳的 'h264' 编码器: ['nvenc', 'qsv', 'amf']
[DEBUG] 正在测试编码器是否可用: h264_nvenc...
Found 1 GPUs, cost=1s
start workers...
process_max_gpu=0
multi_gpus=False
Concurrent task_nums=1
process_max=0
start 8 jobs
ended workers
[DEBUG] 硬件编码器 'h264_nvenc' 可用。
[DEBUG] 已选择硬件编码器: h264_nvenc
[DEBUG] 最终确定使用的编码器: h264_nvenc
[DEBUG] 平台: Windows。正在按优先级检测最佳的 'hevc' 编码器: ['nvenc', 'qsv', 'amf']
[DEBUG] 正在测试编码器是否可用: hevc_nvenc...
[DEBUG] 硬件编码器 'hevc_nvenc' 可用。
[DEBUG] 已选择硬件编码器: hevc_nvenc
[DEBUG] 最终确定使用的编码器: hevc_nvenc
[INFO] Starting call to 'videotrans.translator._chatgpt.ChatGPT._item_task', this is the 1st time calling it.
[DEBUG]
[chatGPT]发送请求数据:message=[{'role': 'system', 'content': 'You are a top-tier Subtitle Translation Engine.'}, {'role': 'user', 'content': '# Role\nYou are an expert subtitle translator and SRT formatting specialist.\nYour Goal: Translate
......
itle translator and SRT formatting specialist.\nYour Goal: Translate the SRT subtitle batch in
into English.\nYour Core Principle: **Strict Structural Adherence + Natural Spoken Language.**\n\n# INPUT DATA\n[Global Context]: See (if provided). Use this ONLY for understanding plot/terms. DO NOT translate it.\n[Target Batch]: See
. This is the ONLY text you must translate and output.\n\n# CRITICAL FORMATTING RULES (Non-Negotiable)\n1. **Absolute 1-to-1 Mapping**:\n - Count the input blocks. The output MUST have the EXACT same number of blocks.\n - If input has 32 blocks, output MUST have 32 blocks.\n2. **Immutable Metadata**:\n - Copy Index Numbers (1, 2, 3...) exactly.\n - Copy Timestamps (00:00:00,000 --> ...) exactly.\n - Preserve the exact blank line structure between blocks.\n3. **Segmentation Logic (Crucial)**:\n - **Do NOT merge lines**: If a sentence spans across Block A and Block B in the source, the translation MUST also span across Block A and Block B.\n - **Do NOT split lines**: Never create new blocks.\n - **Fragment Mapping**: If a source line is a sentence fragment (e.g., "I went to..."), translate it as a corresponding fragment in English that flows logically into the next line. Do not force it into a complete sentence if that destroys the flow with the next block.\n4. **Safety & Fallback**:\n - Never output empty text. If a line is untranslatable (sound effects, symbols), keep the original text or a standardized equivalent in English.\n - Do not include tags, font codes, or brackets like
(music) unless they exist in the source.\n\n# TRANSLATION STYLE GUIDELINES\n1.
Natural & Conversational: Use the target language\'s spoken logic. Avoid "Translationese" or stiff formal grammar.\n2.
Concise: Subtitles must be readable quickly. Choose shorter synonyms if they convey the same meaning/emotion.\n3.
Contextual Flow: Ensure the translation fits the Global Context (gender, tone, plot) but stays strictly within the time-bound limitations of the specific batch.\n\n\n\n\n\n# OUTPUT FORMAT\nReturn the result inside `` tags.\n\n
Example of "Fragment Mapping" Logic:\n
Source Input:\n1\n00:01:00,000 --> 00:01:02,000\nI decided to go\n\n2\n00:01:02,500 --> 00:01:04,000\nto the supermarket.\n\n
Wrong Output (Merged/Fixed):\n1\n...\n[Translated "I decided to go to the supermarket."]\n2\n...\n[Empty or Repeated]\n\n
Correct Output (Mapped):\n1\n...\n[Translated "I decided to go" fragment]\n2\n...\n[Translated "to the supermarket." fragment]\n\n
\n\n# Actual Task\nTranslate the following batch into English:\n\n\n1\n00:00:00,000 --> 00:00:05,000\n你好啊我的朋友\n'}]
[DEBUG] [字幕翻译]渠道3,gemini-3-pro-preview:共耗时:0s
等待 uuid_signal 线程退出
正在等待线程 PrepareVideo 结束...
正在等待线程 SpeechToText 结束...
正在等待线程 DiarizSpeaker 结束...
正在等待线程 TranslationSRT 结束...
正在等待线程 DubbingSrt 结束...
正在等待线程 AlignVieoAudioSrt 结束...
正在等待线程 AssembVideoAudioSrt 结束...
正在等待线程 TaskDone 结束...
Successfully killed ffmpeg processes using taskkill