百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

流媒体服务新手入门教程02--m7s环境搭建

xsobi 2025-01-02 20:01 1 浏览

m7s后端采用golang语言开发,并提供了前端页面。前端采用vue开发,在2.x的时候是开源的,3.x则闭源了。
但是其接口简单友好,可以根据自己的业务开发自己的前端。借助golang良好的跨平台环境,m7s也能在多个系统和
CPU平台下运行。你甚至可以跑在openwrt的路由器上,接入家中的摄像头,通过ddns或者内网穿透实现远程监控。
当然由于路由器性能一般比较孱弱,可能运行没问题,摄像头推流就会卡了。博主折腾过运行在斐讯N1的armbian上,
推一两路流问题不大,更多的就没有测试过了。

下面我们说一下怎么搭建m7s环境并发布视频流,下一篇文章中我将对示例工程做个简单的代码解析。

环境搭建

使用官方二进制

m7s对主流系统(windwos、linux、mac)提供了官方的二进制文件,可以直接在官网下载。

如果不需要二次开发,建议采用这种方式。以windows为例,下载后解压缩,会有一个windows.exe和一个config.toml文件。


正常情况下,直接双击exe文件即可,打开浏览器,访问 http://localhost:8080,
就能看到m7s的界面。

对于Linux或者mac,可以先给对应的可执行文件加上可执行权限,由于m7s会用到低于
1000的端口,执行的时候可能还得加上 sudo 。对于config.toml,将在下面的配置说明里。
如果还是运行失败,检查一下是否有端口占用情况,修改一下config.toml里对应的端口。或者参考下面的配置说明,使用简化
后的配置。

自己动手

如果需要做二次开发,或者学习m7s。可以参考m7s的示例工程。
由于m7s使用了embed 嵌入了前端资源,需要go 1.16以上版本。至于如何安装go,请自行查询。
安装好go 1.16后,先设置一下 go 第三方包的代理,方便下载依赖。
配置好环境变量后,执行:
go env -w GOPROXY=https://goproxy.cn,direct

  1. 下载示例代码
    如果下载困难,可以使用cnpmjs的git代理
    git clone --depth=1 https://github.com.cnpmjs.org/langhuihui/monibuca.git
  2. 下载依赖
    进入monibuca文件夹,执行 go mod tidy
  3. 编译
    在monibuca文件夹,执行 go build .
    当前目录就会生成monibuca的可执行文件。

配置说明

m7s的配置如下,配置比较多,先说一下最主要的几个配置,其余的接下来的文章再介绍。
配置文件采用的是toml格式,类似ini,但是比ini更规范,支持数据类型和结构更多,表达
能力更强。
注意:在m7s里,插件必须要在配置文件里注册,比如 [xxx] ,xxx就是插件名,没有注册的
插件是不会启用的。
常见插件说明:




插件名称

属性

详解

Engine


框架核心,必须开启


EnableAudio

是否开启音频


EnableVideo

是否开启视频


PublishTimeout

发布视频流超时时间,如果超过这个时间没有视频流过来,会自动关闭

Summary


系统信息采样,包括CPU、硬盘、网络等


SampleRate

采样频率

RTSP


rtsp视频流插件


ListenAddr

监听rtsp的端口


Reconnect

自动重连

RTMP


rtmp视频流插件


ListenAddr

监听rtmp的端口

Jessica


视频流输出插件,提供前端播放视频能力

GateWay


网关插件,提供前端页面以及接口

简化后的配置,只开启部分配置。

[Engine]
EnableAudio = true
EnableVideo = true
# 发布流默认过期时间 1分钟
PublishTimeout = 60
[Summary]
# 1秒中采样一次
SampleRate = 1
[RTMP]
ListenAddr = ":1935"
[GateWay]
ListenAddr = ":8080"
[Jessica]
[RTSP]
# 端口接收推流
ListenAddr = ":554"
Reconnect = true

发布视频流

这里我们采用ffmpeg推送视频文件做测试,请下载安装后ffmpeg,并添加到系统的环境变量里面。

rtsp 方式

ffmpeg -re -i "xxx.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1:554/live/test

rtmp 方式

ffmpeg -re -i "xxx.mp4" -vcodec h264 -acodec aac -f flv rtmp://127.0.0.1:1935/live/test

对于live/test的说明,这个一般视频流都是按照 xxx/yyy ,这种方式取名,在obs里 xxx叫 应用名,yyy叫 视频流名。

比如我用rtmp的方式推流,推流成功会显示如下:

这时打开m7s的页面,就可以看到这个视频流了。

点击播放就可以观看视频了。下一篇,我们将分析m7s示例工程,敬请期待。另外欢迎大家加入,加群「链接」,共同探讨。

相关推荐

听说你还不知道Java代码是怎么运行的?

作者:Jay_huaxiao前言作为一名Java程序员,我们需要知道Java代码是怎么运行的。最近复习了深入理解Java虚拟机这本书,做了一下笔记,希望对大家有帮助,如果有不正确的地方,欢迎提出,感激...

如何开始学习JAVA编程?

#记录我的9月生活#...

java后端开发需要学什么?

Java属于后端开发中最常见的语言之一,Java这种语言的体系比较中立,而且具备了构建多线程的能力,在许多大型互联网平台Java的应用范围特别广泛。  java后端主要涉及到如下4个技术:  第一、S...

细思极恐:你真的会写Java吗?

导语自2013年毕业后,今年已经是我工作的第4个年头了,总在做java相关的工作,终于有时间坐下来,写一篇关于java写法的一篇文章,来探讨一下如果你真的是一个java程序员,那你真的会写java吗?...

七年Java开发的一路辛酸史:分享面试京东、阿里、美团后的心得

前言我觉得有一个能够找一份大厂的offer的想法,这是很正常的,这并不是我们的饭后谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司...

我把Java基础编程及思维导图整理的超级详细,小白都能看懂

Java基础编程及其思维导图目录:Java学习导图一、Java基本语法1.关键字与标识符2.变量分类3.运算符4.流程控制二、数组1.数组概述2.一维数组3.二维数组4.数组常见算法5....

Java 开发中的 9 个实用技巧:案例详解

Java开发中,总有一些技巧能够帮助我们提高代码质量和开发效率。下面,我们来分享9个Java技巧,每个技巧都附上实际案例,帮助你在工作中立刻应用。1.合理使用final关键字...

Java 20年,以后将往哪儿走?

在今年的Java20周年的庆祝大会中,JavaOne2015的中心议题是“Java的20年”。甲骨文公司Java平台软件开发部的副总裁GeorgesSaab的主题演讲就将关注点放在了java...

推荐1个java快速开发项目,让你接私活不用愁

??大家好,我是小编南风吹,每天推荐一个小工具/源码,装满你的收藏夹,让你轻松节省开发效率,实现不加班不熬夜不掉头发!...

教你用Java开发一个简单的JVM

一、前言几年前,接到一个开发任务:用Java开发能运行Java智能合约的虚拟机。在开发Java智能合约时,只能使用智能合约SDK提供的类和一些Java常用类(8种基本数据类型包装类;String、Bi...

java实战教程(一)软件开发流程&开发模式

这里小编为了方便处于不同学习阶段的童鞋,准备了三个系列的文章,java系列教程、java实战教程、java进阶教程,对于刚入坑的童鞋,可以先按照这三个系列教程一步步的了解,循序渐进,java实战系列教...

Java 核心技术之入门指南:全面解析Java概述

大家好,这里是Java码牛!Java核心技术入门:全面解析Java概述一、引言Java,作为一门在当今信息技术领域中被广泛应用于企业级开发的主流编程语言,其核心技术的精准掌握对于众多开发者而言,具有...

小白如何轻松上手Java开发?

Java,这款流行的编程语言,被广大开发者所钟爱。但对于初学者来说,如何入门确实是一个大问题。尤其对于毫无经验的小白,从何处开始、如何推进,都是关键。本文将带你走进Java的世界,为你揭示从零到一的进...

初学Java应该知道的知识点:Java的程序开发是什么?

Java的程序开发是什么呢?下面和千锋广州小编一起来看看吧!一般来说,Java的程序开发包括三个步骤:编写程序,编译程序,运行程序编写程序——Java源代码,.Java文件编译程序——Javac用来进...

厉害了!全靠经典之作-Java编程思想,把小白教的明明白白

今天我们来聊聊这本《Java编程思想》从我学习Java的经验来看,《ThinkinginJava》是讲解Java编程的最佳书籍!  这本书不仅详细地介绍Java语法、知识点、API类库使用,更...