Monibuca 开发环境搭建

原创
2023/06/13 14:30
阅读数 599

总体流程图

 

详细说明

创建工作目录

在电脑上新建一个目录,用于存放我们的启动工程和插件工程等。

建议可以直接使用vscode打开这个目录,更方便后续操作。需要安装好go 1.19以上,vscode安装好go插件,设置GOPROXY环境变量防止无法下载go库。

克隆启动工程

cd mydir
git clone https://github.com/langhuihui/monibuca

此时mydir中包含了一个monibuca目录

创建go.work

工作目录里面创建一个go.work文件用于启用go工作区功能,格式如下:

go 1.19

use (
 ./engine
 ./monibuca
 ./plugin-rtmp
)

可以根据需要添加需要修改或者调试的插件

上述例子中添加了enginertmp插件,因此需要clone这两个库:

git clone https://github.com/Monibuca/engine
git clone https://github.com/Monibuca/plugin-rtmp

运行

cd monibuca
go run .

如果出现错误,可以在mydir目录下执行:

go work sync

调试

mydir/.vscode/launch.json中配置调试

{
  "version""0.2.0",
  "configurations": [
    {
      "name""Launch default",
      "type""go",
      "request""launch",
      "mode""auto",
      "program""${workspaceRoot}/monibuca/",
      "args": [
        "-c",
        "config.yaml"
      ],
      "cwd""${workspaceRoot}/monibuca"
    }    
}

此时可以启动vscode的调试功能,方便查看panic等错误堆栈以及打断点调试。可以配置多份config文件,例如config1.yamlconfig2.yaml

{
  "version""0.2.0",
  "configurations": [
    {
      "name""Launch 1",
      "type""go",
      "request""launch",
      "mode""auto",
      "program""${workspaceRoot}/monibuca/",
      "args": [
        "-c",
        "config1.yaml"
      ],
      "cwd""${workspaceRoot}/monibuca"
    },
    {
      "name""Launch 2",
      "type""go",
      "request""launch",
      "mode""auto",
      "program""${workspaceRoot}/monibuca/",
      "args": [
        "-c",
        "config2.yaml"
      ],
      "cwd""${workspaceRoot}/monibuca"
    }
}

方便同时调试多个实例,可以用来测试实例之间的通讯。

开发自己的插件

为了方便快速二次开发插件,可以直接使用专门为初学者写好的示例插件仓库

使用demo插件仓库

  • 下载模版git clone https://github.com/Monibuca/plugin-demo

  • 修改go.mod 文件按照自己的仓库地址修改,如:github.com/xxx/myplugin

  • 目录名plugin-demo修改为myplugin

  • 按照开发文档编写插件(开发文档可点击原文链接)

myplugin替换成自己的插件名

在go.work中添加插件

go 1.19

use (
 ./myplugin
 ./monibuca
)

在启动工程中引入插件

mydir/monibuca/main.go中(也可以删除不需要的引入)

import (
 "context"
 "flag"
 "fmt"

 "m7s.live/engine/v4"
 "m7s.live/engine/v4/util"

 _ "m7s.live/plugin/logrotate/v4"
 _ "m7s.live/plugin/debug/v4"
 _ "m7s.live/plugin/gb28181/v4"
 _ "m7s.live/plugin/hdl/v4"
 _ "m7s.live/plugin/hls/v4"
 _ "m7s.live/plugin/hook/v4"
 _ "m7s.live/plugin/jessica/v4"
 _ "m7s.live/plugin/preview/v4"
 _ "m7s.live/plugin/record/v4"
 _ "m7s.live/plugin/room/v4"
 _ "m7s.live/plugin/rtmp/v4"
 _ "m7s.live/plugin/rtsp/v4"
 _ "m7s.live/plugin/snap/v4"
 _ "m7s.live/plugin/webrtc/v4"
 _ "m7s.live/plugin/webtransport/v4"
 _ "m7s.live/plugin/edge/v4"
 _ "m7s.live/plugin/fmp4/v4"
 _ "m7s.live/plugin/monitor/v4"
  
  _ "github.com/xxx/myplugin"
)

启动调试插件

同上面调试方式一样

发布插件

将插件发布到github,可以在本公众号私信,可将插件公布到官网中。

付费插件

如果你开发的插件功能强大,希望收取使用者一些费用,可以在本公众号私信,将插件公布到付费插件名录。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部