nginx配置與直播項目
1、Centos 7.x 或 6.8
? 1舟铜、第一步 裝系統(tǒng) 7.x
? 2、第二步 遠(yuǎn)程登錄系統(tǒng) ssh
? 3、第三步 安裝yum install -y wget
? ? ? ? ? ? 源碼安裝 wget下載
? 4屯曹、第四步 換源 Centos7 默認(rèn)源? 阿里云的
? ? ? ? ? ? 并更新源 建立緩存
? 5、第五步 工具
? ? ? ? ? ? git
gcc 編譯器==>GNU開源計劃===>C? C++ Java等(源代碼 面向?qū)ο?面向過程 匯編==>機器語言)
二進(jìn)制? 010101010101
vi/vim 文本編輯器? g環(huán)境 k環(huán)境
make源碼編譯安裝? makefile文件? 編譯你當(dāng)前改變的文件 更新文件
make install
可執(zhí)行文件/ exe 指定的目錄中 /路徑中? bin? sbin? /usr/local/
/usr/local/nginx/sbin/nginx
openssl? ssh服務(wù)
加密? ssh? 免密登錄? 依賴
6惊畏、建立一個目錄 源碼編譯安裝 /usr/local/? /opt/? 各種放
? github
7恶耽、nginx-rtmp-module 安裝Nginx的rtmp協(xié)議的擴(kuò)展
? ? ? PC端
? ? ? 移動端--->操作系統(tǒng)--->iOS
? ? ? ? ? ? ? ? ? ? ? ? --->Android
? ? ? |---->手機
? ? ? |---->平板(電腦)
? ? ? |---->智能設(shè)備---->手表
? ? ? ? ? ? ? ? ? ? ---->手環(huán)
? ? ? ? ? ? ? ? ? ? ---->眼鏡/VR/AR/MR
? ? ? ? ? ? ? ? ? ? ---->互聯(lián)網(wǎng)電視APP
? ? ? ? ? ? ? ? ? ? ---->機頂盒Android
? ? ? ? ? ? ? ? ? ? ---->智能家電
? ? ? |---->區(qū)塊鏈設(shè)備
? ? ? ? ? ? |---->垃圾桶
? ? ? ? ? ? |---->加濕器 路由器 電視 冰箱? 洗機器 熱水器 運動 手機挖礦等
? ? ? ? ? ? ALL IN BLOCKCHAIN
? ? 8、解壓縮? tar -xzvf
? ? 9颜启、進(jìn)入到Nginx目錄里 進(jìn)行配置
? ? ? cd nginx-1.15.0
? ? ? ? ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
? ? ? http_ssl_module模塊/擴(kuò)展/ http https 阿里云ssl證書 免費/淘寶 25 二級域名
? nginx-rtmp-module 模塊/擴(kuò)展 用于推流
? ? 10偷俭、編譯源碼并安裝
? ? 建立在 makefile文件
? ? ? ? make
? ? ? ? make install
? ? ? ? 或
? ? ? ? make && make install
? ? 11、驗證nginx安裝成功
? ? 1./usr/local/nginx/sbin/nginx -V 查看版本號
2.直接啟動
? ? ? /usr/local/nginx/sbin/nginx
[root@liangshen sbin]# ./nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
? ? ? ? 3.80端口被占用
? 調(diào)錯
? L A M P? Apache2.0 阿帕奇? WEB服務(wù) 80端口
4.通過80端口 瀏覽器的方式訪問? nginx歡迎頁面 表示成功
? 不是 就需要改nginx的默認(rèn)端口 80? 8080 9000 9090 8888等
5.防火墻的端口限制
12缰盏、修改Nginx的conf文件 配置rtmp端口 1935端口
/usr/local/nginx
? rtmp{
? ? 17
? ? 18? server{
? ? 19
? ? 20? ? ? ? listen 1935;
? ? 21? ? ? ? chunk_size 5000;
? ? 22? ? ? ? ?
? ? 23? ? ? ? application hls{
? ? 24? ? ? ? ? ? live on;開啟實時直播? 實況直播
? ? ? ? ? ? ? ? record off; 不記錄數(shù)據(jù)
//沒有指定ts切片放在哪里
? ? 25? ? ? ? }
? ? 26? ? ? ?
? ? 27? ? }
? ? 28? ?
? ? 29 }
? ? 停止Nginx服務(wù) /usr/local/nginx/sbin/nginx -s stop
? ? 啟動并加載配置文件
? ? /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
[root@liangshen conf]# /usr/local/nginx/sbin/nginx
nginx: [emerg] bind() to 0.0.0.0:1935 failed (98: Address already in use)
? ? nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
? ? nginx: [emerg] bind() to 0.0.0.0:1935 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:1935 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:1935 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:1935 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
出現(xiàn)如上信息就表示直播服務(wù)器已經(jīng)搭建成功涌萤。
? ? 13、如何推流
? ? 1口猜、OBS軟件推流Mac Linux Windows(小白 非專業(yè)人士)
2负溪、FFmpeg音頻視頻處理的庫Mac? Linux Windows? Android iOS等 開發(fā)者
? ? OBS推流
rtmp://主機ip地址:1935/oldboy_live? room01
? ? 14、到/usr/local/nginx/html
? ? hls 目錄? 如果沒有就conf里沒有配置 1935
http服務(wù)里需要指定 推流上來 hls產(chǎn)生的ts切片的目錄
location /hls {?
? ? ? ? ? ? #server hls fragments?
? ? ? ? ? ? types{?
? ? ? ? ? ? ? ? application/vnd.apple.mpegurl m3u8;?
? ? ? ? ? ? ? ? video/mp2t ts;?
? ? ? ? ? ? }?
? ? ? ? ? ? alias /temp/hls;?
? ? ? ? ? ? expires -1;?
? ? ? ? }?
調(diào)試
VLC視頻播放器
? 5.1 拉流的過程 播放
? ? ? /usr/local/nginx/html/hls ls命令
? xxxx.m3u8
? http://x.x.x.x/hls/xxxx.m3u8
? XMPP協(xié)議
HLS協(xié)議 apple 研發(fā)
? 視頻流--->TS切片--->3S--->85kb--->HTTP
? N多個.ts
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:141
#EXT-X-TARGETDURATION:8
#EXTINF:8.333,
oldboy_live-141.ts
#EXTINF:8.334,
oldboy_live-142.ts
#EXTINF:8.333,
oldboy_live-143.ts
#EXTINF:8.333,
oldboy_live-144.ts
#EXTINF:8.334,
oldboy_live-145.ts
#EXTINF:8.333,
oldboy_live-146.ts
#EXTINF:8.333,
oldboy_live-147.ts
#EXTINF:8.334,
oldboy_live-148.ts
#EXTINF:8.333,
oldboy_live-149.ts
7济炎、HLS 原生就支持
8川抡、基于Flash HTTP協(xié)議 HTTPS訪問443
? 谷歌瀏覽器Chrome 就會禁用Flash
9、Nginx+RMTP協(xié)議+HLS協(xié)議
? ? ? ? ? 推流--->拉流
=================================================================
------------------------------------------------------------
ngin obs直播項目
Nginx定義
nginx是一個開源须尚,支持高性能崖堤,高并發(fā)的www服務(wù)和代理服務(wù)軟件。
特點
具有高并發(fā)恨闪,占用資源少倘感,功能豐富,具有反向代理負(fù)載均衡功能和緩存服務(wù)功能
項目步驟 ?
下載
yum install wget
更新源
yum makecache
更新系統(tǒng)文件
yum update
下載
yum install git gcc make pcre-devel openssl-devel (裝不上就分開一個一個裝)
cd /usr/local
下載
git clone git://github.com/arut/nginx-rtmp-module.git
安裝Nginx的rtmp協(xié)議的擴(kuò)展
wget http://nginx.org/download/nginx-1.15.0.tar.gz
解壓
tar xzf nginx-1.15.0.tar.gz
進(jìn)入nginx目錄里配置
cd nginx-1.15.0
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
編譯源碼冰安裝
make && make install
驗證nginx安裝成功
/usr/local/nginx/sbin/nginx -V
直接啟動
cd /usr/local/nginx/sbin
/usr/local/nginx/sbin/nginx
關(guān)閉防火墻
systemctl stop firewalld
systemctl status firewalld
cd /usr/local/nginx/conf
vim nginx.conf
11
12 events {
13? ? worker_connections? 1024;
14 }
15
16 rtmp{
17
18? server{
19
20? ? ? listen 1935;
21? ? ? chunk_size 5000;
22
23? ? ? application hls{
24? ? ? ? live on;
25? ? ? ? hls on;
26? ? ? ? record off;
27? ? ? ? hls_path /usr/local/nginx/html/hls;
28? ? ? ? hls_fragment 3s;
29? ? ? }
30
31? ? }
32
33 }
34 http {
35? ? include? ? ? mime.types;
36? ? default_type? application/octet-stream;
37
38? ? #log_format? main? '$remote_addr - $remote_user [$time_local] "$request" '
--------------------
58? ? ? ? #access_log? logs/host.access.log? main;
59
60? ? ? ? location / {
61? ? ? ? ? ? root? html;
62? ? ? ? ? ? index? index.html index.htm;
63? ? ? ? }
64 location /hls {
65? ? ? ? ? ? #server hls fragments?
66? ? ? ? ? ? types{
67? ? ? ? ? ? ? ? application/vnd.apple.mpegurl m3u8;
68? ? ? ? ? ? ? ? video/mp2t ts;
69? ? ? ? ? ? }
70? ? ? ? ? ? alias /temp/hls;
71? ? ? ? ? ? expires -1;
72? ? ? ? }
73? ? ? ? #error_page? 404? ? ? ? ? ? ? /404.html;
74
75? ? ? ? # redirect server error pages to the static page /50x.html
----------------------------
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/sbin/nginx
cd /usr/local/nginx/html
vim play.html
<!DOCTYPE html>
<html lang="en">
<head>
? ? <meta charset="UTF-8">
</head>
<body>
<h1>PC 端播放 HLS(<code>.m3u8</code>) 視頻</h1>
<p>借助 video.js 和 videojs-contrib-hls</p>
<p>由于 videojs-contrib-hls 需要通過 XHR 來獲取解析 m3u8 文件, 因此會遭遇跨域問題, 請設(shè)置瀏覽器運行跨域</p
>
<video id="hls-video" width="300" height="200" class="video-js vjs-default-skin"
? ? ? playsinline webkit-playsinline
? ? ? autoplay controls preload="auto"
? ? ? x-webkit-airplay="true" x5-video-player-fullscreen="true" x5-video-player-typ="h5">
? ? <!-- 直播的視頻源 -->
? ? <source src="http://ivi.bupt.edu.cn/hls/cctv12.m3u8" type="application/x-mpegURL">
? ? <!-- 點播的視頻源 -->
? ? <!--<source src="http://devstreaming.apple.com/videos/wwdc/2015/413eflf3lrh1tyo/413/hls_vod_mvp.m3u8"
type="application/x-mpegURL">-->
</video>
<script src="http://cdn.bootcss.com/video.js/6.0.0-RC.5/video.js"></script>
<!-- PC 端瀏覽器不支持播放 hls 文件(m3u8), 需要 videojs-contrib-hls 來給我們解碼 -->
<script src="http://cdn.bootcss.com/videojs-contrib-hls/5.3.3/videojs-contrib-hls.js"></script>
<script>
? ? // XMLHttpRequest cannot load http://xxx/video.m3u8. No 'Access-Control-Allow-Origin' header is presen
t on the requested resource. Origin 'http://192.168.198.98:8000' is therefore not allowed access.
? ? // 由于 videojs-contrib-hls 需要通過 XHR 來獲取解析 m3u8 文件, 因此會遭遇跨域問題, 請設(shè)置瀏覽器運行跨>
域
? ? var player = videojs('hls-video');
? ? player.play();
</script>
</body>
</html>
==================
檢查
http://10.0.0.200/play.html