流媒體服務器部署及直播和點播


一、流媒體服務器部署

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插件允許使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM