多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > 即時通訊 音視頻錄制技術

即時通訊 音視頻錄制技術

來源:程序員人生   發布時間:2015-01-12 08:59:05 閱讀次數:3633次

音視頻錄制是音視頻解決方案中最重要的功能特性之1,特別是1些行業利用中音視頻錄制是最基本的功能需求,AnyChat作為業界1流的跨平臺音視頻解決方案,在音視頻錄制方面也提供了非常完善的整體解決方案,概括起來有以下特點:

1.   可針對單個用戶的音頻、視頻進行錄制;

2.   可針對通話雙方的音頻、視頻合成錄制,支持畫中畫、并列模式等多種合成方式

3.   可以自定義錄制參數,包括錄制碼率、視頻辯白率等;

4.   錄制的視頻格式可自定義,支持MP4(默許)、WMVFLVMP3等;

5.   可以在客戶端錄制,也能夠在中心服務器錄制

6.   可以在客戶端進行音視頻合成,中心服務器對合成音視頻流錄制,錄相服務器支持高并發;

7.   客戶端錄制支持的平臺包括:WindowsWebAndroidiOSLinux

8.   服務器錄制支持的平臺包括:WindowsLinuxx86x64);

9.   提供客戶端錄制API服務器錄制API接口,與上層業務無縫集成;


1、API接口定義
   AnyChat在客戶端提供的錄制API接口與回調事件為:

1.  // 用戶音、視頻錄制(擴大)

2.  BRAC_API DWORD BRAC_StreamRecordCtrlEx(DWORD dwUserId,BOOL bStartRecord, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr);

3.   

4.  // 錄相、快照任務完成擴大回調函數定義

5.  typedef void (CALLBACK *BRAC_RecordSnapShotEx_CallBack)(DWORD dwUserId, LPCTSTR lpFileName, DWORDdwElapse, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr, LPVOID lpUserValue);

復制代碼

AnyChat服務器端提供的錄制API接口與回調事件為:

1.  // 中心端錄相控制(擴大)

2.  BRAS_API DWORD BRAS_StreamRecordCtrlEx(DWORD dwUserId,BOOL bStartRecord, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr=NULL, DWORDdwRecordServerId=⑴);

3.   

4.  // 服務器錄相回調函數定義(擴大)

5.  typedef void (CALLBACK *BRAS_OnServerRecordEx_CallBack)(DWORD dwUserId, LPCTSTR lpFileName, DWORDdwElapse, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr, DWORDdwRecordServerId, LPVOID lpUserValue);

復制代碼

2、錄制API調用
   API第1個參數表示錄制對象,指錄制某1個用戶的音視頻,對合成錄制,只需要通過第3個參數(dwFlags)加入特定的標志便可實現。


   開始錄制和停止錄制均調用同1個API接口(如客戶端為:BRAC_StreamRecordCtrlEx),通過第2個參數(bStartRecord)來控制,當bStartRecord=TRUE1)時,表示開始錄制,當bStartRecord=FALSE0)時,表示停止錄制。


   當調用API開始錄制時,相當于下達了1個錄制任務,AnyChat內核將開始錄制,可以在客戶端調用APIBRAC_QueryUserState)來查詢錄制狀態;通過第3個參數(dwFlags)可控制錄制行動:是在客戶端錄制,還是在服務器錄制;是錄制音頻,還是音視頻1同錄制;是錄制單個用戶,還是通話雙方合成錄制等,具體利用可參考后續的錄制功能示例部份。


   當調用API停止錄制時,AnyChat內核會結束錄制任務,同時觸發上層利用的回調事件(如客戶端為:BRAC_RecordSnapShotEx_CallBack),在回調事件中,將錄制文件名(含路徑)、錄制時長、用戶自定義參數等信息返回給上層利用。


   AnyChat內核提供了兩個自定義參數,1個是整形(dwParam),1個是字符串類型(lpUserStr),在開始錄制時通過API接口傳入,在錄制完成回調事件中返回給上層利用,如可以通過字符串類型自定義參數來傳輸1個上層利用的業務流水號,則可以實現在回調事件中將錄制的文件名與業務流水號進行關聯,保存在數據庫中等功能。


3、錄制功能示例
下面以JavaScript腳本為例,針對經常使用的錄制功能給出示例代碼:

1、客戶端對單個用戶的音頻、視頻進行錄制,錄制為MP4格式

1.  BRAC_SetSDKOption(BRAC_SO_RECORD_FILETYPE, 0);   // 錄制為MP4格式

2.  var dwFlags = ANYCHAT_RECORD_FLAGS_VIDEO +ANYCHAT_RECORD_FLAGS_AUDIO;

3.  BRAC_StreamRecordCtrlEx(userid, 1,  dwFlags, 0,"Hello, world!");

復制代碼

2、客戶端對單個用戶的音頻進行錄制,錄制為MP3格式

1.  BRAC_SetSDKOption(BRAC_SO_RECORD_FILETYPE, 3);   // 錄制為MP3格式

2.  var dwFlags = ANYCHAT_RECORD_FLAGS_AUDIO;

3.  BRAC_StreamRecordCtrlEx(userid, 1,  dwFlags, 0,"Hello, world!");

復制代碼

3、客戶端對通話雙方的音頻、視頻進行錄制,錄制為MP4格式,畫中畫模式:

1.  BRAC_SetSDKOption(BRAC_SO_RECORD_FILETYPE, 0);   // 錄制為MP4格式

2.  var dwFlags = ANYCHAT_RECORD_FLAGS_VIDEO +ANYCHAT_RECORD_FLAGS_AUDIO + ANYCHAT_RECORD_FLAGS_MIXVIDEO +ANYCHAT_RECORD_FLAGS_MIXAUDIO;

3.  BRAC_StreamRecordCtrlEx(userid, 1,  dwFlags, 0,"Hello, world!");

復制代碼

4、其它
1、客戶端可以通過APIBRAC_SetSDKOption(BRAC_SO_RECORD_TMPDIR, path)來設置錄相文件保存路徑;

2、有關錄相文件改名:錄制完成以后,AnyChat將觸發上層利用的錄制完成回調事件,在回調事件中返回錄制文件名(含路徑),上層利用可以在回調事件中調用操作系統提供的文件改名函數(如Windows平臺為:MoveFile函數)對文件進行改名操作,AnyChat內核本身沒有提供對錄制文件名進行修改的接口;

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产日韩欧美一区 | 国产福利观看 | 可以看毛片的网址 | 欧美日韩国产最新一区二区 | 不卡免费视频 | 美女网站在线观看视频免费的 | 国产精品爽爽影院在线 | 中文在线日本免费永久18近 | jizzjizzjizz亚洲18| 亚洲视频 在线观看 | 亚洲资源站 | 欧美瑟图 | 香蕉狠狠再啪线视频 | 国产精品免费久久久免费 | 成人精品一区二区三区 | 久久国产精品一国产精品 | 久久99精品久久久久久黑人 | 欧美又粗又硬又黄又爽视频 | 伊人色婷婷 | 亚洲一区影院 | 欧美人欧美人与动人物性行为 | 亚洲国产精品日韩一线满 | 国产一级做a爱片久久片 | 美国伊人 | 天天做天天爱天天综合网 | 日本一区二区三区四区五区 | 成人在线小视频 | xx69视频 | 国产精品合集一区二区三区 | 国产精品久久久影院 | 国产h在线| 中文字幕乱码一二三四区 | 91精品国产99久久 | 欧美中文日韩 | 伊人操| 日韩在线aⅴ免费视频 | 久久亚洲人成国产精品 | 亚洲图片国产日韩欧美 | 被男人吃奶添下面好舒服视频 | 一级亚洲 | 日韩精品免费一级视频 |