基于Nginx和FFmpeg搭建流媒體服務(wù)器(Windows)

搭建Nginx環(huán)境

1.下載并配置Nginx

????Nginx下載
????下載完成后,解壓Nginx壓縮包,并將Nginx的文件路徑添加至環(huán)境變量。注意路徑中不能有中文,80端口不被占用。

添加至環(huán)境變量

打開CMD,輸入nginx -v若如下圖所示,則表示安裝配置成功。

Nginx配置成功

2.Nginx常用命令(windows)

+ 查看nginx的版本號:nginx -v
+ 啟動nginx:start nginx
+ 快速停止或關(guān)閉nginx:nginx -s stop
+ 正常停止或關(guān)閉nginx:nginx -s quit
+ 配置文件nginx.conf修改重裝載命令:nginx -s reload

3.搭建媒體服務(wù)器--配置Nginx http代理路徑

HLS協(xié)議是基于Http協(xié)議的,我們這里使用Nginx作為視頻服務(wù)器。

  • nginx.conf
# nginx.conf
server { 
    listen 80; 
    server_name localhost; 
    #視頻目錄 
    location / {
       root   /;
       rewrite ^/video/(.*)$ /ApacheSoftware/ftpop/$1 break;
    }
}

FFmpeg

FFmpeg是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開源計算機(jī)程序。采用LGPL或GPL許可證。它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。它包含了非常先進(jìn)的音頻/視頻編解碼庫libavcodec,為了保證高可移植性和編解碼質(zhì)量,libavcodec里很多code都是從頭開發(fā)的。

FFmpeg在Linux平臺下開發(fā),但它同樣也可以在其它操作系統(tǒng)環(huán)境中編譯運(yùn)行,包括Windows、Mac OS X等。這個項目最早由Fabrice Bellard發(fā)起,2004年至2015年間由Michael Niedermayer主要負(fù)責(zé)維護(hù)。許多FFmpeg的開發(fā)人員都來自MPlayer項目,而且當(dāng)前FFmpeg也是放在MPlayer項目組的服務(wù)器上。項目的名稱來自MPEG視頻編碼標(biāo)準(zhǔn),前面的"FF"代表"Fast Forward"

FFmpeg被許多開源項目采用,QQ影音、暴風(fēng)影音等。

1.FFmpeg環(huán)境搭建

????FFmpeg下載

下載Windows適用的版本
下載Windows適用的版本

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

將解壓后的路徑添加至環(huán)境變量中。


配置環(huán)境變量

打開CMD,輸入ffmpeg -version若如下圖所示,則表示配置成功。

安裝成功

3.FFmpeg命令

  • 把a(bǔ)vi格式轉(zhuǎn)為mp4
ffmpeg -i test.avi -c:v libx264 -s 1280x720 -pix_fmt yuv420p -b:a 63k -b:v 753k -r 18 .\test.mp4

-c:v 視頻編碼為x264 ,x264編碼是H264的一種開源編碼格式。 
-s 設(shè)置分辨率 
-pix_fmt yuv420p:設(shè)置像素采樣方式,主流的采樣方式有三種,YUV4:4:4,YUV4:2:2,YUV4:2:0,它的作用是 根據(jù)采樣方式來從碼流中還原每個像素點(diǎn)的YUV(亮度信息與色彩信息)值。 
-b 設(shè)置碼率,-b:a和-b:v分別表示音頻的碼率和視頻的碼率,-b表示音頻加視頻的總碼率。碼率對一個視頻質(zhì)量有 很大的作用,后邊會介紹。
 -r:幀率,表示每秒更新圖像畫面的次數(shù),通常大于24肉眼就沒有連貫與停頓的感覺了。

# 碼率
碼率又叫比特率即每秒傳輸?shù)腷it數(shù),單位為bps(Bit Per Second),碼率越大傳送數(shù)據(jù)的速度越快。
碼率的計算公式是:文件大小(轉(zhuǎn)成bit)/ 時長(秒)/1024 = kbps 即每秒傳輸千位數(shù)
例如一個1M的視頻,它的時長是10s,它的碼率等于
1*1024*1024*8/10/1024 = 819Kbps
  • mp4生成m3u8
# 將test.mp4視頻文件按每10秒生成一個ts文件,最后生成一個m3u8文件,m3u8文件就是ts的索引文件
ffmpeg ‐i test.mp4 ‐hls_time 10 ‐hls_list_size 0 ‐hls_segment_filename ./hls/test_%05d.ts ./hls/test.m3u8

-hls_time 設(shè)置每片的長度,單位為秒 
-hls_list_size n: 保存的分片的數(shù)量,設(shè)置為0表示保存所有分片 
-hls_segment_filename :段文件的名稱,%05d表示5位數(shù)字

測試

  • html 代碼Demo
<html>
<head>
   <link  rel="stylesheet">
<script src="https://cdn.bootcss.com/video.js/7.4.1/video.min.js"></script>
<script src="https://cdn.bootcss.com/videojs-contrib-hls/5.11.0/videojs-contrib-hls.js"></script>
</head>

<body>
  <video id="my-video" class="video-js vjs-big-play-centered" controls="controls" preload="auto" width="1280" height="480"
  poster="http://192.168.1.36/video/test.jpg" data-setup="{}">
    <source src="http://192.168.1.36/video/demo1/test.m3u8" type='application/x-mpegURL'>
    <p class="vjs-no-js">
      To view this video please enable JavaScript, and consider upgrading to a web browser that
      <a  target="_blank">supports HTML5 video</a>
    </p>
  </video>
</body>
</html>
  • 將html Demo文件、視頻ts分片以及索引文件m3u8放置在Nginx指向的路徑下。
    通過Nginx 的http代理來訪問Demo html文件。
http://192.168.1.36/video/html/index.html
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容