2012-09-11 37 views
1

我試圖提取幀並將其保存爲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

簡答:不。

有一個更好的方法來做到這一點,雖然。

  1. 視頻被判縮略圖/ screengrab創建具有一定時間戳
  2. django的刪除舊的縮略圖,如果它存在
  3. django的隊列使用http://pypi.python.org/pypi/django-celery一個事件(該事件是實際略圖創建事件)
  4. 當事件在隊列中時,用戶被顯示佔位符圖像b/c縮略圖不存在
  5. javascript/ajax在DIV輪詢事件隊列中完成縮略圖。
  6. 事件結束後,javascript實時取得新創建的縮略圖並更改DIV的CSS屬性
相關問題