日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用nginx搭建HTTP FLV流媒体服务器

發布時間:2024/3/26 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用nginx搭建HTTP FLV流媒体服务器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用nginx搭建HTTP FLV流媒體服務器

文章目錄

  • 使用nginx搭建HTTP FLV流媒體服務器
    • 1 HTTP FLV簡介
    • 2 HTTP FLV流媒體服務搭建
    • 3 結果驗證

1 HTTP FLV簡介

前文已經介紹了RTSP、RTMP、HLS的流媒體協議,還有一種比較常見的流媒體協議HTTP FLV,其兼具RTMP的實時性及HLS的網絡適應性的優點,在很多點直播領域廣泛應用。網上有人總結了HTTP FLV、RTMP、HLS的對比,如下表所示:

協議名HTTP FLVRTMPHLS
傳輸方式HTTPTCPHTTP
視頻封裝格式flvchunk(rtmp header+body(tag body))TS
視頻時延
數據格式連續音視頻流連續音視頻流TS切片文件
web無插件播放支持,通過flv.js不支持,需要flash插件支持,直接HTML5的video標簽即可播放
防火墻或代理穿透支持不支持支持

其中當前直播流域用的最廣泛的是RTMP和HTTP-FLV,因為其非常低的視頻時延,可做到1s左右,本文介紹HTTP FLV的流媒體服務搭建方式,有關FLV格式文章,參照:https://blog.csdn.net/water1209/article/details/128562747
HTTP-FLV是將流媒體數據先封裝成FLV格式,然后通過HTTP協議傳輸給客戶端,通過HTTP FLV的直播,這里使用了一個HTTP的協議約定,http 的content-length頭字段如果不存在,則客戶端就會一直接收數據,直到HTTP連接斷開為止,其流程很簡單,視頻客戶端發送HTTP請求,不帶content-length頭字段,服務器響應HTTP,并一直發送FLV的數據;客戶端接收響應并一直接收數據直到連接斷開。
有關HLS、RTMP、FLV通過nginx搭建相關協議的流媒體服務器的文章,公眾號壹零倉,發送nginx,查看相關文章

2 HTTP FLV流媒體服務搭建

nginx-http-flv-module是基于nginx-rtmp-module開發的,包含nginx-rtmp-module所有功能,因此不能nginx-rtmp-module同時安裝,其編譯安裝步驟與nginx-rtmp-module類似,如下:

  • 安裝依賴庫:
    nginx編譯依賴 gcc 環境,如果沒有 gcc 環境,則需要安裝:
    yum -y install gcc gcc-c++
    nginx的http模塊使用pcre來解析正則表達式,pcre-devel 是使用 pcre 開發的一個二次開發庫,nginx需要依賴這兩個庫,執行如下命令:
    yum install -y pcre pcre-devel
    nginx使用zlib對http包的內容進行gzip,需要安裝此庫:
    yum install -y zlib zlib-devel
    nginx可能需要支持HTTPS,最好在系統中安裝好openssl,一般系統自帶,可通過如下命令確認:
    openssl version
    如果安裝了會顯示版本號,如果提示未安裝,執行如下命令安裝:
    yum install -y openssl openssl-devel

  • nginx編譯和安裝

    • 下載nginx:
      wget http://nginx.org/download/nginx-1.21.6.tar.gz

    • 下載nginx模塊HTTP FLV模塊:
      wget https://github.com/winshining/nginx-http-flv-module/archive/v1.2.10.tar.gz

    • 解壓nginx和HTTP FLV模塊:
      tar -zxvf nginx-1.21.6.tar.gz
      tar -zxvf v1.2.10.tar.gz

    • nginx編譯和安裝:
      ./configure --prefix=/home/wangdenuan/nginx --add-module=../nginx-http-flv-module-1.2.10
      這里配置了–prefix,配置安裝路徑,不安裝到默認路徑,以便安裝文件移植和卸載,可直接拷貝次目錄下的文件到其他電腦運行如果目錄不同,啟動時通過-p指定目錄即可。
      make&makeinstall

    • 啟動nginx,驗證是否正確,執行命令(注意安裝目錄下的sbin/nginx):
      /home/wangdenuan/nginx/sbin/nginx
      打開瀏覽器輸入:http://10.45.12.29/,注意ip為本機ip,顯示如下內容,即表示安裝成功

  • 修改nginx相關配置支持HTTP FLV
    在/home/wangdenuan/nginx/conf/nginx.conf文件中增加:
  • #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024; }rtmp {server {listen 1935;chunk_size 4096;application live {live on;meta off;#為了兼容flvj.jshls on;hls_path /tmp/hls;hls_fragment 4;hls_playlist_length 30;record off;allow play all;}} }http {include mime.types;default_type application/octet-stream;#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {root html;index index.html index.htm;}location /hls{add_header Access-Control-Allow-Origin *;types {application/vnd.apple.mpegurl m3u8;video/mp2t ts;}alias /tmp/hls;expires -1;}location /flv {flv_live on;chunked_transfer_encoding on; #支持'Transfer-Encoding: chunked'方式回復add_header 'Access-Control-Allow-Origin' '*'; #添加額外的 HTTP 頭add_header 'Access-Control-Allow-Credentials' 'true'; #添加額外的 HTTP 頭}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}

    其配置與RTMP配置增加了HTTP FLV的URI的配置。
    配置完成后,執行:/home/wangdenuan/nginx/sbin/nginx -s reload,使得配置生效。

    3 結果驗證

    • 在PC機上安裝ffmpeg,具體安裝方式可百度

    • 找一個可播放的RTSP地址,通過vlc播放器驗證rtsp地址播放是否正常,這里以rtsp://admin:zxm10@@@@10.45.12.141/h264/ch1/main/av_stream為例:

    • 打開命令提示行,輸入如下ffmpeg命令,推送rtmp視頻流到rtmp服務器,這里假設rtmp服務器IP為:10.45.12.29
      ffmpeg -i rtsp://admin:zxm10@@@@10.45.12.141/h264/ch1/main/av_stream -vcodec copy -acodec copy -f flv rtmp://10.45.12.29:1935/live/test
      ffmpeg推流命令成功后,出現如下圖所示界面:

    • 用vlc播放如下串流:rtmp://10.45.12.29:1935/live/test,驗證是否rtmp拉流成功:

    • 用VLC播放如下串流:http://10.45.12.29/hls/test.m3u8,驗證HLS是否能夠播放成功:

    • 用VLC播放如下串流:http://10.45.12.29/flv?port=1935&app=live&stream=test,驗證HTTP FLV是否能播放成功

    總結

    以上是生活随笔為你收集整理的使用nginx搭建HTTP FLV流媒体服务器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。