文章目錄
利用docker鏡像搭建流媒體服務進行rtmp推流及點流(rtmp,hls,http-flv)測試
搭建流媒體服務
推流
通過ffmpeg
通過obs
點流
參考
利用docker鏡像搭建流媒體服務進行rtmp推流及點流(rtmp,hls,http-flv)測試
我們經常需要一些測試視訊流,比如rtmp,http-flv,hls,但網上可用的比較少,于是可以自己在本地搭建
如果需要rtsp流的可以看這篇:利用live555搭建最簡單的rtsp流媒體服務
搭建流媒體服務
利用網上的mugennsou/http-flv鏡像可以快速搭建流媒體服務
在本例中,運作腳本如下
docker run -it -d \
--restart always \
-p 8380:80 \
-p 1935:1935 \
--name nginx-http-flv \
mugennsou/nginx-http-flv
注意8380是http端口,1935是rtmp端口
另外,如果出現跨域問題,需要檢查配置檔案中是否開啟跨域,如下圖
為了支援hls,需要對配置做如下修改
首先修改/etc/nginx/conf.d/rtmp/rtmp.conf,增加hls相關配置
server {
listen 1935;
application demo {
live on;
gop_cache on;
#enable HLS ,主要就是增加如下配置
hls on;
hls_path /tmp/hls;
hls_fragment 3;
hls_playlist_length 20;
}
}
首先修改/etc/nginx/conf.d/http/http-flv.conf,在server子產品下增加一個location,如下
location /hls {
# Disable cache
add_header Cache-Control no-cache;
# CORS setup
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length';
# allow CORS preflight requests
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp/;
add_header Cache-Control no-cache;
}
以上修改之後執行
nginx -t # 測試配置檔案是否有誤
nginx -s reload # 重新加載
推流
本例是通過rtmp進行推流,最後可以通過rtmp或http-flv進行點流
推流方式可以有多種,以下介紹通過ffmpeg和obs,obs是個可視化工具,使用起來更為友善一些
在本例中,推流位址為 rtmp://192.168.25.105:1935/demo/[自定義名稱]
其中demo就是流媒體服務中配置的,預設就是demo,自定義名稱則可以随便取,保持推流和點流時一緻即可
通過ffmpeg
利用ffmpeg進行本地推流,指令參考如下
ffmpeg -re -i H:\testvideo\h265_high.mp4 -vcodec copy -acodec copy -f flv rtmp://192.168.25.105:1935/demo/stream-1
以上指令推送的mp4檔案注意編碼要是h264的,否則可能會出錯,flv官方不支援hevc
如果要将筆記本的攝像内容進行推流
先要檢視筆記本相機資訊,通過如下指令
ffmpeg -list_devices true -f dshow -i dummy
或者在裝置管理器中檢視
然後利用ffmpeg進行推流
ffmpeg -f dshow -i video="Integrated Camera":audio="麥克風陣列 (Realtek High Definition Audio)" -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -f flv "rtmp://192.168.25.105:1935/demo/stream-1"
其中的video和audio根據自己機子情況修改
通過obs
obs推流相對來說很簡單,主要就是配置一下這裡即可
如果想推相機的流直接增加一個視訊捕獲裝置即可,如下圖
點流
最後點流可以用vlc進行測試,按照本例配置後點流位址如下
http-flv點流
http://192.168.25.105:8380/live?app=demo&stream=stream-1
rtmp點流
rtmp://192.168.25.105:1935/demo/stream-1
hls流
http://192.168.25.105:8380/hls/stream-1.m3u8
參考
https://github.com/mugennsou/http-flv
https://blog.csdn.net/yelin042/article/details/78434454
搭建HLS直播測試環境 - 簡書 https://www.jianshu.com/p/4006d47eccf9