天天看點

docker流媒體伺服器性能,利用docker鏡像搭建流媒體服務進行rtmp推流及點流(rtmp,hls,http-flv)測試...

文章目錄

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

另外,如果出現跨域問題,需要檢查配置檔案中是否開啟跨域,如下圖

docker流媒體伺服器性能,利用docker鏡像搭建流媒體服務進行rtmp推流及點流(rtmp,hls,http-flv)測試...

為了支援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

或者在裝置管理器中檢視

docker流媒體伺服器性能,利用docker鏡像搭建流媒體服務進行rtmp推流及點流(rtmp,hls,http-flv)測試...

然後利用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推流相對來說很簡單,主要就是配置一下這裡即可

docker流媒體伺服器性能,利用docker鏡像搭建流媒體服務進行rtmp推流及點流(rtmp,hls,http-flv)測試...

如果想推相機的流直接增加一個視訊捕獲裝置即可,如下圖

docker流媒體伺服器性能,利用docker鏡像搭建流媒體服務進行rtmp推流及點流(rtmp,hls,http-flv)測試...

點流

最後點流可以用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