用户上传视频文件并使用Django和Python提供服务

4 投票
1 回答
2272 浏览
提问于 2025-04-16 10:30

我需要处理用户上传的任何视频文件,把它转换成flv或webM格式,然后再展示给用户。经过一些研究,我发现必须使用ffmpeg来进行转换,但我不太确定如何处理整个流程。具体来说:

  1. 获取用户刚上传的文件。
  2. 在django的后台,怎么把这个文件发送去处理呢?
  3. 处理完成后,删除用户上传的原始文件,并用转换后的文件替换它。

我只知道这些大致的步骤,但不太清楚如何把每一步连接起来,让整个流程顺畅进行。比如,如何从python中启动一个系统调用去执行ffmpeg,并且一直等到转换完成?还有,如何更新数据库,让它指向新的转换文件,并删除旧的文件?怎么实时告诉用户文件正在转换,比如显示一个进度条?

我知道这个问题有点宽泛,但任何部分的帮助都非常感谢!

1 个回答

3

如果一个转换过程需要很长时间,你可能想要考虑把它交给一个任务处理器来处理:

http://celeryproject.org/

这个工具可能正合适。在Python中,可以通过os模块里的函数来进行系统调用,比如使用os.system:

>>> os.system("/bin/ls")
api-manual.pdf  C++  GUI  Java  README

或者使用os.popen:

>>> f=os.popen("/bin/ls")
>>> f.read()
'api-manual.pdf\nC++\nGUI\nJava\nREADME\n'
>>> f.close()

在Python的文档中,有关于进程间通信等内容的部分。我相信你可以找到相关信息。

撰写回答