利用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