天天看點

在伺服器端錄制語音視訊

  本文我們就做一個demo實作類似的功能,示範如何在服務端錄制某個指定線上使用者的語音視訊,并提供三種錄制模式:錄制語音視訊、僅錄制語音、僅錄制視訊。

一.實作原理

  要實作這個demo,需涉及到以下幾個技術:

(1)在服務端采集指定使用者的語音、視訊資料。

(2)在服務端将圖像使用H264編碼,語音資料使用AAC編碼。

(3)将編碼後的資料按MP4格式的要求,儲存為MP4檔案。

(1)在OMCS的結構中,用戶端之間可以互相擷取到對方的攝像頭和麥克風的資料,是以,服務端可以作為一個虛拟的用戶端使用者(比如ID為“_Server”),連接配接到同一個程序中的OMCS多媒體伺服器。

(2)在服務端動态建立DynamicCameraConnector元件,連接配接到指定使用者的攝像頭。

(3)在服務端動态建立兩個MicrophoneConnector元件,接到指定使用者的麥克風。

(4)調用DynamicCameraConnector的GetCurrentImage方法,即可獲得所連接配接的攝像頭采集的視訊幀。

(5)預定MicrophoneConnector的AudioDataReceived事件,即可獲得所連接配接的麥克風采集的音頻資料。

(6)使用MFile将上述結果進行編碼并寫入mp4檔案。

二.實作代碼 

在伺服器端錄制語音視訊
在伺服器端錄制語音視訊

View Code

(1)由于在服務端錄制時,不需要顯示被錄制使用者的視訊,是以不用設定DynamicCameraConnector的Viewer(即不用調用其SetViewer方法來設定繪制視訊的面闆)。

(2)同樣,在服務端錄制時,不需要播放被錄制使用者的語音,是以,将MicrophoneConnector的Mute屬性設定為true即可。

(3)如果需要錄制視訊,則通過一個定時器(videoTimer)每隔100毫秒(即10fps)從DynamicCameraConnector采集一幀圖檔,并寫入錄制檔案。

(4)如果錄制的僅僅是圖像視訊(不包括音頻),采用的視訊編碼仍然為H264,但生成的錄制檔案也是.mp4檔案,而非.h264檔案,否則,生成的視訊檔案将無法正常播放。

三.Demo下載下傳

  服務端運作起來的截圖如下所示:

  

在伺服器端錄制語音視訊

   測試時,可按如下步驟:

(1)啟動demo的服務端。 

(2)修改用戶端配置檔案中的伺服器IP,然後,用不同的帳号在不同的機器上登入多個demo的用戶端。 

(3)在服務端界面上,選擇一個線上的使用者,點選“開始錄制”按鈕,即可進行錄制。錄制結束後,将在服務端的運作目錄下,生成以使用者ID為名稱的mp3/mp4檔案。 

  如你所想,我們可以将這個demo稍微做些改進,就可以支援在服務端同時錄制多個使用者的語音視訊。

  然而,就像本文開頭所說的,本Demo所展示的功能非常适合在類似網絡教育訓練的系統中,用于錄制老師的語音/視訊。但如果是在視訊聊天系統中,需要将聊天雙方的語音視訊錄制到一個檔案中,那麼,就要複雜一些了,那需要涉及到圖像拼接技術和混音技術了。我會在下篇文章中介紹另一個Demo,它就實作了這樣的目的。 

繼續閱讀