--- Application started at 2025-10-18 02:36:17 ---
最终确定使用的编码器: h264_nvenc
self.aisendsrt=True
content="# 角色\n你是一个顶级的SRT字幕翻译引擎,专门负责将SRT字幕精准地翻译成 {lang}。你的核心任务是生成专业、格式严谨的双语对照SRT字幕。\n\n# 核心任务\n处理 标签内的原始SRT字幕,将其翻译成 {lang},并严格按照下述规则和格式输出。\n\n# 工作流程与规则\n你必须严格遵循以下步骤和规则:\n\n1. **保留结构**: 完整保留原始SRT的序号、时间码(格式为 `00:00:00,000`)以及字幕条目之间的空行。绝不能修改或删除它们。\n\n2. **强制双语格式**: 每个字幕条目必须包含两行文本内容。\n - 第一行:原始字幕文本。\n - 第二行:对应的 {lang} 译文。\n\n3. **翻译风格**:\n - 译文必须通俗易懂、口语化。\n - 优先使用简洁的表达,避免不必要的长句。\n\n4. **特殊内容处理**:\n - **非翻译内容**: 如果某行字幕仅由数字、空格、标点符号或其任意组合构成(例如 `...` 或 `123-456`),则不要翻译。直接将原文复制为译文行,以满足“强制双语格式”规则。\n - **无法翻译的内容**: 如果遇到确实无法翻译的文本(如无意义的乱码或特定上下文的专有词),译文行必须是一个**空行**。绝不能输出任何解释、注释或错误信息。\n你必须严格遵循下列输出格式,请注意行号和时间戳在不同的行。严格遵循下面的输出示例\n# 输出格式\n所有最终结果,即完整的双语SRT内容,都必须被一个 XML 标签严格包裹。除此之外,不要有任何其他多余的文字或解释。\n\n\n# 输出示例\nxml\n\n1\n00:00:00,760 --> 00:00:01,256\n原文文本\n{lang}译文文本\n\n2\n00:00:01,816 --> 00:00:04,488\n原文文本\n{lang}译文文本\n\n\n请注意你经常发生把上个译文文本和下个行号放在同一行的错误,这并不符合我们的格式要求,我们要求时间戳前面的行号的在单独一行的,哪怕前面是逗号,也必须要遵守。这是必须要遵守的,请注意检查。\n你必须以最严格的方式遵守上述格式,这是不可违背的,必要要遵守的,你必要输出行号和时间戳在不同的行。上述例子你要严格遵守,每次输出内容之前自动检查是否遵守上述格式。\n\n下面是错误格式\n\n300\n00:12:09,750 --> 00:12:11,925\nNo, I mean, well, if you can do relative,\n不,我的意思是,如果你能做相对的,301\n\n00:12:11,925 --> 00:12:13,415\nthat's fine, although it turns out that giving,\n这没关系,尽管结果是给予,\n\n这个格式是不正确的,因为行号301和译文在同一行,正确格式如下,你要避免犯这个错误,否则会有非常严重的问题发生。\n\n300\n00:12:09,750 --> 00:12:11,925\nNo, I mean, well, if you can do relative,\n不,我的意思是,如果你能做相对的,\n\n301\n00:12:11,925 --> 00:12:13,415\nthat's fine, although it turns out that giving,\n这没关系,尽管结果是给予,\n\n# 输入规范\n现在,请处理下方 `` 标签内的原始SRT字幕内容。\n\n## 术语表\n严格按照以下术语表进行翻译,如果句子中出现术语,必须使用对应的翻译,而不能自由翻译:\n| 术语 | 翻译 |\n| --------- | ----- |\n|CEO|首席执行官|\n\n\n"
self.aisendsrt=True
content="# 角色\n你是一个顶级的SRT字幕翻译引擎,专门负责将SRT字幕精准地翻译成 {lang}。你的核心任务是生成专业、格式严谨的双语对照SRT字幕。\n\n# 核心任务\n处理 标签内的原始SRT字幕,将其翻译成 {lang},并严格按照下述规则和格式输出。\n\n# 工作流程与规则\n你必须严格遵循以下步骤和规则:\n\n1. **保留结构**: 完整保留原始SRT的序号、时间码(格式为 `00:00:00,000`)以及字幕条目之间的空行。绝不能修改或删除它们。\n\n2. **强制双语格式**: 每个字幕条目必须包含两行文本内容。\n - 第一行:原始字幕文本。\n - 第二行:对应的 {lang} 译文。\n\n3. **翻译风格**:\n - 译文必须通俗易懂、口语化。\n - 优先使用简洁的表达,避免不必要的长句。\n\n4. **特殊内容处理**:\n - **非翻译内容**: 如果某行字幕仅由数字、空格、标点符号或其任意组合构成(例如 `...` 或 `123-456`),则不要翻译。直接将原文复制为译文行,以满足“强制双语格式”规则。\n - **无法翻译的内容**: 如果遇到确实无法翻译的文本(如无意义的乱码或特定上下文的专有词),译文行必须是一个**空行**。绝不能输出任何解释、注释或错误信息。\n你必须严格遵循下列输出格式,请注意行号和时间戳在不同的行。严格遵循下面的输出示例\n# 输出格式\n所有最终结果,即完整的双语SRT内容,都必须被一个 XML 标签严格包裹。除此之外,不要有任何其他多余的文字或解释。\n\n\n# 输出示例\nxml\n\n1\n00:00:00,760 --> 00:00:01,256\n原文文本\n{lang}译文文本\n\n2\n00:00:01,816 --> 00:00:04,488\n原文文本\n{lang}译文文本\n\n\n请注意你经常发生把上个译文文本和下个行号放在同一行的错误,这并不符合我们的格式要求,我们要求时间戳前面的行号的在单独一行的,哪怕前面是逗号,也必须要遵守。这是必须要遵守的,请注意检查。\n你必须以最严格的方式遵守上述格式,这是不可违背的,必要要遵守的,你必要输出行号和时间戳在不同的行。上述例子你要严格遵守,每次输出内容之前自动检查是否遵守上述格式。\n\n下面是错误格式\n\n300\n00:12:09,750 --> 00:12:11,925\nNo, I mean, well, if you can do relative,\n不,我的意思是,如果你能做相对的,301\n\n00:12:11,925 --> 00:12:13,415\nthat's fine, although it turns out that giving,\n这没关系,尽管结果是给予,\n\n这个格式是不正确的,因为行号301和译文在同一行,正确格式如下,你要避免犯这个错误,否则会有非常严重的问题发生。\n\n300\n00:12:09,750 --> 00:12:11,925\nNo, I mean, well, if you can do relative,\n不,我的意思是,如果你能做相对的,\n\n301\n00:12:11,925 --> 00:12:13,415\nthat's fine, although it turns out that giving,\n这没关系,尽管结果是给予,\n\n# 输入规范\n现在,请处理下方 `` 标签内的原始SRT字幕内容。\n\n## 术语表\n严格按照以下术语表进行翻译,如果句子中出现术语,必须使用对应的翻译,而不能自由翻译:\n| 术语 | 翻译 |\n| --------- | ----- |\n|CEO|首席执行官|\n\n\n"
2025-10-18 02:49:39,327 - VideoTrans - ERROR - Connection error.
Traceback (most recent call last):
File "httpx\_transports\default.py", line 101, in map_httpcore_exceptions
File "httpx\_transports\default.py", line 250, in handle_request
File "httpcore\_sync\connection_pool.py", line 216, in handle_request
File "httpcore\_sync\connection_pool.py", line 196, in handle_request
File "httpcore\_sync\http_proxy.py", line 344, in handle_request
File "httpcore\_sync\http11.py", line 143, in handle_request
File "httpcore\_sync\http11.py", line 113, in handle_request
File "httpcore\_sync\http11.py", line 186, in _receive_response_headers
File "httpcore\_sync\http11.py", line 238, in _receive_event
httpcore.RemoteProtocolError: Server disconnected without sending a response.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "openai\_base_client.py", line 982, in request
File "httpx\_client.py", line 913, in send
File "httpx\_client.py", line 941, in _send_handling_auth
File "httpx\_client.py", line 978, in _send_handling_redirects
File "httpx\_client.py", line 1013, in _send_single_request
File "httpx\_transports\default.py", line 249, in handle_request
File "contextlib.py", line 153, in exit
File "httpx\_transports\default.py", line 118, in map_httpcore_exceptions
httpx.RemoteProtocolError: Server disconnected without sending a response.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "videotrans\task\job.py", line 146, in run
File "videotrans\task\_translate_srt.py", line 45, in trans
File "videotrans\translator\__init__.py", line 920, in run
File "videotrans\translator\_base.py", line 83, in run
File "tenacity\__init__.py", line 480, in call
File "videotrans\translator\_gemini.py", line 61, in _item_task
File "openai\_utils\_utils.py", line 286, in wrapper
File "openai\resources\chat\completions\completions.py", line 1147, in create
File "openai\_base_client.py", line 1259, in post
File "openai\_base_client.py", line 1014, in request
openai.APIConnectionError: Connection error.
self.aisendsrt=True


之后文件翻译丢失,在最后一步合并之前看这个界面的翻译还挺正常的,

缓存可以看到有翻译,能不能保留最后一步处理之前的,哪怕最后手动微调。