2009-12-29 239 views
15

網絡攝像頭拍攝的視頻保存,我想使用Flash capure從用戶的網絡攝像頭視頻並保存它承載Flash文件在同一臺服務器上。網絡服務器將運行ASP.Net技術。看起來很簡單,對吧?使用閃光燈

很多搜​​索產生了相同的代碼行,以啓動使用Flash的網絡攝像頭捕獲。我找不到將捕獲的視頻發送回服務器的任何內容。

我可以找到很多博客和論壇帖子,暗示第三方軟件或Flash Communication Server需要收集它在服務器上,但我不明白爲什麼。

看來Flash應該能夠捕獲一些視頻並將其作爲HTTP post發送到承載Flash文件的同一臺服務器。這是非常基本的Flash /網絡攝像頭功能,對吧?看起來我們不需要引入第三方依賴關係。

有誰知道在哪裏的樣本ActionScript代碼,這些額外的行可能隱藏?

回答

15

您確實需要Flash Media Server(或Red5等開源替代品)才能夠將視頻從客戶端傳輸到服務器,這基本上就是您想要在此處執行的操作。使用HTTP POST無法做到這一點。

但是,您可以將每個幀的視頻顯示對象繪製爲位圖,並使用常規HTTP文件上傳即時上傳這些位圖。雖然你可以想象,但從性能角度來看,這並不完美。你還會碰到問題,因爲Flash Player安全模型不允許上傳文件,而無需操作是用戶發起的(即鼠標點擊事件是在堆棧跟蹤)。有辦法解決這個雖然,例如通過AMF服務發送文件作爲AMF ByteArray的,但它可能不是面向未來。最後,儘管如此,對於任何類型的專業級應用程序,您肯定會想要合併Flash Media Server(或Red5)。您可以從中聘請這樣的服務公司,例如Influxis。沿着這條路線,你將不必自己託管服務器(也就是Java)。

+4

好吧,所以我學到的是,Flash無法從網絡攝像頭創建10秒的視頻剪輯,然後將該視頻文件發佈到服務器。所以攝像頭的數據源是像流水和閃光燈無法瓶它的一個片段; Flash只能將流重定向到屏幕或Red5的Flash Media Server等特殊流接收方。謝謝(你的)信息! – a7drew 2009-12-29 16:47:03

+0

這是正確的!當然,除非您使用您儲存的所有幀在內存中的位圖的解決方法(使用BitmapData類,它的繪製()方法),然後上傳位圖依次那些到服務器,在那裏他們可以使用的ffmpeg例如編碼。 – richardolsson 2009-12-29 17:16:30

0

,我發現這個博客有用。

http://www.zeropointnine.com/blog/updated-flv-encoder-alchem/ 此代碼基於richardolsson給出的答案。

我在我的項目中嘗試了一次此代碼,並且還成功將上傳10秒視頻給Facebook。我寫了一篇關於我的經歷的詳細博客。 http://www.logicmanialab.com/2012/10/upload-video-to-facebook-using.html

如果視頻太長,這段代碼會中斷或掛斷瀏覽器。無論如何,這是值得一試。

除了保存視頻的最佳方式是使用Flash Media Server或RED5服務器(我experienece)。我從來沒有嘗試過的ffmpeg如我在PHP不是最好的:)。