2014-11-17 94 views
0

我有一個作爲Azure Web Role運行的應用程序,我想在Wowza服務器上截取實時RTSP視頻流的屏幕截圖。我正在使用NReco FFMpegConverter包裝器。我遇到了一致性問題。有時代碼根本不會執行,有時會立即執行,有時需要2-3分鐘才能創建屏幕截圖。我已經在靜態(非現場)mp4視頻上測試過這一切,並且所有內容都完美無瑕地執行(1-2秒內)。C#使用NReco FFMpegConverter獲取實時視頻截圖

Stream thumb1 = new System.IO.MemoryStream(); 

var ffMpeg = new NReco.VideoConverter.FFMpegConverter();     
ffMpeg.GetVideoThumbnail("rtsp://99.99.99.99:1935/streamurl", thumb1); 

//Code to upload file to blob storage 
blob = testContainer.GetBlockBlobReference("test.jpg"); 

thumb1.Seek(0, SeekOrigin.Begin); 
blob.Properties.ContentType = "image/jpg"; 
blob.UploadFromStream(s); 

我在執行失敗期間得到的錯誤是「輸出文件#0不包含任何流」。我很好奇,爲什麼有時需要2-3分鐘才能獲得輸出屏幕截圖,而其他時間只有幾秒鐘。尋找有關如何改進此方法的任何建議,並仍使用C#NReco包裝器。

謝謝!

回答

1

看起來你試圖從實時流中獲取縮略圖,並且GetVideoThumbnail方法等待輸入以提取視頻流的第一幀。也許您的直播流很難從Azure WebRole實例訪問(甚至根本不可用)。 VideoConverter內部使用的ffmpeg,你可以檢查它如何執行通過連接到WebRole實例與遠程桌面和命令行執行的ffmpeg:

ffmpeg -i rtsp://99.99.99.99:1935/streamurl -vframes 1 -r 1 -t 1 -f mjpeg thumb.jpg 
+0

嗨維塔利,感謝你的回覆。我認爲沒有任何問題可以直接從Azure訪問。你能否回答關於NReco VideoConverter的另一個問題。並行作業使用多個線程安全嗎? –

+0

是的,您可以使用它從多個線程(但每個線程應該有自己的FFMpegConverter類的實例!) –

+1

Спасибозапомощь! –