一、什麼是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-hant/n/297368.html