跳转到内容
彼岸论坛
欢迎抵达彼岸 彼岸花开 此处谁在 -彼岸论坛

[Python] 这个场景下,在用户下载完转换好的文件再删除临时文件的最佳实际是什么?


小天管理

已推荐帖子

from flask import Flask, request, send_file, abort
import ffmpeg
import os
import tempfile
import time

app = Flask(__name__)

@app.route('/audio_appledevices/<name>.m4a', methods=['GET'])
def convert_audio(name):
    ogg_path = f'./audio/{name}.ogg'
    if not os.path.exists(ogg_path):
        abort(404)
    with tempfile.NamedTemporaryFile(delete=False, suffix='.m4a') as temp_file:
        m4a_path = temp_file.name
    try:
        ffmpeg.input(ogg_path).output(m4a_path, codec='alac').run(overwrite_output=True)
        response = send_file(m4a_path, as_attachment=True, download_name=f'{name}.m4a', mimetype='audio/mp4')
        @response.call_on_close
        def cleanup():
            time.sleep(1)
            if os.path.exists(m4a_path):
                os.remove(m4a_path)
        return response
    except ffmpeg.Error as e:
        abort(500)


if __name__ == '__main__':
    app.run(host='127.0.0.1', port=3389)

除非另开一个线程,不管怎么写临时文件都不能被自动删掉,要不就是 ffmpeg 写不进文件,因为临时文件被占用。 因为 ffmpeg 需要 seekable 的流,所以输出到 IO 流不可行。

请先测试再回复!我让 GPT-4 写了几十个版本,没有一个能用。

请先测试再回复!我让 GPT-4 写了几十个版本,没有一个能用。

请先测试再回复!我让 GPT-4 写了几十个版本,没有一个能用。

请先测试再回复!我让 GPT-4 写了几十个版本,没有一个能用。

意见的链接
分享到其他网站

加入讨论

您现在可以发表并稍后注册. 如果您是会员,请现在登录来参与讨论.

游客
回复主题...

×   粘贴为富文本.   粘贴为纯文本来代替

  只允许使用75个表情符号.

×   您的链接已自动嵌入.   显示为链接来代替

×   您之前的内容已恢复.   清除编辑器

×   您无法直接粘贴图片.要从网址上传或插入图片.

  • 游客注册

    游客注册

  • 会员

    没有会员可显示

  • 最新的状态更新

    没有最新的状态更新
  • 最近查看

    • 没有会员查看此页面.
×
×
  • 创建新的...