服務端與客戶端的區別是什麼?簡單地說:一般客戶端負責和用戶的交互,也就是屏幕顯示(UI/UE),服務端負責數據存儲,也就是你的用戶數據,而計算能力,客戶端和服務端一般各負責一部分。
1、服務端
在部署服務端環境其實包含很多東西的,最常用的web服務nginx,資料庫Mysql、Nosql,api開發最多的三種選擇:
java環境,需要jdk,tomcat/jboss
php環境,需要安裝php,odp
lua環境,需要安裝lua、luajit
考慮使用緩存技術,則主要包含redis和memcached。如果還要其他的日誌統計(kafka什麼的)需求則還需要更多的環境,我們這裡不討論,只是簡單敘述
對於直播而言,我們需要部署兩個東西,nginx(含nginx-rtmp-module)、ffmpeg,這兩個是直播服務端的關鍵,下面我們簡單講述如何安裝nginx(含nginx-rtmp-module)和ffmpeg以及如何配置nginx.conf。
首先安裝nginx和nginx-rtmp-module,在安裝nginx的時候,會需要openssl、pcre、zlib這幾個庫。cd 進入nginx解壓目錄
其中–prefix是指安裝後nginx的目錄,–with-pcre需要pcre庫,/path/to/your/pcre/是指的pcre原始碼路徑,其他的同理。–add-module=/path/to/your/nginx-rtmp-module 這個是添加nginx-rtmp-module,將nginx-rtmp-module嵌入到nginx中,這樣是nginx的強大之處-插件功能。
如果安裝成功後會,在終端中輸入 ffmpeg -version會顯示相關的信息。如果沒有則可能沒有安裝成功。
安裝完成之後我們來看看nginx.conf的配置信息。
其中http相關的標籤我這邊不做詳細的介紹。下面我們看看rtmp標籤,rtmp標籤的意思是聲明一個 RTMP 實例。在rtmp標籤下面有server,它的意思是給 NGINX 添加一個監聽埠以接收 RTMP 連接。
application標籤是創建一個 RTMP 應用,application名的模式並不類似於 http location。
2、客戶端
部署客戶端環境:在android平臺,編譯導入android studio等等過程是很複雜的,ios平臺還好。
播放流程的解析:
解碼,縮放,時間基線選擇,緩存隊列,畫面渲染,聲音播放等等。
整合數據是為了將音頻數據和視頻數據添加到相應的隊列中,以便播放使用,針對音視頻中一些基本參數的,做解碼,播放速度控制,音視頻同步等等。
3、直播伺服器配置:
直播伺服器的各方面參數配置要看直播平臺用戶的註冊數量,要能夠滿足用戶在線的良好體驗為基準。舉例來說,480P高清視頻碼率一般可以受用4-8MBPS的帶寬,而每天總計有200人在線,且同時有20人在線,要保證不會卡頓,那麼視頻的比特率要在600KBPS以上,20個人一起在線播放,就需要0.6*20=12Mbps帶寬,這樣才能夠保證完全濟的進行播放。如果是國內的直播,那麼伺服器配置沒辦法具體到哪個省市,建議選擇多線路的伺服器。