如何从视频中提取帧并将其保存到内存中?

时间:2012-09-11 18:36:25

标签: jquery python django ffmpeg

我尝试提取帧并将其保存为output.jpg在服务器端:

f = "ffmpeg -vframes 1 -y -ss "+time+" -i ./media/somemov.mp4 ./media/output.jpg"
subprocess.call(f, shell=True)

在客户端使用:

getImage(noOfFrame);  //send the request for call the ffmpeg function from views.py

document.getElementById("main").style.backgroundImage="url(http://localhost:8000/media/output.jpg#"+ new Date().getTime();+")";

但它太慢了。 DIV始终显示旧图像,因为创建图像需要很长时间。 例如,我想要图像没有3,DIV没有2,我想要图像没有4,而div没有3。

有没有办法从视频中提取帧(通过ffmpeg)并将其发送到Python而不创建output.jpg文件?

我想获取图像数据并将其从服务器(django)发送到网页,并将其设置为任何DIV的背景图像。

“纯数据发送”解决方案比我的更好吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

简短回答:不。

虽然有更好的方法可以做到这一点。

  1. 视频已标记为使用特定时间戳创建缩略图/ screengrab
  2. django删除旧缩略图(如果存在)
  3. django使用http://pypi.python.org/pypi/django-celery对事件进行排队(事件是实际的thumnail创建事件)
  4. 当事件在队列中时,用户会显示占位符图像b / c缩略图不存在
  5. JIV上的javascript / ajax轮询事件队列以完成缩略图。
  6. 事件结束,javascript实时获取新创建的缩略图并更改DIV的CSS属性