当前位置: 首页 > news >正文

使用nginx+rtmp+ffmpeg实现桌面直播

使用nginx+rtmp+ffmpeg实现桌面直播

流媒体服务器搭建

docker run

docker镜像基于添加了rtmp模块的nginx,和ffmpeg

docker pull alfg/nginx-rtmp
docker run -d -p 1935:1935 -p 8080:80 --name=nginx-rtmp alfg/nginx-rtmp

rtmp模块说明

进入容器内部查看

docker ps | grep alfg/nginx-rtmp
docker exec -it [docker镜像id] /bin/sh
cat /etc/nginx/nginx.conf

nginx rtmp模块配置如下

rtmp {
    server {
        listen 1935;
        chunk_size 4000;

        application stream {
            live on;

            exec ffmpeg -i rtmp://localhost:1935/stream/$name
              -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 2500k -f flv -g 30 -r 30 -s 1280x720 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name_720p2628kbs
              -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 1000k -f flv -g 30 -r 30 -s 854x480 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name_480p1128kbs
              -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 750k -f flv -g 30 -r 30 -s 640x360 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name_360p878kbs
              -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 400k -f flv -g 30 -r 30 -s 426x240 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name_240p528kbs
              -c:a libfdk_aac -b:a 64k -c:v libx264 -b:v 200k -f flv -g 15 -r 15 -s 426x240 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name_240p264kbs;
        }

        application hls {
            live on;
            hls on;
            hls_fragment_naming system;
            hls_fragment 5;
            hls_playlist_length 10;
            hls_path /opt/data/hls;
            hls_nested on;

            hls_variant _720p2628kbs BANDWIDTH=2628000,RESOLUTION=1280x720;
            hls_variant _480p1128kbs BANDWIDTH=1128000,RESOLUTION=854x480;
            hls_variant _360p878kbs BANDWIDTH=878000,RESOLUTION=640x360;
            hls_variant _240p528kbs BANDWIDTH=528000,RESOLUTION=426x240;
            hls_variant _240p264kbs BANDWIDTH=264000,RESOLUTION=426x240;
        }
    }
}

推流

使用ffmpeg录屏桌面,视频流推送到搭建好的流媒体服务器。

windows环境

ffmpeg -f gdigrab -r 25 -s 1920*780 -i desktop -f flv rtmp://ip:1935/hls/desktop.1920.flv

linux环境

ffmpeg -f x11grab -r 25 -s 1920*780 -qscale 0.01 -i :0.0 -f flv rtmp://ip:1935/hls/desktop.1920.flv

拉流

播放器播放

vlc播放器下载

打开vlc播放器,选择“打开-》网络串流”并输入推流的url,即可从流媒体服务器拉取视频流并播放

vue展示

使用vue-video-player组件,src为推流的url

参考

nginx+rtmp模块docker镜像
ffmpeg官网
srs

http://www.dtcms.com/a/24633.html

相关文章:

  • docker 安装 Rabbitmq 详解
  • 机器学习实战(5):决策树与随机森林——直观的分类与回归方法
  • leetcode-414.第三大的数
  • c语言易错题(选择)
  • VMware按照的MacOS升级后无法联网
  • A9. Jenkins Pipeline自动化构建,飞书通知
  • 【Github每日推荐】-- 2024 年项目汇总
  • 网工_IP地址
  • 云计算架构学习之Ansible-playbook实战、Ansible-流程控制、Ansible-字典循环-roles角色
  • 蓝桥杯单片机基础部分——6、555定时器
  • 【学术投稿-第四届材料工程与应用力学国际学术会议(ICMEAAE 2025】材料工程与应用力学的探讨
  • Java中的锁
  • 六、敏捷开发工具:项目管理工具
  • 常用Webpack Loader汇总介绍
  • 【C++】结构体排序+sort(),cmp()参数写法口诀
  • 【时时三省】(C语言基础)三种基本结构和改进的流程图
  • Day01 【苍穹外卖】环境搭建与前后端联调
  • 【Java】泛型与集合篇(二)
  • cesium视频投影
  • 【核心算法篇三】《DeepSeek强化学习:Atari游戏训练框架解析》
  • 使用 Docker 部署 Apache Spark 集群教程
  • IDEA——Mac版快捷键
  • 如何使用 MTG2000 和 FreeSWITCH 通过 SIP Trunk 搭建呼叫中心
  • Jetpack Compose系列教程之(16)——Compose生命周期及副作用函数
  • 玩客云 IP查找
  • 【C语言】第四期——循环语句
  • MySQL数据迁移工具
  • DeepSeek预测25考研分数线
  • Dubbo
  • LeetCode1287