rtmp直播

这篇具有很好参考价值的文章主要介绍了rtmp直播。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

技术要求:nginx+nginx-rtmp+ffmpeg+VLC
跟着大佬走的:
传送门
准备工作:

首先需要一台公网ip的服务器

这是使用天翼云的弹性云主机:免费试用1个月
天翼云官网
rtmp直播,linux,centos
点击关机,更多里面选择重置密码,

默认用户名为root

使用xshell连接

弹性ip:xx.xx.xx.xx

root 密码
rtmp直播,linux,centos
创建目录:mkdir rtmp

切换目录

使用winSCP软件上传rtmp源码文件,下载nginx:

wget http://nginx.org/download/nginx-1.8.0.tar.gz

解压:tar -xvf nginx-1.8.0.tar.gz
cd nginx-1.8.0/

安装依赖库
yum -y install pcre-devel

yum -y install openssl openssl-devel
# 注释:add-module=自己的nginx-rtmp目录 --with-http_ssl_module
./configure --add-module=../nginx-rtmp-module-master --with-http_ssl_module

rtmp直播,linux,centos

	# 编译
	make

	make install
# 启动nginx:
	cd /usr/local/nginx/sbin
    ./nginx

nginx默认使用的是80端口,开放防火墙
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
天翼云后台开放安全组:80 0.0.0.0/0
但其实这里的80端口是不能使用的,除非备案!!!
天翼云服务器的80、443、8080端口均需要备案才能访问,其他端口是开放的
修改nginx的端口为8090

cd /usr/local/nginx/conf

vi nginx.conf

rtmp直播,linux,centos


重启nginx

sudo pkill -9 nginx

./nginx

查看nginx端口是否是8090

sudo netstat -anp | grep nginx

rtmp直播,linux,centos

关闭防火墙
首先,您需要打开终端并以root用户身份登录。

然后,使用以下命令停止firewalld服务,并禁用防火墙服务
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 接下来,您可以使用以下命令来检查是否已成功停止防火墙服务。
sudo systemctl status firewalld

天翼云后台添加安全组:
rtmp直播,linux,centos

出来了:
rtmp直播,linux,centos

添加rtmp配置

cd /usr/local/nginx/conf

vi nginx.conf
rtmp {
        server {
        listen 1935;
        chunk_size 4000;
        application live {
                live on;
                }
        }
}
# 重启nginx
sudo pkill -9 nginx
cd /usr/local/nginx/sbin
./nginx

推流测试

下载ffmpeg源码包
window电脑配置环境变量(path)
rtmp直播,linux,centos
使用ffmpeg推流
用gitbash打开,桌面有一个video.mp4 ,推流到ip为36.111.171.xx.xx(自己的):1935/live/流id(叫test也行,只是拉流也需要同名流id才能拉取成功)

 ffmpeg -re -i video.mp4 -f flv rtmp://36.111.171.36:1935/live/s1

rtmp直播,linux,centos

拉流测试

电脑端拉流测试

使用VLC软件进行拉流,win11环境拉取服务器视频

点击媒体:选择打开网络串流,输入rtmp://36.111.xx.xx:1935/live/s1
rtmp直播,linux,centos

安卓手机拉流测试

下载安卓版VLC软件:点击更多->新建文件串流->输入
rtmp://36.111.xx.xx:1935/live/s1
rtmp直播,linux,centos

项目实战demo:

创建一个uniapp项目,创建一个后缀为.nvue的文件
将代码里面的data中的url,src中的ip换为自己的。

<template>
    <view>
		<!-- 音视频播放 -->
		<video id="myVideo" 
		:src="src"
		@error="videoErrorCallback" 
		:danmu-list="danmuList" 
		enable-danmu danmu-btn controls>
		</video>
		<!-- 音视频录制 -->
        <live-pusher id='livePusher' ref="livePusher" class="livePusher" :url="url"
        mode="SD" :muted="false" :enable-camera="true" :auto-focus="true" :beauty="1" whiteness="2"
        aspect="9:16" @statechange="statechange" @netstatus="netstatus" @error = "error"
        ></live-pusher>
     <!-- <button class="btn" @click="start">开始推流</button>
        <button class="btn" @click="pause">暂停推流</button>
        <button class="btn" @click="resume">resume</button>
        <button class="btn" @click="stop">停止推流</button>
        <button class="btn" @click="snapshot">快照</button>
        <button class="btn" @click="startPreview">开启摄像头预览</button>
        <button class="btn" @click="stopPreview">关闭摄像头预览</button>
        <button class="btn" @click="switchCamera">切换摄像头</button> -->
    </view>
</template>


<script>
    export default {
        data() {
			return {
				url:'rtmp://36.111.171.36:1935/live/s1',
				src:'rtmp://36.111.171.36:1935/live/s1'
				// url:'rtmp://192.168.74.128:1935/live/s1',
				// src:'rtmp://192.168.74.128:1935/live/s1'
			}
        },
        onReady() {
            // 注意:需要在onReady中 或 onLoad 延时
            this.context = uni.createLivePusherContext("livePusher", this);
			this.start();
        },
        methods: {
            statechange(e) {
                console.log("statechange:" + JSON.stringify(e));
            },
            netstatus(e) {
                console.log("netstatus:" + JSON.stringify(e));
            },
            error(e) {
                console.log("error:" + JSON.stringify(e));
            },
            start: function() {
                this.context.start({
                    success: (a) => {
                        console.log("livePusher.start:" + JSON.stringify(a));
                    }
                });
            },
            close: function() {
                this.context.close({
                    success: (a) => {
                        console.log("livePusher.close:" + JSON.stringify(a));
                    }
                });
            },
            snapshot: function() {
                this.context.snapshot({
                    success: (e) => {
                        console.log(JSON.stringify(e));
                    }
                });
            },
            resume: function() {
                this.context.resume({
                    success: (a) => {
                        console.log("livePusher.resume:" + JSON.stringify(a));
                    }
                });
            },
            pause: function() {
                this.context.pause({
                    success: (a) => {
                        console.log("livePusher.pause:" + JSON.stringify(a));
                    }
                });
            },
            stop: function() {
                this.context.stop({
                    success: (a) => {
                        console.log(JSON.stringify(a));
                    }
                });
            },
            switchCamera: function() {
                this.context.switchCamera({
                    success: (a) => {
                        console.log("livePusher.switchCamera:" + JSON.stringify(a));
                    }
                });
            },
            startPreview: function() {
                this.context.startPreview({
                    success: (a) => {
                        console.log("livePusher.startPreview:" + JSON.stringify(a));
                    }
                });
            },
            stopPreview: function() {
                this.context.stopPreview({
                    success: (a) => {
                        console.log("livePusher.stopPreview:" + JSON.stringify(a));
                    }
                });
            }
        }
    }
</script>


<style>
	
</style>

运行到安卓手机
rtmp直播,linux,centos
效果:下面在推流,上面在拉流,

由于网络传输,拉流的视频会有延时(直播)
rtmp直播,linux,centos
完结撒花!!!码字不易,点个赞再走啦文章来源地址https://www.toymoban.com/news/detail-670905.html

到了这里,关于rtmp直播的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大疆无人机基于RTMP服务推流直播

    流程:配置nginx服务器---打开服务器----配置无人机rtmp地址,将无人机画面推流到服务器上----运行vlc从服务器上拉取视频流播放。 学习视频链接(可借鉴):https://www.youtube.com/watch?v=QNEjTGQL7wc 一、在linux服务器中(ubuntu18.04)下载安装docker容器,docker分为docker engine 和 docker desktop 我

    2024年02月05日
    浏览(84)
  • nginx rtmp http_flv直播推流

    安装配置nginx 配置 [root@localhost conf]# cat nginx.conf|grep -ivE ‘ #| $| #’ [root@localhost conf]# cat flv.conf |grep -vE ‘^$’ 启动 注册服务 测试 - 推流 -----------------end

    2024年02月14日
    浏览(53)
  • 宝塔面板协助搭建RTMP直播服务器(亲测可用)

    1.RTMP直播需要Nginx-Rtmp模块,你现在需要先卸载宝塔所安装的Nginx(或你目前已经安装了的Nginx,记得先备份好重要文件。),然后找到/www/server/panel/install/nginx.sh,Ctrl+F找./configure  2.然后在他后面加上( (大约337行))--add-module=/www/server/nginx_plus/nginx-rtmp-module 3.直接输入git clone h

    2024年03月15日
    浏览(74)
  • 常用的RTMP、RTSP、HTTP协议流直播流地址

    一、RTMP、RTSP、HTTP协议 这三个协议都属于互联网 TCP/IP 五层体系结构中应用层的协议。理论上这三种都可以用来做视频直播或点播。但通常来说,直播一般用 RTMP、RTSP。而点播用 HTTP。下面分别介绍下三者的特点。 1,RTMP协议 (1)是流媒体协议。 (2)RTMP协议是 Adobe 的

    2023年04月23日
    浏览(47)
  • 【虚幻引擎】UE5 VLC接入网络监控、视频直播、网络直播支持RTSP、RTMP

     我们在网上下载的插件一般是UE4版本的插件,这个时候就需要我们自己去修改编译,接下来教大家修改插件来适配自己的引擎。 如果不想自己编译代码,可以直接找我拿编译好的UE5.0、UE5.1、UE5.2的插件源码 教学视频:【UE5】VLC 实时视频监控、直播视频播放支持rtmp、rtsp格式

    2024年02月07日
    浏览(50)
  • 心得:大疆无人机RTMP推流直播(Windows版本已成功)

    1、nginx的Gryphon版本,它内部已经集成了rtmp的推流编译(nginx-Gryphon) 2、服务器状态检查程序stat.xsl(nginx-rtmp-module) 3、ffmpeg(ffmpeg) 4、VLC(VLC) 1、将下载好的nginx 1.7.11.3 Gryphon解压修改文件名为nginx-1.7.11.3-Gryphon,绝对路径中不能有中文,必须全为英文! 2、在根目录中的con

    2024年02月03日
    浏览(53)
  • 使用nginx部署rtmp流媒体服务器完成直播推流

    笔者为了开发方便使用windows系统的Nginx进行配置。 下载Nginx http://nginx-win.ecsds.eu/download/ 在windows版本下只有个别的几个版本才支持rtmp服务,本文选择版本 nginx 1.7.11.3 Gryphon.zip 解压下载zip文件 在conf文件夹中找到 nginx-win.conf 配置我们所需要的内容 rtmp是adobe基于flash开发的音视频

    2024年02月15日
    浏览(47)
  • OpenCV+FFmpeg 实现人脸检测Rtmp直播推流(Python快速实现)

    windows平台笔记本摄像头视频采集、人脸识别,识别后将视频推流到RTMP流媒体服务器,在任意客户端可以进行RTMP拉流播放。 效果如图: 使用VLC播放器进行拉流。 需要先安装OpenCV的python包以及FFmpeg。 对于ffmpeg有两种调用方式,但这两种方式都需要先安装ffmpeg,调用的具体区别

    2024年02月12日
    浏览(42)
  • 用nginx实现一个直播服务—RTMP推流和HTTP-FLV拉流

    目录 一、环境准备 二、安装编译nginx所需的安装包和下载nginx原代码包 三、nginx配置 四、启动nginx服务 五、测试推流和拉流服务 六、摄像头数据采集 七、查看统计 这篇文章主要记录用nginx实现直播服务,通过RTMP推流和通过HTTP-FLV或RTMP拉流,并在页面中播放。 CentOS Linux rel

    2024年02月13日
    浏览(54)
  • SRS OBS利用RTMP协议实现音视频推拉流;WebRTC 屏幕直播分享工具

    参考:https://ossrs.net/lts/zh-cn/docs/v5/doc/getting-started 1)docker直接运行SRS服务: 运行起来后可以http://localhost:8080/ 看到服务基本信息: 2) OBS 推流 在设置里设置直播地址: 然后回到首页点击开始直播 3)点击http://localhost:8080/ 可以网页查看流视频 SRS低延迟启动(暂时测试下来延迟

    2024年04月13日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包