linux nginx rtmp 直播,nginx+rtmp简单直播

linux nginx rtmp 直播,nginx+rtmp简单直播首先了解一下相关协议 可以阅读安装不赘述 如果已有 yum 等安装的 Nginx 通过 nginx V 得到编译参数 下载相同版本的 Nginx 源码 在编译参数最后添加 add module 下载解压的 RTMP 模块目录 重新编译安装即可 配置 Nginx 在主配置文件 nginx conf 的 http 模块下新增 rtmp 模块 rtmp server allowpublish l

首先了解一下相关协议,可以阅读

安装不赘述。如果已有yum等安装的Nginx,通过 nginx -V 得到编译参数, 下载相同版本的Nginx源码,在编译参数最后添加 –add-module=[下载解压的RTMP模块目录]重新编译安装即可。

配置 Nginx,在主配置文件 nginx.conf 的 http 模块下新增 rtmp 模块:

rtmp {

server {

allow publish all;

listen 1935;

ping 30s;

notify_method get;

application myapp {

live on;

# sample play/publish handlers

#on_play http://localhost:8080/on_play;

#on_publish http://localhost:8080/on_publish;

# sample recorder

#recorder rec1 {

# record all;

# record_interval 30s;

# record_path /tmp;

# record_unique on;

#}

# sample HLS

hls on;

hls_path /tmp/hls;

# hls_sync 100ms;

hls_fragment 5s;

hls_cleanup off;

record all;

record_path /tmp/record;

record_unique on;

}

# Video on demand

application vod {

# play /var/Videos;

play /usr/local/video;

}

# Video on demand over HTTP

#application vod_http {

# play http://localhost:8080/vod/;

#}

}

}

上边定义了一个名为 myapp 的应用, 开启了直播 live, 同时也开启了 hls 和视频录制 record .此时若进行直播,hls功能会将直播流录制成 ts 视频片段, record 功能则将直播流完整录制成flv视频文件,视频使用 h.264 编码,音频是 aac 编码. hls 主要是为H5移动端服务,还需要配置一个 http 服务器:

server {

listen 8090;

server_name 134.175.xxx.xxx;

#charset koi8-r;

#access_log logs/host.access.log main;

# location / {

# root /tmp/hls;

# index index.html index.htm;

#}

#HLS配置开始,这个配置为了`客户端`能够以http协议获取HLS的拉流

location / {

# Serve HLS fragments

types {

application/vnd.apple.mpegurl m3u8;

video/mp2t ts;

}

root /tmp/hls;

add_header Cache-Control no-cache;

}

#HLS配置结束

# rtmp stat

location /stat {

rtmp_stat all;

rtmp_stat_stylesheet stat.xsl;

}

location /stat.xsl {

# you can move stat.xsl to a different location

# root /usr/build/nginx-rtmp-module;

root /usr/local/src/nginx-rtmp-module-1.2.1;

}

# rtmp control

location /control {

rtmp_control all;

}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

#

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

万事具备,可以在服务器端使用 ffmpeg 进行流测试:

ffmpeg -re -i /usr/local/video/WeChat_642.mp4 -c copy -f flv rtmp://134.175.xxx.xxx/myapp/wechat

这里推向的主机不是localhost, 这也是上边 rtmp 中添加 allow publish all 的原因, 不添加这一句是只能向 localhost 推的. 我们在本地打开支持 rtmp和hls协议的客户端如 potplayer, 打开链接即可观看:

rtmp地址是: rtmp://134.175.xxx.xxx/myapp/wechat

http地址是: http://134.175.xxx.xxx/wechat.m3u8

http 地址,在移动端使用自带浏览器打开也能播放, Android 和 IOS 均支持, 只是实际测试效果并不理想.

也可以在本地进行真实推流测试, 安装 OBS Studio 软件,在设置的推流一项,服务选择自定义, 服务器是写到 rtmp 中创建的应用名部分, 串流密钥则是我们随便自定义的,类似上边使用 ffmpeg 推流中最后的 wechat .

78e70321c25fd4185cee6e312581dccd.png

假如我们填写串流密码为 live,这样我们实际推流后, 生成的 m3u8 文件是 live.m3u8, 生成的 ts 视频片段就是 live-0.ts, live-1.ts等,录制的视频文件是 live-.flv,命名会默认添加时间戳后缀.

以上就是最简单的直播系统, 当然实际生产环境中要比这个复杂得多,前端录制,上传,后端转码,推流,各方面还有很多的优化,否则根本无法流畅观看.除了最基本的画面,还有聊天系统,奖赏,特效,连麦等等,一般商用还是得接入第三方大厂如阿里,腾讯,七牛等成熟的解决方案!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178945.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午4:10
下一篇 2026年3月26日 下午4:10


相关推荐

  • 简单的有监督学习实例——简单线性回归[通俗易懂]

    简单的有监督学习实例——简单线性回归[通俗易懂]sklearn.linear_model.LinearRegression线性回归https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html首先,要创建一组数据,随机选取一组x数据,然后计算出它在2x-1这条线附近对应的数据,画出其散点图:#演示简单的线性回归i…

    2022年5月28日
    54
  • ComponentName的用法

    ComponentName的用法在android应用中打开别的应用我当时第一眼看到的时候是懵逼的,这是个什么玩意开启界面不都是startActivity(intent)的吗?后来才反应过来不是要起自己界面中的Activity

    2022年7月1日
    38
  • 手把手教你一键部署OpenClaw(Clawdbot),2分钟搞定!

    手把手教你一键部署OpenClaw(Clawdbot),2分钟搞定!

    2026年3月13日
    1
  • 开关电源在模拟量采集系统中应用

    开关电源在模拟量采集系统中应用br nbsp nbsp 尽管在模拟量采集系统中 对 ADC 芯片等的供电一般建议最好不用电源 target blank 开关电源 以避免其固有的纹波大 噪声等问题 但电源 target blank 开关电源仍以其高效率 低价格等优点得到广泛应用 尤其是在工业控制等领域 本文介绍电源 target blank 开关电源在模拟量采集系统中的应用 并对可能出现的一些问题进行分析 nbsp br 电源 target blank 开关电源对 ADC 芯片工作的影响及解决方法 br 电源

    2026年2月24日
    1
  • Java for循环和foreach循环区别

    Java for循环和foreach循环区别一 区别 1 for 循环是基于下标 偏移量 来定位的循环 2 foreach 是基于指针直接移动 地址运算 的循环 3 foreach 与 for 循环的明显差别在于 foreach 循环时循环对象 数组 集合 被锁定 不能对循环对象中的内容进行增删改操作 二 两者效率比较对于通过下标访问的数据结构 例如数组 Arraylist 使用下标访问的 for 循环效率本身就很高 所以 foreach 这种指针直接移

    2026年3月19日
    2
  • Ajax清晰请求步骤与代码

    Ajax清晰请求步骤与代码异步请求ajax的使用在前后台传递数据,优化用户体验起着至关重要的角色,那么下面给大家简单罗列了一下ajax请求的步骤与代码。一、原生JS中的Ajax:1、使用ajax发送数据的步骤第一步:创建异步对象varxhr=newXMLHttpRequest();第二步:设置请求行open(请求方式,请求url)://get请求如果有参数就需要在…

    2022年5月16日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号