利用docker镜像搭建流媒体服务进行rtmp推流及点流(rtmp,hls,http-flv)测试

利用docker镜像搭建流媒体服务进行rtmp推流及点流(rtmp,hls,http-flv)测试

搭建流媒体服务

  • 利用网上的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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker-Nginx-RTMP是一个基于Docker容器的Nginx RTMP服务器。你可以在Docker Hub的镜像页面上搜索关键词"nginx rtmp"来找到相关的镜像[1]。使用Docker可以方便地安装和部署Nginx RTMP服务器,而且在开发和测试过程中能避免许多安装和配置问题[2]。 为了在Docker中安装Nginx RTMP,你可以使用以下命令: ``` sudo docker run -d --name rtmp -p 1935:1935 -p 8080:8080 -v ~/Documents/nginx-1.19.2/conf/nginx.conf:/etc/nginx/nginx.conf alqutami/rtmp-hls ``` 这个命令将在Docker容器中运行一个名为"rtmp"的容器,并将主机的1935端口和8080端口映射到容器的对应端口。同时,使用-v参数来将本地目录`~/Documents/nginx-1.19.2/conf/nginx.conf`挂载到容器中的`/etc/nginx/nginx.conf`目录中,以便配置Nginx RTMP服务器。 通过上述步骤,你就可以在Docker中成功安装并运行Nginx RTMP服务器了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [docker 搭建nginx-rtmp](https://blog.csdn.net/chy555chy/article/details/109778101)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [docker安装nginx+rtmp模块搭建服务器实现ffmpeg推流+ffplay播放](https://blog.csdn.net/lwwl12/article/details/104903403)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值