2016-12-24 17 views
0

老闆給了我一些挑戰,這個挑戰有點超出了我平常的看法,而且我很難確定我應該使用哪些技術/項目。 (我不介意,我問了一些'新':)我應該使用哪些技術從一系列內存位圖生成WebM實時流?

作業:建立一個.NET服務器端進程,可以從緩衝區每秒拾取一次位圖10次,併產生/提供10fps視頻流在現代HTML5瀏覽器中顯示。

我應該在這裏找什麼樂高積木?

Dave

回答

2

你會想要使用FFmpeg。這裏的基本流程:

Your App -> FFmpeg STDIN -> VP8 or VP9 video wrapped in WebM 

如果你在這些圖像流,可能是最簡單的事是位圖解碼成原始RGB或RGBA位圖,然後寫每一幀FFmpeg的STDIN。您必須首先讀取第一個位圖以確定尺寸和顏色信息,然後使用正確的參數執行FFmpeg子進程。完成後關閉管道,FFmpeg將完成輸出文件。如果你願意,你甚至可以將FFmpeg的STDOUT重定向到S3之類的blob存儲之類的地方。

如果所有的圖像都立即上傳,然後然後您創建視頻,它更容易。只需按順序列出文件並執行FFmpeg即可。當FFmpeg完成後,你應該有一個視頻。

另外一點信息可以幫助您瞭解如何構建FFmpeg命令行:WebM是一種容器格式。它沒有做任何事情,只是記錄了多少個視頻流,多少個音頻流,用於這些流的什麼編解碼器,字幕流,元數據(如縮略圖)等等.WebM基本上是Matroska(.mkv),但是與一些禁用的功能使瀏覽器製造商更容易採用WebM標準。在WebM內部,您至少需要一個視頻流。 VP8和VP9是非常兼容的編解碼器。如果您想添加音頻,Opus是您可以使用的標準編解碼器。

一些資源,讓你開始:

+0

任何提示我如何從ffmpeg的ST DOUT到瀏覽器? – davecove

+0

@davecove你想直接輸出到瀏覽器?只需將流傳輸到客戶端流。自從我使用.NET以來已經有很多年了,但事情就是這樣。確保你的內容類型頭是正確的,並且你正在使用分塊傳輸編碼。 – Brad

相關問題