总体流程图
详细说明
创建工作目录
在电脑上新建一个目录,用于存放我们的启动工程和插件工程等。
建议可以直接使用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
)
可以根据需要添加需要修改或者调试的插件
上述例子中添加了engine
和rtmp
插件,因此需要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.yaml
、config2.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,可以在本公众号私信,可将插件公布到官网中。
付费插件
如果你开发的插件功能强大,希望收取使用者一些费用,可以在本公众号私信,将插件公布到付费插件名录。