一、什麼是nginxhls
nginxhls是一種基於nginx服務器的流媒體傳輸協議,全稱為HTTP Live Streaming。它最初是由蘋果公司為iOS設備開發的。它支持直播和點播兩種模式,可以在安卓、iOS等移動設備上進行播放。
nginxhls的優勢在於實現簡單,沒有實現難度。相比傳統的RTMP協議,它可以更好地支持低延遲的直播,同時也能夠比較好地適配複雜的網絡環境,具有廣泛使用價值。
下面就讓我們來了解一下nginxhls的相關知識。
二、nginxhls的組成部分
nginxhls由nginx服務器、ffmpeg工具和m3u8播放器三部分組成。
1、nginx服務器:
nginx服務器是一個開源的軟件,它具有高性能、高可靠性、低資源消耗等優點,因此非常適合用來作為分發流媒體服務的服務器。同時,nginx服務器通過支持擴展模塊的方式,可以滿足各種特殊需求。
2、ffmpeg工具:
ffmpeg是一款自由的軟件,用於處理音視頻數據,可以實現視頻採集、變換、編解碼等功能。在nginxhls的流媒體服務器中,ffmpeg主要用於將抓取到的數據編碼為h264格式。
3、m3u8播放器:
m3u8播放器是一種支持播放HLS流媒體協議的播放器,當我們想要播放hls協議的視頻時,需要使用m3u8播放器進行視頻播放。
三、配置nginxhls服務器
1、安裝nginx和nginx-rtmp-module模塊:
sudo apt-get install nginx cd ~ sudo apt-get install git git clone git://github.com/arut/nginx-rtmp-module.git cd nginx-1.10.2 ./configure --add-module=../nginx-rtmp-module/ make sudo make install
2、配置配置nginx.conf文件:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
...
server {
listen 1935;
chunk_size 8192;
application live {
live on;
hls on;
hls_path /tmp/hls;
hls_fragment 3;
hls_playlist_length 30;
hls_continuous off;
}
}
}
3、啟動nginx服務器:
sudo nginx
四、編寫腳本啟動流媒體服務器
在編寫腳本之前,需要先安裝ffmpeg和gnuplot軟件:
sudo apt-get install ffmpeg sudo apt-get install gnuplot
然後,在當前目錄下創建live.sh文件,內容如下:
#!/bin/bash
FPS=25
./cleanup.sh
ffmpeg \
-y -nostdin \
-f video4linux2 -video_size 640x480 -i /dev/video0 \
-c:v h264 \
-crf 20 \
-preset fast \
-tune zerolatency \
-f flv rtmp://localhost/live/1234 &
while true; do
gnuplot plot.plt
sleep 1/$FPS
done
最後創建cleanup.sh文件,內容如下:
#!/bin/bash sudo killall ffmpeg sudo rm -rf /tmp/hls/*
五、小節
至此,我們對nginxhls有了比較全面的了解,它有着很多優勢,比如良好的適應性、簡單的實現、可以滿足各種特殊需求,因此nginxhls在移動端的應用中也越來越廣泛。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/297368.html
微信掃一掃
支付寶掃一掃