作者:位元組流動
來源:
https://blog.csdn.net/Kennethdroid/article/details/86418725Nginx
Nginx 是由俄羅斯人
Igor Sysoev編寫的輕量級 Web 伺服器,發音為 “engine x”,也可用作反向代理和負載均衡器,于 2004 年公開釋出,遵循 BSD 開源許可,它以高穩定性、豐富的功能以及低系統開銷而出名。Nginx 也是一種子產品化的伺服器,基于 Nginx 可以靈活添加各種功能子產品,如 HTTP 子產品、WebSocket 子產品、RTMP 子產品等,不同子產品占用不同的端口,互相獨立,如本文中要使用的 RTMP 子產品預設端口為 1935 。
本文中的 Nginx 伺服器隻添加了一個 RTMP 子產品,用作一個簡單的流媒體伺服器。
RTMP 協定
RTMP ( Real Time Message Protocol )協定是一種實時資訊傳輸協定,由 Adobe 公司開發,用來解決多媒體資料傳輸流的多路複用( Multiplexing )和分包( packetizing )的問題,它是應用層協定,傳輸層通常基于 TCP 實作。RTMP 協定在前期并未受到太多的重視,近兩年随着 VR 以及視訊直播領域的火熱,RTMP 協定正逐漸成為主流。
直播架構

搭建一個簡易的直播架構需要三個角色:直播(推流)用戶端,流媒體伺服器和引流用戶端。
安裝 Nginx
環境: Ubuntu 16.04 ,注意:若使用阿裡雲主機需要配置安全組規則,開放 80 、1935 等端口。
安裝 nginx 和 nginx-rtmp 編譯依賴工具:
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
工作目錄:
mkdir nginx
chmod +x -R nginx/
cd live
下載下傳 nginx 和 nginx-rtmp 源碼:
wget http://nginx.org/download/nginx-1.8.1.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
解壓:
# 安裝 unzip
# sudo apt-get install unzip
tar -zxvf nginx-1.8.1.tar.gz
unzip master.zip
添加 rtmp-nginx 子產品:
cd nginx-1.8.1
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
編譯、安裝:
# 編譯 nginx 源碼
make
# 安裝
sudo make install
啟動 Nginx 服務:
sudo service nginx start
# sudo service nginx stop 停止
打開浏覽器
http://127.0.0.1/或者輸入阿裡雲主機的公網 ip :
安裝 FFmpeg:
sudo apt-get install ffmpeg
# 檢視版本資訊
ffmpeg -v
配置 nginx 伺服器:
# 進入 nginx 安裝目錄
cd /usr/local/nginx
# 修改配置檔案 /usr/local/nginx/conf/nginx.conf
# 在配置檔案中添加以下代碼
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
exec ffmpeg -i rtmp://localhost/live/$name -threads 1 -c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 56k rtmp://localhost/live360p/$name;
}
application live360p {
live on;
record off;
}
}
}
重新開機 nginx 伺服器:
sudo service nginx restart
到目前為止,一個簡單的流媒體伺服器搭建完成,接下來将實作伺服器與用戶端之間的推流和引流。
NDK 開發系列文章:
- NDK 編譯的三種方式
- NDK 開發中引入第三方靜态庫和動态庫
- NDK 開發中 Native 與 Java 互動
- NDK POSIX 多線程程式設計
- NDK Android OpenSL ES 音頻采集與播放
- NDK FFmpeg 編譯
- NDK FFmpeg 音視訊解碼
- NDK 直播流媒體伺服器搭建
- NDK 直播推流與引流
- NDK 開發中快速定位 Crash 問題
「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。