Car-eye-http-flv-module 實現nginx-rtmp-mudule HTTP方式的FLV直播功能
nginx-rtmp-mudule RTMP 是一款優秀的Car-eye-http-flv-module 是在nginx-rtmp-mudule RTMP基礎上修改的流媒體伺服器,除了支援flash播放器外,還支援現在常見的播放器。完美實現了HTTP方式的FLV直播功能。
本文簡單介紹下該模組的主要功能和使用:
功能
基於HTTP協議的FLV直播流播放。
GOP快取,降低播放延遲 (H.264視訊和AAC音訊)。
支援
Transfer-Encoding: chunked
方式的HTTP回覆。rtmp配置的server塊中可以省略
listen
配置項。支援虛擬主機。
支援的系統
- Linux(推薦)/FreeBSD/MacOS/Windows(受限)。
支援的播放器
依賴
在類Unix系統上,需要GNU make,用於呼叫編譯器來編譯軟體。
在類Unix系統上,需要GCC/在Windows上,需要MSVC,用於編譯軟體。
在類Unix系統上,需要GDB,用於除錯軟體(可選)。
FFmpeg,用於釋出媒體流。
VLC播放器(推薦),用於播放媒體流。
如果NGINX要支援正則表示式,需要PCRE庫。
如果NGINX要支援加密訪問,需要OpenSSL庫。
如果NGINX要支援壓縮,需要zlib庫。
建立
在Windows上
編譯步驟請參考Building nginx on the Win32 platform with Visual C,不要忘了在Run configure script
步驟中新增--add-module=/path/to/nginx-http-flv-module
。
在類Unix系統上
下載NGINX和nginx-http-flv-module。
將它們解壓到某一路徑。
開啟NGINX的原始碼路徑並執行:
將模組編譯進NGINX
./configure --add-module=/path/to/nginx-http-flv-module
make
make install
將模組編譯為動態模組
./configure --add-dynamic-module=/path/to/nginx-http-flv-module make make install
注意
如果將模組編譯為動態模組,那麼NGINX的版本號必須大於或者等於1.9.11。
釋出
ffmpeg -re -i example.mp4 -vcodec copy -acodec copy -f flv rtmp://example.com[:port]/appname/streamname
appname
用於匹配rtmp配置塊中的application塊(更多詳情見下文)。
streamname
可以隨意指定。
RTMP預設埠為1935,如果要使用其他埠,必須指定:port
。
播放(HTTP)
http://example.com[:port]/dir?[port=xxx&]app=myapp&stream=mystream
引數dir
用於匹配http配置塊中的location塊(更多詳情見下文)。
HTTP預設埠為80, 如果使用了其他埠,必須指定:port
。
RTMP預設埠為1935,如果使用了其他埠,必須指定port=xxx
。
引數app
用來匹配application塊,但是如果請求的app
出現在多個server塊中,並且這些server塊有相同的地址和埠配置,那麼還需要用匹配主機名的server_name
配置項來區分請求的是哪個application塊,否則,將匹配第一個application塊。
引數stream
用來匹配發布流的streamname。
例子
假設在http
配置塊中的listen
配置項是:
http {
...
server {
listen 8080; #不是預設的80埠
...
location /live {
flv_live on;
}
}
}
在rtmp
配置塊中的listen
配置項是:
rtmp {
...
server {
listen 1985; #不是預設的1935埠
...
application myapp {
live on;
}
}
}
那麼基於HTTP的播放url是:
http://example.com:8080/live?port=1985&app=myapp&stream=mystream
注意
如果使用的是HTTP版本1.1(HTTP/1.1),chunked_transfer_encoding
配置項預設是開啟的。
由於一些播放器不支援HTTP塊傳輸,這種情況下最好在指定了flv_live on;
的location中指定chunked_transfer_encoding off
,否則播放會失敗。
nginx.conf例項
注意
配置項rtmp_auto_push
,rtmp_auto_push_reconnect
和rtmp_socket_dir
在Windows上不起作用,除了Windows 10 17063以及後續版本之外,因為多程序模式的relay
需要Unix domain socket的支援,詳情請參考Unix domain socket on Windows 10。
worker_processes 4; #執行在Windows上時,設定為1,因為Windows不支援Unix domain socket
worker_cpu_affinity 0001 0010 0100 1000; #執行在Windows上時,省略此配置項
error_log logs/error.log error;
#如果此模組被編譯為動態模組並且要使用與RTMP相關的功
#能時,必須指定下面的配置項並且它必須位於events配置
#項之前,否則NGINX啟動時不會載入此模組或者載入失敗
#load_module modules/ngx_rtmp_module.so;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
server {
listen 80;
location / {
root /var/www;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /live {
flv_live on; #開啟HTTP播放FLV直播流功能
chunked_transfer_encoding on; #支援'Transfer-Encoding: chunked'方式回覆
add_header 'Access-Control-Allow-Origin' '*'; #新增額外的HTTP頭
add_header 'Access-Control-Allow-Credentials' 'true'; #新增額外的HTTP頭
}
location /stat {
#push和pull狀態的配置
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /var/www/rtmp; #指定stat.xsl的位置
}
}
}
rtmp_auto_push on;
rtmp_auto_push_reconnect 1s;
rtmp_socket_dir /tmp;
rtmp {
out_queue 4096;
out_cork 8;
max_streams 64;
server {
listen 1935;
server_name www.test.*; #用於虛擬主機名字尾通配
application myapp {
live on;
gop_cache on; #開啟GOP快取,降低播放延遲
}
}
server {
listen 1935;
server_name *.test.com; #用於虛擬主機名字首通配
application myapp {
live on;
gop_cache on; #開啟GOP快取,降低播放延遲
}
}
server {
listen 1935;
server_name www.test.com; #用於虛擬主機名完全匹配
application myapp {
live on;
gop_cache on; #開啟GOP快取,降低播放延遲
}
}
}
相關推薦
Car-eye-http-flv-module 實現nginx-rtmp-mudule HTTP方式的FLV直播功能
nginx-rtmp-mudule RTMP 是一款優秀的Car-eye-http-flv-module 是在nginx-rtmp-mudule RTMP基礎上修改的流媒體伺服器,除了支援flash播放器外,還支援現在常見的播放器。完美實現了HTTP方式的FLV直播功能。本文
Dump Rtmp Stream To FLV File (從Rtmp流儲存為FLV檔案)
一、準備工作 搭建本地rtmp服務: https://www.cnblogs.com/doudouyoutang/p/6602430.html 獲取使用到的庫,openssl 和 librtmp 參考: https://www.jianshu.co
Nginx-rtmp+ FFmpeg +Dodker + vue.js 直播系統搭建
進入 doc tex fas rtmp服務器 服務器搭建 display controls export 思路(如圖): 1,開啟推流服務器(這裏我的Nginx-rtmp服務器搭建成功) 進入docker 開啟推流服務器 docker run -it -p 193
基於nginx-rtmp-module模塊實現的HTTP-FLV直播模塊(nginx-http-flv-module)
發現 app1 多播 git app 命令 避免 put 編譯 本文後續的內容將在這裏更新:《基於nginx-rtmp-module模塊實現的HTTP-FLV直播模塊(nginx-http-flv-module)續》。註意:下文的配置很多已經不能用了,因為現在的實現跟早期
基於nginx-rtmp-module模組實現的HTTP-FLV直播模組nginx-http-flv-module(二)
由於《基於nginx-rtmp-module模組實現的HTTP-FLV直播模組nginx-http-flv-module(一)》內容已經很長,所以後續的更新將記錄在這兒。非常感謝網友們的測試反饋和程式碼提交!專案地址
基於nginx-rtmp-module模組實現的HTTP-FLV直播模組nginx-http-flv-module(一)
本文後續的內容將在這裡更新:《基於nginx-rtmp-module模組實現的HTTP-FLV直播模組nginx-http-flv-module(二)》。注意:下文的配置很多已經不能用了,因為現在的實現跟早期的實現相差有點大。而為了看到整個專案的變遷史,所以保留了
obs nginx-rtmp-module搭建流媒體服務器實現直播 ding
video 接下來 監聽 comm 地址 什麽 ip地址 automake text 接下來我就簡單跟大家介紹一下利用nginx來搭建流媒體服務器。 我選擇的是騰訊雲服務器 1、下載nginx-rtmp-module: nginx-rtmp-module的官方gith
利用nginx與nginx-rtmp-module搭建流媒體伺服器實現直播
轉自:https://www.cnblogs.com/suiyuewuxin/p/7256972.html 使用環境是centos 7.0+nginx;可以實現簡單的流媒體服務。 先下載nginx-rtmp-module拓展: nginx-rtmp-module的官方github地址:h
nginx+nginx-rtmp-module實現直播服務
環境 centos 6.8 nginx 1.10.3 nginx-rtmp-module 下載nginx-rtmp-module 當前目錄/opt git clone https://github.c
通過nginx,nginx-rtmp-module實現流媒體直播
1、 下載nginx http://nginx.org/en/download.html 下載nginx-rtmp-module: nginx-rtmp-module的官方github地址:https://github.com/arut/nginx-rtmp-module
nginx-rtmp-module授權機制實現直播推流多房間授權認證
假設nginx直播伺服器已經搭建完畢,如果還沒有搭建完畢可以查閱利用nginx的nginx-rtmp-module搭建流媒體直播伺服器這篇文章。在開發直播專案時推流應該是需要做許可權認證的,不是任何人都可以隨意向直播伺服器推流,這就需要許可權認證,實現起來也不復雜,只需要在nginx配置檔案中的rt
obs nginx-rtmp-module搭建流媒體伺服器實現直播 ding
歡迎大家來此瀏覽,希望大家一塊在此學習,共同交流進步。 接下來我就簡單跟大家介紹一下利用nginx來搭建流媒體伺服器。 我選擇的是騰訊雲伺服器 1、下載nginx-rtmp-module: 使用命令: git clone https://github.com/
HTTP協議下可拖動時間軸播放FLV的實現(偽流媒體)
prot pac -m method bytes encoding 編寫 時間軸 delay HTTP協議下實現FLV的播放其實並不復雜,當初實現的原理是使用了flowPlayer插件實現的,效果還不錯。但仍有兩大問題影響著客戶的訪問情緒: 1.預加載時頁面卡死,似乎沒有
Windows下編譯nginx-rtmp-module
win10 threshold tar ram 1.2 openss direct down 0.11 http://nginx.org/en/docs/howto_build_on_win32.html 官網上的操作說明。 官網的方法Nginx編譯方法,思路是一致的,只是
nginx使用replace-filter-nginx-module實現內容替換
http nts fix replace 約定 roo ips 添加 ace 有時候我們想對響應(例如PHP接口)返回的內容做些字符串,雖然可以使用各語言代碼相關方法(例如PHP的str_replace)進行替換,但是在nginx層面替換是更方便的,無需修改代碼。 約定
nginx與nginx-rtmp-module搭建流媒體服務器
vedio sans nginx配置 mark dir pen isp 自己 需要 轉載自my student 克明zhang 現在,一起學習一下如何自己搭建一個流媒體服務器吧! 本次搭建流媒體使用的環境是centos 7.0+nginx; 讓我們一起開始奇妙的流媒體之
nginx安裝報錯:configure: error: the HTTP rewrite module requires the PCRE library
error: config pcr nginx 參考 body post iam sta 參考:http://blog.51cto.com/williamx/958398 需要安裝pcre-devel與openssl-devel yum -y install pcre-de
windows下搭建ffmpeg+nginx+rtmp-module搭建實時視頻環境
target ati 靜態 hub 標簽 int 性能 pan href 下載ffmpeg的Windows靜態版; https://ffmpeg.zeranoe.com/builds/win64/static/下載nginx-rtmp-windows版:https://gi
2.Nginx學習-The HTTP Core module
nginx module http core module是Ngnix提供WEB服務的最核心模塊,默認被開啟。本篇文章將講述該模塊的一些配置配置文件結構:http { server {// virtual website location{ } }
流媒體技術學習筆記之(三)Nginx-Rtmp-Module統計某頻道在線觀看流的客戶數
sele lec rest uri class origin 客戶 擴展 raw 獲得訂閱者人數,可以方便地顯示觀看流的客戶數。 查看已經安裝好的模塊 /usr/local/nginx/sbin/nginx -V 安裝從源編譯Nginx和Nginx-RTMP所