欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux流媒體服務(wù)器部署流程

 更新時間:2025年02月21日 12:02:08   作者:熱心市民運(yùn)維小孫  
文章詳細(xì)介紹了流媒體服務(wù)器的部署步驟,包括更新系統(tǒng)、安裝依賴組件、編譯安裝Nginx和RTMP模塊、配置Nginx和FFmpeg,以及測試流媒體服務(wù)器的搭建

流媒體服務(wù)器部署

部署安裝

1.更新系統(tǒng)

yum update -y

2.安裝依賴組件

  1. 安裝git

? git用來拉去github的軟件包

yum install git -y
  1. 安裝一系列編譯環(huán)境
yum -y install gcc-c++ 
yum -y install pcre pcre-devel
yum -y install openssl openssl-devel
yum -y install zlib zlib-devel
  1. 安裝rtmp模塊和nginx

網(wǎng)站:nginx—http://nginx.org/download

? RTMP-----https://github.com/arut/nginx-rtmp-module.git

可以在windows下載然后上傳到目錄/usr/local

或者直接使用命令

cd /usr/local
git clone https://github.com/arut/nginx-rtmp-module.git
wget http://nginx.org/download/nginx-1.24.0.tar.gz

3.解壓

解壓安裝包

tar -zxvf nginx-1.24.0.tar.gz

4.編譯安裝(添加RTMP和openssl模塊)

cd nginx-1.24.0
./configure --add-module=/usr/local/nginx-rtmp-module --with-http_ssl_module --with-http_mp4_module
make && make install		

如果報以下錯誤

  • 檢查:依賴組件是否有安裝報錯的
  • 上述.configure中rtmp模塊路徑是否正確

5.檢查是否安裝成功

啟動nginx

/usr/local/nginx/sbin/nginx #啟動
然后ps -ef |grep nginx,如下圖則啟動成功

關(guān)閉nginx

/usr/local/nginx/sbin/nginx -s stop

6.修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

在server塊內(nèi)添加以下內(nèi)容,在http塊內(nèi),與其他location同級

 location /videos/ {
                types {
                    application/vnd.apple.mpegurl m3u8;
                    video/mp2t ts;
                      }
           #明確此目錄需要支持的視頻格式
         add_header 'Access-Control-Allow-Origin' '*';
         add_header 'Access-Control-Allow-Methods' 'GET';
         add_header 'Access-Control-Allow-Headers' '*';
         add_header 'Access-Control-Expose-Headers' '*';
         #以上add_header 用來解決跨域問題
         alias /usr/local/nginx/videos/; #映射路徑 
         autoindex on; #目錄索引
                }

nginx.conf文件中添加rtmp配置與http模塊同級

rtmp {
    server {
        listen 1935; # RTMP協(xié)議默認(rèn)端口,可根據(jù)需要修改
        chunk_size 5242800;
        application videos{
           play /usr/local/nginx/videos/; 
           meta copy;
                   }
    }
}

此配置可支持rtmp協(xié)議,適用于推拉流場景和需要用到rtmp協(xié)議的情景

安裝ffmpeg

安裝依賴

yum install yasm -y

方法一

直接yum裝,源沒有的話換下一個方法

yum install ffmpeg

方法二(centos適用)

yum install epel-release
yum install -y https://mirrors.ustc.edu.cn/rpmfusion/free/el/rpmfusion-free-release-8.noarch.rpm 
yum install -y ffmpeg ffmpeg-devel
  • 這個鏡像是中國科技大學(xué)的開源軟件鏡像站,相對安全
  • epel-release(EPEL),是Fedora社區(qū)打造,為基于紅帽、centos等企業(yè)級發(fā)行版linux提供的高質(zhì)量軟件包的一個項目,等于擴(kuò)展了一個軟件倉庫
  • rpmfusion-free-release-8.noarch.rpm 中的8對應(yīng)的是版本號 比如這個適用centos8

方法三

編譯安裝

 cd ~   #切換到root主目錄
 git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg    //下載ffmpeg
 cd ffmpeg
 ./configure --prefix=/usr/local/ffmpeg
 make
 make install

在編譯執(zhí)行./configure --prefix=/usr/local/ffmpeg可能會報錯nasm沒有或者版本太老

yum install nasm

如果沒有則手動編譯安裝

cd /usr/local
wget http://123.56.3.143:8888/download/nasm-2.16.03.tar.gz

解壓編譯

tar -zxvf nasm-2.16.03.tar.gz
cd nasm-2.16.03
./configure
make
make install 

重新執(zhí)行

./configure --prefix=/usr/local/ffmpeg
#編譯時間挺久的耐心等待半小時
make
make install

拷貝ffmpeg命令(方便調(diào)用)

cp /usr/local/ffmpeg/bin/* /usr/bin/

將/usr/local/ffmpeg/bin/加到/etc/profile 環(huán)境變量也行,復(fù)制下方命令即可

echo “export PATH=$PATH:/usr/local/ffmpeg/bin” >> /etc/profile
source /etc/profile

ffmpeg相關(guān)使用命令

ffmpeg -i 本地視頻地址 -y -c:v libx264 -strict -2 轉(zhuǎn)換視頻.mp4

ffmpeg -y -i 本地視頻.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 轉(zhuǎn)換視頻.ts

ffmpeg -i 本地視頻.ts -c copy -map 0 -f segment -segment_list 視頻索引.m3u8 -segment_time 5 前綴-%03d.ts
#-segment_time 切片時長,例子為5秒
#前綴-%03d.ts 輸出ts格式為 前綴-001.ts、前綴-002.ts, %03d代表3位數(shù)

ffmpeg -i 加視頻 可以輸出各種信息 format部分的duration是時長信息

知識拓展

  • HLS 是蘋果公司推出的一種流媒體傳輸協(xié)議。它的工作原理是將整個流分成一個個小的基于 HTTP 的文件來下載,每次只下載一部分。這樣的設(shè)計使得它能夠很好地適應(yīng)不同的網(wǎng)絡(luò)狀況,比如在網(wǎng)絡(luò)帶寬波動時,依然可以比較流暢地播放視頻。
  • m3u8 + ts分片采用了HLS協(xié)議,即m3u8為索引文件,ts為小分片,m3u8是眾多ts格式視頻URL的集合,
  • 蘋果自帶瀏覽器可直接訪問m3u8格式文件,而無需第三方播放器,可用來判斷流媒體服務(wù)器是否搭建成功

測試

將一個mp4上傳到 /usr/local/nginx/videos 目錄

cd /usr/local/nginx/videos
ffmpeg -i 上傳的視頻.mp4 -c copy -map 0 -f segment -segment_list 視頻索引.m3u8 -segment_time 5 前綴-%03d.ts
  • 方法一:瀏覽器訪問 serverIP/videos 點擊.m3u8格式結(jié)尾的視頻看是否能下載
  • 方法二:蘋果瀏覽器直接訪問這個serverIP/videos/視頻索引.m3u8 觀察是否能播放
  • 方法三:VLC第三方播放器 點擊左上角----媒體----打開網(wǎng)絡(luò)竄流-----網(wǎng)絡(luò)----輸入URLserverIP/videos/視頻索引.m3u8

問題:訪問videos目錄報404

檢查video目錄是否在/usr/local/nginx/

videos權(quán)限 chmod 644 -R /usr/local/nginx/videos

Nginx統(tǒng)一管理命令

1.創(chuàng)建nginx.sh

mkdir /usr/local/nomaxbin/ 創(chuàng)建腳本目錄
touch /usr/local/nomaxbin/nginx.sh 創(chuàng)建腳本文件
vim /usr/local/nomaxbin/nginx.sh 編輯腳本文件

nginx.sh內(nèi)容如下

#!/bin/sh

# nginx統(tǒng)一管理腳本-add.yjc.2020年3月18日 10:58:58

# defined
DES="Nginx服務(wù)器"
NGNIX_PATH="/usr/local/nginx/sbin/"

# 切換目錄
cd $NGNIX_PATH

NGNIX_COUNT=`ps -C nginx --no-header | wc -l`
if [ "$1" == "stop" ] || [ "$1" == "shutdown" ]; then
    # 停止
    if [ $NGNIX_COUNT -gt 0 ]; then
        echo "正在停止..."
        ./nginx -s stop
        echo "服務(wù)已停止,使用status命令查看狀態(tài)。"
    else
        echo "服務(wù)目前處于停止?fàn)顟B(tài),無需再次停止"
    fi
elif [ "$1" == "start" ] || [ "$1" == "" ]; then
    # 啟動
    if [ $NGNIX_COUNT -gt 0 ]; then
        echo "服務(wù)正在運(yùn)行,PID:"
        cat ../logs/nginx.pid
    else
        echo "正在啟動..."
        ./nginx
        echo "服務(wù)已啟動,使用status命令查看狀態(tài)。"
    fi
elif [ "$1" == "restart" ]; then
    # 重啟
    if [ $NGNIX_COUNT -gt 0 ]; then
        echo "正在停止服務(wù)..."
        ./nginx -s stop
        echo "服務(wù)已停止。"
    fi
    NGNIX_COUNT=`ps -C nginx --no-header | wc -l`
    echo "Watting..."  
    while [ $NGNIX_COUNT -gt 0 ]  
    do  
        sleep 2
        NGNIX_COUNT=`ps -C nginx --no-header | wc -l`
        echo "Watting..."  
    done
    echo "正在啟動服務(wù)..."
    ./nginx
    echo "服務(wù)已啟動,使用status命令查看狀態(tài)。"
elif [ "$1" == "dellog" ]; then
    # 重啟
    if [ $NGNIX_COUNT -gt 0 ]; then
        echo "正在停止服務(wù)..."
        ./nginx -s stop
        echo "服務(wù)已停止。"
    fi
    NGNIX_COUNT=`ps -C nginx --no-header | wc -l`
    echo "Watting..."  
    while [ $NGNIX_COUNT -gt 0 ]  
    do  
        sleep 2
        NGNIX_COUNT=`ps -C nginx --no-header | wc -l`
        echo "Watting..."  
    done

    echo "正在刪除日志..."
    rm -rf ../logs/*.log
    echo "日志刪除完成..."

    echo "正在啟動服務(wù)..."
    ./nginx
    echo "服務(wù)已啟動,使用status命令查看狀態(tài)。"
elif [ "$1" == "log" ]; then
    # 持續(xù)輸出日志
    tail -f ../logs/access.log
elif [ "$1" == "errlog" ]; then
    # 持續(xù)輸出日志
    tail -f ../logs/error.log
elif [ "$1" == "status" ]; then
    # 狀態(tài)
    if [ $NGNIX_COUNT -gt 0 ]; then
        echo "服務(wù)正在運(yùn)行,PID:"
        cat ../logs/nginx.pid
    else
        echo "服務(wù)處于停止?fàn)顟B(tài)"
    fi
elif [ "$1" == "help" ]; then
    # 重新部署
    echo "** "$DES
    echo "** NGNIX_PATH:"$NGNIX_PATH    
    echo "----------------------------"
    echo "  start:啟動"
    echo "  stop/shutdown:停止"
    echo "  restart:重啟"
    echo "  log:持續(xù)輸出控制臺訪問日志"
    echo "  errlog:持續(xù)輸出控制臺錯誤日志"
    echo "  status:服務(wù)運(yùn)行狀態(tài)"
    echo "  help:幫助說明"
    echo "  dellog:刪除日志命令"
else
    # error
    echo "命令錯誤,請使用help命令查看具體使用說明"
fi

2.賦予執(zhí)行權(quán)限

chmod +x /usr/local/nomaxbin/nginx.sh

3.配置環(huán)境變量

echo "export PATH=\$PATH:/usr/local/nomaxbin" >> /etc/profile
source /etc/profile 更新環(huán)境變量

4.執(zhí)行命令

# 啟動
nginx start
# 停止
nginx stop
nginx shutdown
# 重啟
nginx restart
# 持續(xù)輸出控制臺訪問日志
nginx log 
# 持續(xù)輸出控制臺錯誤日志
nginx errlog
# 服務(wù)運(yùn)行狀態(tài)
nginx status
# 幫助說明
nginx help
# 刪除日志命令
nginx dellog

2.賦予執(zhí)行權(quán)限

chmod +x /usr/local/nomaxbin/nginx.sh

3.配置環(huán)境變量

echo "export PATH=\$PATH:/usr/local/nomaxbin" >> /etc/profile
source /etc/profile 更新環(huán)境變量

4.執(zhí)行命令

# 啟動
nginx start
# 停止
nginx stop
nginx shutdown
# 重啟
nginx restart
# 持續(xù)輸出控制臺訪問日志
nginx log 
# 持續(xù)輸出控制臺錯誤日志
nginx errlog
# 服務(wù)運(yùn)行狀態(tài)
nginx status
# 幫助說明
nginx help
# 刪除日志命令
nginx dellog

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論