2011-01-24 39 views
4

我需要拍摄用户上传的任何视频文件,将其转换为flv或webM &然后将其显示给用户。现在做了一些研究之后,我得出结论,我必须使用ffmpeg来进行转换,但我不确定如何照顾整个管道。即,转换用户上传的视频文件并使用django,python

  1. 获得用户刚上传的文件。
  2. 在django后端以某种方式发送文件进行处理?
  3. 处理完成后,删除用户上传的原始文件&将其替换为转换后的文件。

我刚刚知道这个广泛的步骤,但喜欢如何以流线型的方式连接每一步?例如如何在python &上在CLI上启动对ffmpeg的系统调用,继续等待转换过程完成。另外如何更新数据库到现在指向新的转换文件&删除旧的。如何告诉用户(实况)文件被转换,转换等,如进度条?

我知道这是一个首要的问题,但任何/所有位的帮助将是伟大的!

回答

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文档中。我确定。

+0

感谢您的建议。我确实最终使用了Celery + RabbitMQ和subprocess.Popen来实际创建转换任务。之前没有在自动化整个管道上工作,所以它有点吓人,但我会活下去。 :) – Chantz 2011-01-30 13:16:32