Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器

简介: Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器

e4607840f5413025de5ed7aac443d7e3_format,png.png #!/bin/sh


…/ 代表当前目录的上一级

HTTP_FLV_MODULE_PATH=…/nginx-http-flv-module-1.2.7

OpenSSL_PATH=…/openssl-1.1.1d


#–prefix=./bin 代表编译完成之后输出的路径地址

#–add-module 将拓展模块添加到当前一起编译

./configure --prefix=./bin

image.png

通过 make install 构建

make

make install


如果中途没有报任何错误,并且输出了我们指定的 bin 目录,那么就代表成功了。如下图所示:


cb02fd2899a09dc241d86eb5bbdfcef2_bb86f72b946906c5f7e6d177cf6e19fb.png


5. 配置 nginx.conf

在当前目录下输入 vim bin/conf/nginx.conf 进行配置 rtmp、http 直播协议,我直接贴上我的配置


user root;

worker_processes auto; #运行在Windows上时,设置为1,因为Windows不支持Unix domain socket

#worker_processes auto; #1.3.8和1.2.5以及之后的版本


#worker_cpu_affinity 0001 0010 0100 1000; #只能用于FreeBSD和Linux

worker_cpu_affinity auto; #1.9.10以及之后的版本


error_log logs/error.log error;


#如果此模块被编译为动态模块并且要使用与RTMP相关的功

#能时,必须指定下面的配置项并且它必须位于events配置

#项之前,否则NGINX启动时不会加载此模块或者加载失败


#load_module modules/ngx_http_flv_live_module.so;
events {
worker_connections 4096;
}
http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
server {
listen 80;//自定义填写 http 的端口
location / {
root /root/nginx/nginx-http-flv-module-1.2.7/test/www;
index index.html index.htm;//默认首页
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /flvjsplay {//测试地址
root /root/nginx/flv.js-1.5.0;
index index.html;//flv.js 测试播放首页
}
location /flv {
flv_live on; #打开HTTP播放FLV直播流功能
chunked_transfer_encoding on; #支持’Transfer-Encoding: chunked’方式回复
#跨域
add_header ‘Access-Control-Allow-Origin’ ‘*’; #添加额外的HTTP头
add_header ‘Access-Control-Allow-Credentials’ ‘true’; #添加额外的HTTP头
}
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /root/nginx/nginx-http-flv-module-1.2.7;
add_header ‘Cache-Control’ ‘no-cache’;
}
location /dash {
root /root/nginx/nginx-http-flv-module-1.2.7;
add_header ‘Cache-Control’ ‘no-cache’;
}
location /stat {
#push和pull状态的配置
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /root/nginx/nginx-http-flv-module-1.2.7; #指定stat.xsl的位置
}
#如果需要JSON风格的stat, 不用指定stat.xsl
#但是需要指定一个新的配置项rtmp_stat_format
#location /stat {

rtmp_stat all;

rtmp_stat_format json;

#}
location /control {
rtmp_control all; #rtmp控制模块的配置
}
}
}
rtmp_auto_push on;
rtmp_auto_push_reconnect 1s;
rtmp_socket_dir /root/nginx/nginx-http-flv-module-1.2.7;
rtmp {
out_queue 4096;
out_cork 8;
max_streams 128;
timeout 30s;
drop_idle_publisher 30s;


log_interval 5s; #log模块在access.log中记录日志的间隔时间,对调试非常有用

log_size 1m; #log模块用来记录日志的缓冲区大小


server {

listen 1935;//自定义 rtmp 端口


server_name www.test.*; #用于虚拟主机名后缀通配

application devyk {
live on;
gop_cache on; #打开GOP缓存,减少首屏等待时间
}
application hls {
live on;
hls on;
hls_path /root/nginx/nginx-http-flv-module-1.2.7/hls;
}
application dash {
live on;
dash on;
dash_path /root/nginx/nginx-http-flv-module-1.2.7/dash;
}
}
#可以有多个 server 配置
}


Nginx 配置文件详解请看该篇文章

nginx-rtmp-module配置指令详解


在根目录输入 bin/sbin/nginx -t , 如出现如下就说明配置成功。


image.png


6. 开启 nginx 服务

#开启服务

bin/sbin/nginx


#停止服务

bin/sbin/nginx -s stop


#重启服务

bin/sbin/nginx -s reload


7. 网页测试是否都显示正常

1.直接在网页上输入: http://ip:port,如果出现如下,证明首页和基本配置没有问题了


a5e056d85d406c35cc893753f942010c_format,png.png

2.直接在网页输入: http://ip:port/stat 如出现如下监控页面,说明监控页面一切正常。

image.png


现在服务器搭建完成,下面可以进入测试环节了。


rtmp 推流

我们直接用开源 obs-studio 软件进行推流,听说很多游戏主播也用该款推流软件。


e161feac4d40cd16907230b11576fec8_format,png.png


推流源设置:


image.png


如上图所示,证明已经推流成功了,下面我们就来测试拉流。


拉流

flv 在 Html5 上播放

注意: 其它播放也是如下格式,这里只是以 Html 举例说明:


例子:


假设在http配置块中的listen配置项是:


http {
server {
listen 8080; #不是默认的80端口
location /live {
flv_live on;
}
}
}


在rtmp配置块中的listen配置项是:


rtmp {
server {
listen 1935; #也可以不是默认的1935端口
application myapp {
live on;
}
}
}


并且发布的流的名称是mystream,那么基于 HTTP-FLV 的播放url是:


http://ip:8080/flv?port=1935&app=myapp&stream=mystream


播放器这里选择 bilibili 开源的 flv.js , 既然我们已经有服务器了,那就直接把 flv.js 项目部署在服务器上吧


1.安装 npm

#安装 npm

yum install npm

#检查是否安装成功,如有输出证明安装成功

npm --version


2.直接下载 flv.js 到服务器上

#通过 wget 下载

wget https://github.com/bilibili/flv.js/archive/v1.5.0.tar.gz

#解压

tar -zxvf v1.5.0.tar.gz


3.安装

进入 flv.js 根目录直接输入 npm install 命令,安装完成之后会出现一个 node_modules 模块


30e3bac5b42083dec05ef834cb6b6cfc_format,png.png


4.安装生成工具

还是在当前根目录下安装,输入如下命令:

相关文章
|
4月前
|
缓存 负载均衡 应用服务中间件
Nginx 学习
【10月更文挑战第17天】Nginx 是一款非常强大的工具,掌握它的使用和配置对于构建高性能、可靠的 Web 应用至关重要。随着技术的不断发展,Nginx 也在不断更新和完善,为我们提供更好的服务和支持。
|
4月前
|
缓存 负载均衡 算法
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个通用的 TCP/UDP 代理服务器,以及一个邮件代理服务器和通用的 HTTP 缓存服务器。
243 0
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
|
4月前
|
Web App开发 编解码 视频直播
视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术
本文详细介绍了Android端直播技术的全貌,涵盖了从实时音视频采集、编码、传输到解码与播放的各个环节。文章还探讨了直播中音视频同步、编解码器选择、传输协议以及直播延迟优化等关键问题。希望本文能为你提供有关Andriod端直播技术的深入理解和实践指导。
90 0
|
4月前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
237 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
4月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
79 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
4月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
|
4月前
|
Kubernetes 监控 测试技术
k8s学习--基于Ingress-nginx实现灰度发布系统
k8s学习--基于Ingress-nginx实现灰度发布系统
182 2
k8s学习--基于Ingress-nginx实现灰度发布系统
|
4月前
|
Kubernetes 负载均衡 应用服务中间件
k8s学习--ingress详细解释与应用(nginx ingress controller))
k8s学习--ingress详细解释与应用(nginx ingress controller))
545 0
|
5月前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
5月前
|
Web App开发 网络协议 Android开发
Android平台一对一音视频通话方案大比拼:WebRTC VS RTMP VS RTSP,谁才是王者?
【9月更文挑战第4天】本文详细对比了在Android平台上实现一对一音视频通话时常用的WebRTC、RTMP及RTSP三种技术方案。从技术原理、性能表现与开发难度等方面进行了深入分析,并提供了示例代码。WebRTC适合追求低延迟和高质量的场景,但开发成本较高;RTMP和RTSP则在简化开发流程的同时仍能保持较好的传输效果,适用于不同需求的应用场景。
290 1

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    Android历史版本与APK文件结构
  • 3
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 5
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 6
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 8
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 10
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡