有一個IP網絡攝像機,我曾經寫過一個.NET類。它基本上是一個Timer實現,它每5秒鐘從攝像機中創建一個快照CGI腳本。相機本身非常易腐爛;它沒有任何類型的API供我使用,唯一能夠以編程方式(遠程)執行的操作是調用此腳本。該腳本返回一個640x480的JPEG圖像。簡單。從一系列圖像創建視頻流(AVI)
現在我需要能夠做的就是採取了天的這些圖像,並創建一個「時間流逝」的AVI視頻流出來的,最終將被嵌入到網頁中。我怎樣才能用VB.NET做到這一點?
有一個IP網絡攝像機,我曾經寫過一個.NET類。它基本上是一個Timer實現,它每5秒鐘從攝像機中創建一個快照CGI腳本。相機本身非常易腐爛;它沒有任何類型的API供我使用,唯一能夠以編程方式(遠程)執行的操作是調用此腳本。該腳本返回一個640x480的JPEG圖像。簡單。從一系列圖像創建視頻流(AVI)
現在我需要能夠做的就是採取了天的這些圖像,並創建一個「時間流逝」的AVI視頻流出來的,最終將被嵌入到網頁中。我怎樣才能用VB.NET做到這一點?
.net不直接支持視頻格式。你最好的選擇是使用第三方工具來生成.avi。
ffmpeg是一種選擇。你可以直接通過這樣的命令行訪問:
ffmpeg -f image2 -i img%d.jpg /output/a.mpg
您將需要命名的圖像img1.jpg,img2.jpg等。更多詳情請參閱ffmpeg faq。您還應該在常見問題解答中瞭解如何輸出不同視頻格式的詳細信息。
您可以從VB使用Process.Start()啓動一個進程。事情是這樣的:
Process.Start("ffmpeg.exe", "-f image2 -i img%d.jpg /output/a.mpg")
你也可以看看ffmpeg-sharp或Tao.FFmpeg,他們是FFmpeg的庫.NET包裝。我沒有親自嘗試,但它看起來可能會幫助你。
另一種辦法是看看MEncoder,它具有類似的功能。您應該能夠查找此工具的類似命令行。
[相關SO問題:271003]
看起來像一個很好的解決方案。希望有一個圖書館,但我可以啓動這個單獨的過程沒有問題。 – 2009-12-08 22:02:01
@Josh。我已經添加了一些鏈接到你可能想要查看的包裝庫。 – 2009-12-08 22:10:18
ffmpeg-sharp不能編譯,我無法找到任何地方下載Tao.FFmpeg – 2009-12-08 22:14:03
有幾個命令行工具,可以採取一系列的圖像輸出的AVI文件。我建議你從你的應用程序中調用其中一個。
我會提供鏈接的建議,但它已經年以來我用一個。
編輯:顯然你可以做到這一點使用的ffmpeg:http://ffmpeg.org/ffmpeg-doc.html
爲了創建許多圖像的視頻:
的ffmpeg -f圖像2 -i foo-%03d.jpeg -r 12 - š寬x高foo.avi
語法foo-%03d.jpeg指定 使用三種 數字組成的十進制數用零填充到表達 的序列號。它與C printf 函數支持的語法是相同的,但只有格式接受 正常整數才適用。
呃,太遲了。其他人發佈時,我正在添加我的編輯。 – Jermismo 2009-12-08 22:15:50
FFmpeg的有Windows可執行文件,是非常受歡迎的。
Making movies from image files using ffmpeg/mencoder
你必須檢查可用的輸出格式是否適合你。
這是一個C#包裝由某人在CodeProject:
http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx
這包裝應該爲你提供你所需要的。
nobugz在評論中提供了該鏈接。 – 2009-12-08 22:07:16
嗯,當我發佈這個答案時(不刷新頁面) – 2009-12-08 22:26:48
看看這個項目:http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx – 2009-12-08 22:01:14
不錯!你是來自MSDN論壇的同一個nobugz嗎? – 2009-12-08 22:02:33