當前位置:首頁 » 雲伺服器 » webrtc伺服器搭建

webrtc伺服器搭建

發布時間: 2022-01-10 12:38:46

『壹』 基於android的webrtc伺服器怎麼搭

android客戶端和伺服器端是基於IntentService的,具體如下:後台使用簡單的servlet,支持GET或POST。這個servlet最終返回給前台一個字元串flag,值是true或false,表示登錄是否成功。然後在安卓的ADT上創建一個安卓項目,建立兩個Activity,分別作為登錄界面和登錄成功界面。HTTP的訪問公共類,用於處理GET和POST請求。IntentService服務,用於在後台以隊列方式處理耗時操作。在AndroidManifest.xml中注冊IntentService。注意uses-permission節點,為程序開啟訪問網路的許可權。登陸界面處理,注意按鈕監聽事件中,使用Intent將要傳遞的值傳給service。接收廣播類中,同樣使用Intent將要傳遞的值傳給下一個Activity。在onCreate()中,動態注冊接收廣播類的實例receiver。在接收廣播類中,不要使用完畢後忘記注銷接收器,否則會報一個()?的異常。

『貳』 如何搭建SimpleWebRTC信令伺服器 / 藍訊

CDN加速節點就是專門用來做緩存的伺服器,把客戶源站的網站內容緩存到各地的CDN節點,從而使得各地的訪問者可以從就近的節點上訪問到想要的內容,加快訪問速度。

『叄』 如何在windows環境下配置webrtc

1、首先安裝VisualStudio2008,打上ServicePack1補丁包(也可以安裝VisualStudio 2010,只是後面的編譯過程會稍微麻煩一些)。
2、安裝MicrosoftSDK 7.1,安裝SDK7.1的時候,默認SDK7.1安裝在C盤下。一定要注意SDK7.1的安裝路徑,因為在WebRTC項目在配置中有規定,配置文件在.. .\trunk\src\build 名為common.gypi 的文件,如果你不想安裝在C盤下,那麼就要修改一下這個配置文件了,不然的話,的時候就會出現各種警告問題的。
3、安裝MicrosoftDirectXSDK (June 2010)。
4、安裝Python2.6(也可以是其他的版本,不過經過測試安裝2.6版本出現的問題是最少的)版本,將Python安裝目錄添加到系統環境變數Path中(例如我的安裝目錄是D:\WebRTC\Install\Python26)
5、接下來會有兩種編譯下載方式,如下所述:
5.1、已經存在完整的depot_tools編譯下載包(在文件夾中已給出)的情況:
5.1.1、把解壓後的depot_tools路徑添加到Path系統環境變數當中(例如我的路徑是D:\WebRTC\Install\depot_tools)
5.2、還沒有存在depot_tools編譯下載包情況下的編譯環境的搭建
5.2.1、安裝GIT工具,下載並安裝Git、Tortoisegit:(本機:Git-1.7.11-preview20120710,TortoiseGit-2012-09-08-cb73a5c-32bit)
選擇適合自己系統的版本,下載並安裝(註:TortoiseGit只是一個GUI,必須安裝Git。)
把Git中bin目錄手動添加到系統環境變數Path中,TortoiseGit安裝時會找到Git目錄並自動配置好。
5.2.2、下載、安裝獲取源碼的工具SVN(代碼版本管理工具)TortoiseSVN
5.2.3、下載並配置depot_tools,將文件夾路徑添加到環境變數Path中。
建立一個存放depot_tools的文件夾,cmd進入該目錄(cdd:/depot_tools ;d: ;...)
6、建立WebRTC的存放目錄(例如我這里的存放目錄是D:\WebRTC\WebRtcPj)
5.1.3、打開DOS窗口,進入剛才新建的WebRTC存放目錄,
按順序輸入:
A:gclient config --name trunk

B:gclient sync --force(獲取以前版gclient sync --revision)同步解決方案

C:gclient runhooks--force 生成本地的解決方案

7、打開VS並導入peerconnection_all.sln項目,並按如下要求配置VS環境:Tools|Options|ProjectsandSolutions|VC++Directories

可執行文件:

1. C:\Program Files\MicrosoftSDKs\Windows\v7.1\Bin

2. D:\WebRTC\Install\Python26

3. C:\Program Files\Microsoft DirectX SDK(June2010)\Utilities\bin\x86

包含文件:

C:\Program Files\Microsoft DirectX SDK(June 2010)\Include
C:\Program Files\MicrosoftSDKs\Windows\v7.1\Include
庫文件:

C:\Program Files\MicrosoftSDKs\Windows\v7.1\Lib
C:\Program Files\Microsoft DirectX SDK(June 2010)\Lib\x86
生成的可執行文件位於「\trunk\Debug」下,如「peerconnection_server.exe」和「peerconnection_client.exe」。

『肆』 webrtc哪些程序放在伺服器

一) sipdroid
1)架構
sip協議棧使用java實現,音頻Codec使用skype的silk(Silk編解碼是Skype向第三方開發人員和硬體製造商提供免版稅認證(RF)的Silk寬頻音頻編碼器)實現。NAT傳輸支持stun server.
2)優缺點:
NAT方面只支持STUN,無ICE框架,如需要完全實現P2P視頻通話需要實現符合ICE標準的客戶端,音頻方面沒看到AEC等技術,視頻方面還不是太完善,目前只看到調用的是系統自帶的MediaRecorder,並沒有自己的第三方音視頻編解碼庫。
3)實際測試:
基於sipdroid架構的話,我們要做的工作會比較多,(ICE支持,添加迴音消除,NetEQ等gips音頻技術,添加視頻硬體編解碼codec.),所以就不做測試了。

二) imsdroid
1)架構:
基於doubango(Doubango 是一個基於3GPP IMS/RCS 並能用於嵌入式和桌面系統的開源框架。該框架使用ANSCI-C編寫,具有很好的可移植性。並且已經被設計成非常輕便且能有效的工作在低內存和低處理能力的嵌入式系統上。蘋果系統上的idoubs功能就是基於此框架編寫) .音視頻編碼格式大部分都支持(H264(video),VP8(video),iLBC(audio),PCMA,PCMU,G722,G729)。NAT支持ICE(stun+turn)
2)效果實測
測試環境:公司區域網內兩台機器互通,伺服器走外網sip2sip
音頻質量可以,但是AEC打開了還是有點迴音(應該可以修復)。視頻馬賽克比較嚴重,延遲1秒左右。
3)優缺點
imsdroid目前來說還是算比較全面的,包括音視頻編解碼,傳輸(RTSP,ICE),音頻處理技術等都有涉獵。doubango使用了webrtc的AEC技術,但是其調用webrtc部分沒有開源,是用的編譯出來的webrtc的庫。如果要改善音頻的話不太方便,Demo的音頻效果可以,視頻效果還是不太理想。

三)csipsimple
1)sip協議棧用的是pjsip,音視頻編解碼用到的第三方庫有ffmpeg(video),silk(audio),webrtc.默認使用了webrtc的回聲演算法。支持ICE協議。
2)優缺點:
csipsimple架構比較清晰,sip協議由C實現,java通過JNI調用,SIP協議這一塊會比較高效。其VOIP各個功能也都具備,包括NAT傳輸,音視頻編解碼。並且該項目跟進新技術比較快,官方活躍程度也比較高。如果做二次開發可以推薦這個。
3)實測效果
測試環境:公司區域網內兩台機器互通,伺服器走外網sip2sip
音頻質量可以,無明顯迴音,視頻需要下插件,馬賽克比imsdroid更嚴重。

四)Linphone

這個是老牌的sip,支持平台廣泛 windows, mac,ios,android,linux,技術會比較成熟。但是據玩過的同事說linphone在Android上的bug有點多,由於其代碼實在龐大,所以我暫時放棄考慮Linphone.不過如果誰有跨平台的需要,可以考慮Linphone或者imsdroid和下面的webrtc.。。。好像現在開源軟體都跨平台了。。。

五) webrtc

imsdroid,csipsimple,linphone都想法設法調用webrtc的音頻技術,本人也測試過Android端的webrtc內網視頻通話,效果比較滿意。但是要把webrtc做成一個移動端的IM軟體的話還有一些路要走,不過webrtc基本技術都已經有了,包括p2p傳輸,音視頻codec,音頻處理技術。不過其因為目前僅支持VP8的視頻編碼格式(QQ也是)想做高清視頻通話的要注意了。VP8在移動端的硬體編解碼支持的平台沒幾個(RK可以支持VP8硬體編解碼)。不過webrtc代碼里看到可以使用外部codec,這個還是有希望調到H264的。

總結:sipdroid比較輕量級,著重基於java開發(音頻codec除外),由於其音視頻編碼以及P2P傳輸這一塊略顯不足,不太好做定製化開發和優化。imsdroid,遺憾就是直接調用webrtc的庫,而最近webrtc更新的比較頻繁,開發比較活躍。如果要自己在imsdroid上更新webrtc擔心兼容性問題,希望imsdroid可以直接把需要的webrtc相關源碼包進去。csipsimple的話,都是圍繞pjsip的,webrtc等都是以pjsip插件形式擴充的,類似gstreamer. webrtc如果有技術實力的開發公司個人還是覺得可以選擇這個來做,一個是google的原因,一個是其視頻通話相關關鍵技術都比較成熟的原因。個人覺得如果能做出來,效果會不錯的。

『伍』 新手求助 Intel WebRTC SDK的伺服器搭建問題

修改伺服器管理員與來賓賬戶名,禁用來賓賬戶。
管理員賬戶使用復雜密碼
開啟防火牆,用到哪些埠,就開哪些。
打開漏洞更新,最好先更新好漏洞,再設置外網到伺服器的通訊
在「本地安全設置」中加強設置,如:「用戶許可權」、「安全選項」等

有必要可以設置「本地安全設置」的「ip安全設置」
根據必要安裝功能與軟體,伺服器安裝的東西遵循越少越好
修改遠程埠
優化系統,如關閉不用的共享
關閉不適用的服務,如:DHCP
啟用SYN攻擊保護(網上可找到具體操作)
清理系統垃圾
暫時只想到這么多,有些要根據具體情況具體分析。

『陸』 webrtc伺服器需要多少帶寬

webrtc中的帶寬自適應演算法分為兩種:
1,發端帶寬控制,原理是由rtcp中的丟包統計來動態的增加或減少帶寬,在減少帶寬時使用TFRC演算法來增加平滑度。
2,收端帶寬估算,原理是並由收到rtp數據,估出帶寬;用卡爾曼濾波,對每一幀的發送時間和接收時間進行分析,從而得出網路帶寬利用情況,修正估出的帶寬。

兩種演算法相輔相成,收端將估算的帶寬發送給發端,發端結合收到的帶寬以及丟包率,調整發送的帶寬。

下面具體分析兩種演算法:

2, 接收端帶寬估算演算法分析
結合文檔http://tools.ietf.org/html/draft-alvestrand-rtcweb-congestion-02以及源碼webrtc/moles/remote_bitrate_estimator/overuse_detector.cc進行分析
帶寬估算模型: d(i) = dL(i) / c + w(i) d(i)兩幀數據的網路傳輸時間差,dL(i)兩幀數據的大小差, c為網路傳輸能力, w(i)是我們關注的重點, 它主要由三個因素決定:發送速率, 網路路由能力, 以及網路傳輸能力。w(i)符合高斯分布, 有如下結論:當w(i)增加是,佔用過多帶寬(over-using);當w(i)減少時,佔用較少帶寬(under-using);為0時,用到恰好的帶寬。所以,只要我們能計算出w(i),即能判斷目前的網路使用情況,從而增加或減少發送的速率。

演算法原理:即應用kalman-filters
theta_hat(i) = [1/C_hat(i) m_hat(i)]^T // i時間點的狀態由C, m共同表示,theta_hat(i)即此時的估算值
z(i) = d(i) - h_bar(i)^T * theta_hat(i-1) //d(i)為測試值,可以很容易計算出, 後面的可以認為是d(i-1)的估算值, 因此z(i)就是d(i)的偏差,即resial
theta_hat(i) = theta_hat(i-1) + z(i) * k_bar(i) //好了,這個就是我們要的結果,關鍵是k值的選取,下面兩個公式即是取k值的,具體推導見後繼博文。
E(i-1) * h_bar(i)
k_bar(i) = --------------------------------------------
var_v_hat + h_bar(i)^T * E(i-1) * h_bar(i)
E(i) = (I - K_bar(i) * h_bar(i)^T) * E(i-1) + Q(i) // h_bar(i)由幀的數據包大小算出
由此可見,我們只需要知道當前幀的長度,發送時間,接收時間以及前一幀的狀態,就可以計算出網路使用情況。
接下來具體看一下代碼:

[cpp] view
plain

void OveruseDetector::UpdateKalman(int64_t t_delta,
double ts_delta,
uint32_t frame_size,
uint32_t prev_frame_size) {
const double min_frame_period = UpdateMinFramePeriod(ts_delta);
const double drift = CurrentDrift();
// Compensate for drift
const double t_ts_delta = t_delta - ts_delta / drift; //即d(i)
double fs_delta = static_cast<double>(frame_size) - prev_frame_size;

// Update the Kalman filter
const double scale_factor = min_frame_period / (1000.0 / 30.0);
E_[0][0] += process_noise_[0] * scale_factor;
E_[1][1] += process_noise_[1] * scale_factor;

if ((hypothesis_ == kBwOverusing && offset_ < prev_offset_) ||
(hypothesis_ == kBwUnderusing && offset_ > prev_offset_)) {
E_[1][1] += 10 * process_noise_[1] * scale_factor;
}

const double h[2] = {fs_delta, 1.0}; //即h_bar
const double Eh[2] = {E_[0][0]*h[0] + E_[0][1]*h[1],
E_[1][0]*h[0] + E_[1][1]*h[1]};

const double resial = t_ts_delta - slope_*h[0] - offset_; //即z(i), slope為1/C

const bool stable_state =
(BWE_MIN(num_of_deltas_, 60) * fabsf(offset_) < threshold_);
// We try to filter out very late frames. For instance periodic key
// frames doesn't fit the Gaussian model well.
if (fabsf(resial) < 3 * sqrt(var_noise_)) {
UpdateNoiseEstimate(resial, min_frame_period, stable_state);
} else {
UpdateNoiseEstimate(3 * sqrt(var_noise_), min_frame_period, stable_state);
}

const double denom = var_noise_ + h[0]*Eh[0] + h[1]*Eh[1];

const double K[2] = {Eh[0] / denom,
Eh[1] / denom}; //即k_bar

const double IKh[2][2] = {{1.0 - K[0]*h[0], -K[0]*h[1]},
{-K[1]*h[0], 1.0 - K[1]*h[1]}};
const double e00 = E_[0][0];
const double e01 = E_[0][1];

// Update state
E_[0][0] = e00 * IKh[0][0] + E_[1][0] * IKh[0][1];
E_[0][1] = e01 * IKh[0][0] + E_[1][1] * IKh[0][1];
E_[1][0] = e00 * IKh[1][0] + E_[1][0] * IKh[1][1];
E_[1][1] = e01 * IKh[1][0] + E_[1][1] * IKh[1][1];

// Covariance matrix, must be positive semi-definite
assert(E_[0][0] + E_[1][1] >= 0 &&
E_[0][0] * E_[1][1] - E_[0][1] * E_[1][0] >= 0 &&
E_[0][0] >= 0);

slope_ = slope_ + K[0] * resial; //1/C
prev_offset_ = offset_;
offset_ = offset_ + K[1] * resial; //theta_hat(i)

Detect(ts_delta);
}

[cpp] view
plain

BandwidthUsage OveruseDetector::Detect(double ts_delta) {
if (num_of_deltas_ < 2) {
return kBwNormal;
}
const double T = BWE_MIN(num_of_deltas_, 60) * offset_; //即gamma_1
if (fabsf(T) > threshold_) {
if (offset_ > 0) {
if (time_over_using_ == -1) {
// Initialize the timer. Assume that we've been
// over-using half of the time since the previous
// sample.
time_over_using_ = ts_delta / 2;
} else {
// Increment timer
time_over_using_ += ts_delta;
}
over_use_counter_++;
if (time_over_using_ > kOverUsingTimeThreshold //kOverUsingTimeThreshold是gamma_2, gamama_3=1
&& over_use_counter_ > 1) {
if (offset_ >= prev_offset_) {
time_over_using_ = 0;
over_use_counter_ = 0;
hypothesis_ = kBwOverusing;
}
}
} else {
time_over_using_ = -1;
over_use_counter_ = 0;
hypothesis_ = kBwUnderusing;
}
} else {
time_over_using_ = -1;
over_use_counter_ = 0;
hypothesis_ = kBwNormal;
}
return hypothesis_;
}

『柒』 Linux怎麼搭建Web伺服器

Linux怎麼搭建Web伺服器
1,基於apache的web伺服器基礎搭建:
(1)實驗環境:一台ip為192.168.10.10的rhel5.9主機作為web伺服器,一台ip為192.168.10.15的win7主機作為測試機
(2)查看服務主機軟體是否安裝
[root@ser1 ~]# rpm -q httpd httpd-manual httpd-devel
package httpd is not installed
package httpd-manual is not installed
package httpd-devel is not installed
(3)安裝軟體包
[root@ser1 ~]# yum install -y httpd httpd-manual httpd-devel
(4)啟動服務
[root@ser1 ~]# service httpd start
啟動httpd: [確定]
[root@ser1 ~]# chkconfig httpd on
(5)在win7上測試,無網頁預設下顯示紅帽測試頁
<報錯頁面存放位置/var/www/error/noindex.html>
.jpg
(6)打開配置文件
[root@ser1 ~]# vim /etc/httpd/conf/httpd.conf
可獲得以下重要欄位:
目錄設置:
<Directory 目錄> .. .. </Directory>
訪問位置設置:
<LocationURL> .. .. </Location>
虛擬主機設置:
<VirtualHost 監聽地址> .. .. </VirtualHost>
常用的全局設置參數:
ServerName本站點的FQDN名稱
DocumentRoot網頁文檔的根目錄:預設/var/www/html/
DirectoryIndex默認索引頁/首頁文件:一般設為index.html index.php
ErrorLog錯誤日誌文件的位置
CustomLog 訪問日誌文件的位置
Listen 監聽服務的IP地址、埠號
ServerRoot 服務目錄:/etc/httpd/
Timeout網路連接超時,默認 300 秒
KeepAlive是否保持連接,可選On或Off
MaxKeepAliveRequests每次連接最多處理的請求數
KeepAliveTimeout保持連接的超時時限
Include 可包含其他子配置文件: /etc/httpd/conf.d/
(7)創建測試網頁
[root@ser1 ~]# vim /var/www/html/index.html
<h1>
This is a test page !!!
</h1>
~
(8)win7下測試,主頁變為測試網頁
.jpg
2,基於apache的web伺服器的訪問控制:
(1)web服務的地址限制
I,rder 配置項,定義控制順序
allow,deny 先允許後拒絕,預設拒絕所有;沖突時,拒絕生效;allow不設置,拒絕所有
deny,allow 先拒絕後允許,預設允許所有;沖突時,允許生效;deny不設置,允許所有
II,Allow/Deny from 配置項,設置許可權
Allow from 地址1 地址2 .. ..
Deny from 地址1 地址2 .. ..
配置如下:
[root@ser1 ~]# vim /etc/httpd/conf/httpd.conf
331 #
332 Orderallow,deny
333 Allowfrom 192.168.20.0/24
334
335 </Directory>
[root@ser1 ~]# service httpd restart……重啟服務
停止httpd: [確定]
啟動httpd: [確定]
在win7上測試,測試完成並還原配置文件:
.jpg
看過「 Linux怎麼搭建Web伺服器 」的人還看了:
1.win7如何搭建Web伺服器
2.基於WebRTC的瀏覽器端Web伺服器的研究論文
3.LINUX下配置管理APACHE伺服器的方法
4.如何安全設置Apache Web伺服器
5.全國網路技術水平考試二級實踐指導書

『捌』 如何利用webrtc端快速搭建直播框架

這個問題可以這樣回答!

『玖』 apache怎麼搭建webrtc

步驟如下: 1、打開Eclipse。 2、點擊菜單欄的「Window」,然後選擇「Preferences」。 3、點擊彈出窗口的「Server」,然後選擇「Runtime Environment」,然後點擊右邊的「Add」按鈕。 4、選擇彈出窗口上的「Apache」,然後選擇Tomcat版本,然後單擊「Next」。

熱點內容
最近上傳視頻 發布:2024-12-25 21:05:39 瀏覽:393
php招聘源碼 發布:2024-12-25 21:05:38 瀏覽:988
c語言輸入數組賦值 發布:2024-12-25 21:01:43 瀏覽:652
22款賓士e買哪個配置 發布:2024-12-25 20:54:08 瀏覽:737
金鏟鏟之戰怎麼看之前的伺服器 發布:2024-12-25 20:52:36 瀏覽:448
unix環境高級編程英文版 發布:2024-12-25 20:50:35 瀏覽:291
我的世界電腦版伺服器如何改實驗模式 發布:2024-12-25 20:41:57 瀏覽:129
資料庫刪過程 發布:2024-12-25 20:39:38 瀏覽:447
創建sql存儲過程 發布:2024-12-25 20:29:14 瀏覽:531
python目錄存在 發布:2024-12-25 20:18:51 瀏覽:672