一、流媒體服務器部署
1.准備虛擬機Centos 74操作系統
2.更改為阿里的yum源
yum install -y wget #下載wget軟件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup #備份 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #下載新的 CentOS-Base.repo 到 /etc/yum.repos.d/ 運行 yum makecache 生成緩存
3.安裝依賴
yum install -y gcc-c++ zlib pcre openssl openssl-devel #c語言程序需要的依賴
4.下載擴展模塊
Nginx本身只是一個服務器,對流媒體並沒有支持,所以我們要下載對應的模塊來擴展其功能。
MP4模塊:http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz
FLV模塊:http://sourceforge.net/projects/yamdi/files/yamdi/yamdi-1.9.tar.gz
直播流模塊:https://github.com/adwpc/nginx-rtmp-module
FastDFS模塊:https://github.com/happyfish100/fastdfs-nginx-module
5.上傳所有模塊到虛擬機
mkdir /opt/nginx
cd /opt/nginx rz nginx-1.8.1.tar.gz rz nginx_mod_h264_streaming-2.2.7.tar.gz rz yamdi-1.9.tar.gz rz nginx-rtmp-module-master
6.解壓所有模塊
tar -zxvf yamdi-1.9.tar.gz
tar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gz yum install -y unzip #解壓用的 unzip nginx-rtmp-module-master.zip tar -zxvf tar -zxvf nginx-1.8.1.tar.gz
7.安裝flv模塊到系統
cd yamdi-1.9
./configure
make && make install
8.更改nginx_mod_h264_streaming文件
cd /opt/nginx/nginx_mod_h264_streaming-2.2.7/src
vim ngx_http_streaming_module.c
157gg到157行
注釋157行-161行
9. 安裝nginx並添加模塊
cd /opt/nginx/nginx-1.8.1
./configure --add-module=../nginx_mod_h264_streaming --add-module=../nginx-rtmp-module-master --with-http_ssl_module --prefix=/opt/software/nginx --with-http_flv_module --with- http_stub_status_module
--add-module 安裝擴展插件
--prefix 安裝在哪里
--with- 使用系統內置的模塊 已經安裝完畢 關聯
..上一級
如果出現錯誤
vim objs/Makefile
去掉-Werror保存退出
make && make install
10.配置一下conf文件
nginx就是一個服務器
一個 nginx.conf中可以配置 多個 服務器
一個服務器可以監聽1個端口
cd /opt/software/nginx/conf
vim nginx.conf
添加如下代碼
location ~ \.flv {
flv;
}
location ~ \.mp4$ { mp4; }
location 規則1 location / root配置的目錄下 去找這個文件 /html
location 規則2 ~ \.flv$ flv文件結尾 flv 模塊
location 規則3 ~ \.mp4$ mp4文件結尾 mp4 模塊
當訪問http://ip:80/test.mp4
會挨個匹配規則
匹配第一個規則 location / /html這個目錄下去找test.mp4
匹配第二個規則 ~\.flv$ 不滿足這個規則
匹配第三個規則 ~\.mp4$ 滿足這個規則 mp4模塊來處理
11.啟動nginx
上傳一個test.mp4視頻到/opt/nginx/nginx-1.8.1/html目錄下
cd /opt/software/nginx/sbin
./nginx
可到瀏覽器訪問http://ip:80/test.mp4播放視頻
二、視頻切片優化
要用到ffmpeg切片
下載地址 https://ffmpeg.zeranoe.com/builds/
他的依賴程序yasm
下載地址 https://linux.softpedia.com/get/Programming/Assembler-Tools/Yasm-621.shtml#download
cd /opt/nginx
1.上傳
rz ffmpeg-4.2.2.tar.bz2
rz yasm-1.3.0.tar.gz
2.解壓
yum install bzip2 #因為后綴是bz2的 要安裝 bzip2
tar -jxvf ffmpeg-4.2.2.tar.bz2 #使用 -jxvf 解壓bz2文件 tar -zxvf yasm-1.3.0.tar.gz
3.安裝
cd yasm-1.3.0
./configure
make && make install
cd ffmpeg-4.2.2 #進入目錄
./configure --prefix=/opt/software/ffmpeg #配置 設置安裝路徑 make && make install #安裝
4.將mp4文件轉換為ts文件
ffmpeg -y -i test.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb output.ts
5.將ts文件切片
ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 1000 output.ts
#output.ts 這個看上條命令后面出輸的文件名稱。我這里是output.ts #出輸的m3u8文件索引文件名稱,可以隨意修改,我這里是playlist.m3u8 #-segment_time 1000 每一段切片的控制時間,我這里是1000s,根據你的情況隨意修改
三、直播搭建
1.配置nginx/conf文件
vim /opt/software/nginx/conf/nginx.conf
與http協議並列添加如下代碼
rtmp {
server {
listen 1935; #監聽的端口 chunk_size 4096; application hls { #rtmp推流請求路徑 live on; hls on; hls_path /opt/software/nginx/html/hls; #填寫推流路徑 hls_fragment 5s; } } }
保存退出
在html下創建hls目錄
cd /opt/software/nginx/html
mkdir hls
2.安裝使用obs推流工具
可在軟件管理--騰訊管家下載OBS
1.點擊視頻捕獲設備
點擊確定可看到電腦攝像頭捕獲的畫面
2.點擊顯示器捕獲
如果有雙顯卡需要關閉獨立顯卡
右鍵此電腦打開管理
右鍵獨立顯卡-->禁用
重新打開OBS-->點擊顯示器捕獲 可看到顯示器上的內容
3.游戲捕獲
可選擇特點程序捕獲
3.設置推流
點擊右下角的設置--推流 填寫服務器和密鑰 點擊確定
點擊開始推流
cd /html/hls 可看到推流的碎片文件
4.拉流
法一:
下載拉流工具 Nginx_EV https://pan.baidu.com/s/1hCzZnF8vAPG3xFkF_fMOkg 提取碼:3fz3
修改E:\Nginx_EV\html\bd目錄下index.html文件
file:"rtmp://192.168.0.178/hls/密鑰"
打開網頁輸入地址 開始播放
法二:
下載播放器 http://sdk.bce.baidu.com/media-sdk/cyberplayer-3.5.3.zip
在cyberplayer-3.5.3文件下創建index.html 代碼如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="playercontainer"></div>
</body>
<script type="text/javascript" src="cyberplayer.js"></script>
<script type="text/javascript">
var player = cyberplayer("playercontainer").setup({ width: 640, height: 360, file: "rtmp://192.168.0.178/hls/1234", // 注意!!!<—rtmp直播地址,這里填寫自己對應的服務器地址 autostart: true, stretching: "uniform", volume: 100, controls: true, rtmp: { reconnecttime: 5, // rtmp直播的重連次數 bufferlength: 1 // 緩沖多少秒之后開始播放 默認1秒 }, ak: "XXXXXXXXXXXXXXXXXXXX" // 注意!!百度雲管理控制平台注冊即可獲得accessKey
}); </script> </html>
accessKey獲取路徑 https://console.bce.baidu.com/iam/#/iam/accesslist
把cyberplayer-3.5.3導入到HBuilder運行瀏覽器打開index.html可見直播效果 ,如果是谷歌瀏覽器需要設置flash插件允許使用