修改Telegram音频提取机器人代码实现无重编码原生音频提取
所需修改内容
- 修改输出文件命名规则:原代码硬编码输出文件后缀为
.mp3,需改为直接使用源音频流的原生格式作为后缀,避免格式不匹配问题 - 统一使用无损提取参数:原代码仅在源音频为mp3格式时才添加
-c copy参数实现流复制,其余格式默认触发重新编码。需移除分支判断,所有格式的提取命令都统一加上-c copy参数,全程不触发转码 - 可选适配:如果
upload_audio上传方法存在仅允许mp3格式的校验逻辑,需要同步修改该方法的格式校验规则,放开对应原生音频格式的上传限制
修改后完整代码
from helpers.tools import execute, clean_up from helpers.upload import upload_audio, upload_subtitle async def extract_audio(client, message, data): await message.edit_text("正在从文件中提取音轨...") dwld_loc = data['location'] # 改用源音频的原生格式作为输出后缀 out_loc = f"{data['location']}.{data['name']}" # 所有格式统一走流复制逻辑,不重新编码 out, err, rcode, pid = await execute(f"ffmpeg -i '{dwld_loc}' -map 0:{data['map']} -c copy '{out_loc}' -y") if rcode != 0: await message.edit_text("**发生错误,请查看日志获取详细信息。**") print(err) await clean_up(dwld_loc, out_loc) return await clean_up(dwld_loc) await upload_audio(client, message, out_loc)
内容的提问来源于stack exchange,提问作者Jegadish Tamizh
相关产品推荐
相关产品推荐

