亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現語音視頻錄制-附demo源碼

2020-01-24 01:31:17
字體:
來源:轉載
供稿:網友

在很多語音視頻軟件系統中,經常有將實時的音頻或視頻錄制為文件保存到磁盤的需求,比如,視頻監控系統中錄制監控到的視頻、視頻會議系統中錄制整個會議的過程、語音通話系統中錄制完整的對話內容、等等?!?/p>

MFile組件(Oraycn.MFile.dll)是傲瑞實用組件之一,它可以將原始的語音數據和視頻數據按照指定的格式進行編碼,并將它們寫入到視頻文件(如.mp4)中。

一.緣起

      最近正在做的一個網絡招聘平臺的項目,其中有一個模塊是這樣的,應聘者可以通過該系統的客戶端錄制自己的視頻(自我介紹)上傳到服務器,而后,招聘者會在合適的時候瀏覽這些應聘者的視頻。該模塊涉及到的主要技術就是語音視頻錄制技術,它需要把從麥克風采集到的語音數據和從攝像頭采集到的視頻數據編碼并寫到.mp4文件中。

要完成這些功能,具體來說,需要解決如下幾個技術問題:

(1)麥克風數據采集

(2)攝像頭數據采集

(3)音頻數據編碼

(4)視頻數據編碼

(5)將編碼后的數據按.mp4文件格式寫入到文件容器中。

(6)保證音頻視頻播放的同步。

二.Demo實現

      如果要從頭開始一步步解決這些問題,將是非常艱難的挑戰。幸運的是,我們可以通過已有組件的組合來實現這些功能,語音視頻數據的采集我們可以借助OMCS框架完成,后續的語音視頻編碼并生成mp4文件,我們可以借助MFile組件完成。為了更方便地講解,這里我們將給出一個具體的demo,它可以錄制從本地攝像頭和本地麥克風采集的數據并生成mp4文件。demo運行的截圖如下所示:

     

      接下來,我們來說說在這個demo中是如何一個個解決上述問題的。

1.語音數據采集

      我們可以使用OMCS的MicrophoneConnector組件連接到自己的麥克風設備,這樣,揚聲器就會播放采集到的語音,而且,我們可以通過通過IMultimediaManager暴露的AudioPlayed事件,來捕獲正在播放的語音數據。

2.視頻數據采集

      同樣的,我們可以使用CameraConnector控件連接到自己的攝像頭設備,然后,定時器每隔100ms(假設幀頻為10fps)調用其GetCurrentImage方法獲得正在繪制的Bitmap。

3.后續步驟

       后續的4步都可以交由MFile組件搞定,我們大概看一下MFile組件中VideoFileMaker類的簽名,就知道怎么做了:

MFile 結構

對于使用者而言,MFile組件中的主要類的結構圖如下所示:

        其中,AudioFileMaker用于生成音頻文件、SilenceVideoFileMaker用于生成無聲的視頻文件、而VideoFileMaker用于生成既有聲音又有圖像的普通視頻文件。這三個類都從基類BaseMaker繼承,它們的使用方式也是一致的。接下來,我們僅僅詳細講解VideoFileMaker類的使用,SilenceVideoFileMaker 和 AudioFileMaker的使用方法可以類推之。

下面是VideoFileMaker類的public方法的簽名

代碼如下:

 public class VideoFileMaker :IDisposable {  /// <summary>  /// 初始化視頻文件。   /// </summary>  /// <param name="filePath">文件路徑</param>  /// <param name="videoCodec">視頻編碼格式</param>  /// <param name="videoWidth">視頻寬度</param>  /// <param name="videoHeight">視頻高度</param>  /// <param name="videoFrameRate">幀頻</param>  /// <param name="audioCodec">音頻編碼格式</param>  /// <param name="audioSampleRate">音頻采樣率?!咀ⅲ翰蓸游粩当仨殲?6位】</param>  /// <param name="audioChannelCount">聲道數</param>  /// <param name="autoSyncToAudio">如果是實時錄制,則可傳入true,以音頻為基準進行同步。</param>  void Initialize(string filePath, VideoCodecType videoCodec, int videoWidth, int videoHeight, int videoFrameRate, AudioCodecType audioCodec,       int audioSampleRate, int audioChannelCount, bool autoSyncToAudio);  /// <summary>  /// 添加音頻幀。  /// </summary>    void AddAudioFrame(byte[] audioframe);  /// <summary>  /// 添加視頻幀。如果autoSyncToAudio開啟,則自動同步到音頻。  /// </summary>    void AddVideoFrame(Bitmap frame);  /// <summary>  /// 添加視頻幀。  /// </summary>  /// <param name="frame">視頻幀</param>  /// <param name="timeStamp">離開始時的時間長度</param>    void AddVideoFrame(Bitmap frame, TimeSpan timeStamp);  /// <summary>  /// 關閉視頻文件。  /// </summary>  /// <param name="waitFinished">如果還有幀等待寫入文件,是否等待它們全部寫入文件。</param>  void Close(bool waitFinished); }

      首先調用Initialize方法完成初始化,然后,循環調用AddAudioFrame和AddVideoFrame方法,當完成視頻錄制時,則調用Close方法,即可。很簡單,不是嗎?

4.主要代碼

      首先,我們以aa01用戶登錄到OMCS服務器,然后,在拖拽一個CameraConnector控件和一個MicrophoneConnector組件到主窗體上,然后,讓它們都連到自己的攝像頭和麥克風。

this.multimediaManager = MultimediaManagerFactory.GetSingleton();    this.multimediaManager.Initialize("aa01", "", "127.0.0.1", 9900); this.cameraConnector1.BeginConnect("aa01"); this.microphoneConnector1.BeginConnect("aa01");

       接下來,我們初始化VideoFileMaker組件:

 this.videoFileMaker.Initialize("test.mp4", VideoCodecType.H264, this.multimediaManager.CameraVideoSize.Width, this.multimediaManager.CameraVideoSize.Height, 10, AudioCodecType.AAC, 16000, 1, true); this.timer = new System.Threading.Timer(new System.Threading.TimerCallback(this.Callback), null ,0, 100); this.multimediaManager.AudioPlayed += new ESBasic.CbGeneric<byte[]>(multimediaManager_AudioPlayed); 

     參數中設定,使用h.264對視頻進行編碼,使用aac對音頻進行編碼,并生成mp4格式的文件。然后,我們可以通過OMCS獲取實時的音頻數據和視頻數據,并將它們寫到文件中。

 void multimediaManager_AudioPlayed(byte[] audio) {  this.videoFileMaker.AddAudioFrame(audio); } private void Callback(object state) {  Bitmap bm = this.cameraConnector1.GetCurrentImage();  this.videoFileMaker.AddVideoFrame(bm); }

      當想結束錄制時,則調用Close方法:

this.videoFileMaker.Close(true); 

    這樣錄制生成的test.mp4文件就可以直接用我們的QQ影音或暴風影音來播放了。

      更多細節,請查看demo源碼。

三.Demo下載

點擊此處下載Demo源碼

2014.11.26 現在錄制本地的語音、視頻、屏幕的最好的方案是MCapture + MFile,而不是通過OMCS繞一大圈,相應的Demo源碼下載:Oraycn.RecordDemo.rar 。

當然,如果是遠程錄制語音、視頻、屏幕,最好的方案是OMCS + MFile。

以上就是本文針對C#實現語音視頻錄制-附demo源碼的全部內容,希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲 日韩 国产第一| 在线日韩欧美视频| 久久精品久久久久久国产 免费| 国产免费一区二区三区在线观看| 九九热99久久久国产盗摄| 欧美一区二三区| 亚洲国产精彩中文乱码av在线播放| 日韩精品高清在线观看| 91tv亚洲精品香蕉国产一区7ujn| 国产精品激情av在线播放| 国产日韩在线视频| 国产精品自产拍在线观| 精品美女永久免费视频| 欧美亚洲日本网站| 亚洲iv一区二区三区| 欧美一级淫片丝袜脚交| 亚洲大胆人体视频| 久久成人18免费网站| 欧美日韩美女视频| 狠狠色狠狠色综合日日五| 亚洲jizzjizz日本少妇| 久久激情五月丁香伊人| 欧美亚洲成人精品| 日本91av在线播放| 欧美激情xxxx性bbbb| 国产精品一区二区三区毛片淫片| 欧美成人激情在线| 亚洲综合成人婷婷小说| 日韩精品电影网| 欧美性xxxx在线播放| 精品自拍视频在线观看| 成人h片在线播放免费网站| 成人欧美在线视频| 亚洲第一视频网| 尤物99国产成人精品视频| 国产一区二区日韩| 97超碰国产精品女人人人爽| 欧美日韩激情视频| 国产人妖伪娘一区91| 高清亚洲成在人网站天堂| 亚洲视频999| 国产精品久久久久久中文字| 亚洲国产精品va在线观看黑人| 精品动漫一区二区| 亚洲综合色av| 欧美在线播放视频| 日本韩国欧美精品大片卡二| 国产精品xxx视频| 精品国产一区二区三区久久| 精品国产福利视频| 国产精品久久久久久久久久新婚| 亚洲免费av网址| 国产精品91一区| 亚洲第一中文字幕| 欧美激情videoshd| 欧美激情精品久久久久久| 欧美高跟鞋交xxxxhd| 国产精国产精品| 国产又爽又黄的激情精品视频| 91精品免费视频| 92国产精品视频| 狠狠色香婷婷久久亚洲精品| 成人午夜在线观看| 久热精品视频在线观看一区| 国产精品精品久久久久久| 欧日韩在线观看| 91爱视频在线| 欧美激情国产日韩精品一区18| 在线丨暗呦小u女国产精品| 黑人精品xxx一区| 在线亚洲国产精品网| 一本大道久久加勒比香蕉| 色狠狠av一区二区三区香蕉蜜桃| 精品中文字幕视频| 欧美大胆在线视频| 日韩精品在线观看网站| 色偷偷偷综合中文字幕;dd| 欧美在线视频在线播放完整版免费观看| 九九热在线精品视频| 日韩av在线免费播放| 国产精品88a∨| 国产精品一区二区三区在线播放| 中文字幕精品在线视频| 最近中文字幕日韩精品| 亚洲欧美综合图区| 国产黑人绿帽在线第一区| 91超碰caoporn97人人| 97久久久久久| 日韩欧美中文字幕在线播放| 亚洲аv电影天堂网| 欧美巨猛xxxx猛交黑人97人| 欧美激情亚洲另类| yw.139尤物在线精品视频| 国产精品视频网| 亚洲欧美制服第一页| 黄色一区二区三区| 亚洲自拍偷拍网址| 亚洲一区二区三区乱码aⅴ| 欧美国产精品日韩| 精品在线小视频| 国产97在线|日韩| 伊人青青综合网站| 国产日韩欧美中文| 亚洲综合中文字幕在线观看| 欧美电影第一页| 中文字幕不卡在线视频极品| 久久精品成人欧美大片| 8050国产精品久久久久久| 日韩欧美黄色动漫| 亚洲国产99精品国自产| 亚洲国产精品字幕| 欧洲中文字幕国产精品| 91国内产香蕉| 九九久久综合网站| 日韩一区av在线| 欧美一区二区三区免费视| 中文字幕欧美精品在线| 最近中文字幕mv在线一区二区三区四区| 欧美成人精品三级在线观看| 亚洲jizzjizz日本少妇| 国产一区二区动漫| 伊人一区二区三区久久精品| 色与欲影视天天看综合网| 欧美性猛交xxxx乱大交3| 国内精品美女av在线播放| 欧美最猛黑人xxxx黑人猛叫黄| 中文字幕精品www乱入免费视频| 欧美中文在线免费| 日韩欧美国产中文字幕| 日韩电影网在线| 亚洲第一偷拍网| 日韩成人激情在线| 久久精品国产精品| 欧美午夜无遮挡| 国产在线日韩在线| 国产精品久久久久久久久久新婚| 91国在线精品国内播放| 欧美亚洲国产视频小说| 日韩中文综合网| 久久久久久久久久久免费| 精品女同一区二区三区在线播放| 亚洲v日韩v综合v精品v| 成人免费在线视频网站| 欧美怡春院一区二区三区| 曰本色欧美视频在线| 最近中文字幕2019免费| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品极品尤物在线观看| 国产精品视频自在线| 欧美成人免费全部| 亚洲a在线观看| 国产午夜精品理论片a级探花| 亚洲欧美日本另类| 欧美丝袜美女中出在线| 久久影院免费观看| 97久久久免费福利网址| 亚洲男人天堂2023| 在线色欧美三级视频| 欧美电影在线播放| 91九色蝌蚪国产| 日韩av电影手机在线观看| 久久久成人精品视频| 国产不卡av在线免费观看| 亚洲加勒比久久88色综合|