Compare commits

...

11 Commits

Author SHA1 Message Date
langhuihui
e11c582b51 feat: add config file from env value 2024-06-18 17:24:07 +08:00
dexter
28531ec17f Merge pull request #130 from ptrjeffrey/v4
支持环境变量指定配置文件路径
2024-06-17 08:38:21 +08:00
sean.zhang
2fce421b2e 修改环境变量名 2024-06-15 10:56:56 +08:00
sean.zhang
c8553f2073 支持环境变量指定配置文件路径 2024-06-15 10:53:26 +08:00
langhuihui
122de52fea fix: discard 2024-06-14 15:12:53 +08:00
langhuihui
db4a51eaa5 fix: record with fileName,rtmp with extend timestamp 2024-05-21 09:28:40 +08:00
langhuihui
7d6f3dbab8 fix: h265 parse sps , save=2 eof , config point panic 2024-05-07 17:29:25 +08:00
dexter
21e0843af3 Merge pull request #122 from trulykyle/v4
docker support
2024-04-30 12:04:15 +08:00
Kyle
91d0e20748 running in host network mode for performance optimizaiton 2024-04-29 22:45:39 +02:00
Kyle
0f94c380eb add docker-compose file 2024-04-29 21:46:53 +02:00
Kyle
601ea27358 split docker to build/running stages 2024-04-29 21:23:33 +02:00
5 changed files with 90 additions and 19 deletions

View File

@@ -1,15 +1,34 @@
#源镜像
# Compile Stage
FROM golang:1.22.2-alpine3.19 AS builder
MAINTAINER monibuca <awesome@monibuca.com>
LABEL stage=gobuilder
# Env
ENV CGO_ENABLE 0
ENV GOOS linux
ENV GOARCH amd64
ENV GOPROXY https://goproxy.cn,direct
ENV HOME /monibuca
COPY . /monibuca
WORKDIR /monibuca
# compile
RUN go mod download
RUN go build -ldflags="-s -w" -o /monibuca/build/monibuca ./main.go
RUN cp -r /monibuca/config.yaml /monibuca/build
RUN cp -r /monibuca/favicon.ico /monibuca/build
# Running Stage
FROM alpine:latest
WORKDIR /opt
WORKDIR /monibuca
COPY --from=builder /monibuca/build /monibuca/
ADD monibuca_linux /opt
ADD favicon.ico /opt
ADD config.yaml /opt
# RUN apk --no-cache add ffmpeg
#暴露端口
# Export necessary ports
EXPOSE 8080 8443 1935 554 58200-59200 5060 8000-9000
EXPOSE 5060/udp 58200-59200/udp 8000-9000/udp
#最终运行docker的命令
ENTRYPOINT ["./monibuca_linux"]
CMD [ "./monibuca" ]

10
docker-compose.yaml Normal file
View File

@@ -0,0 +1,10 @@
services:
monibuca:
build:
dockerfile: ./Dockerfile
image: monibuca:v4
restart: unless-stopped
#please use host mode as expose large number of ports will cause docker extremely slow
network_mode: host
volumes:
- ${PWD}/config.yaml:/monibuca/config.yaml

9
go.mod
View File

@@ -6,10 +6,10 @@ toolchain go1.21.8
require (
go.uber.org/zap v1.27.0
m7s.live/engine/v4 v4.15.2-0.20240402112224-9f9b2392735a
m7s.live/engine/v4 v4.15.2-0.20240618012344-72922ce539a7
m7s.live/plugin/debug/v4 v4.0.3
m7s.live/plugin/fmp4/v4 v4.0.6
m7s.live/plugin/gb28181/v4 v4.4.4
m7s.live/plugin/gb28181/v4 v4.4.5-0.20240521112210-a207352fe6e4
m7s.live/plugin/hdl/v4 v4.1.11-0.20240313041408-780dcc14aa1b
m7s.live/plugin/hls/v4 v4.3.9-0.20240313063851-81841202e6ab
m7s.live/plugin/hook/v4 v4.0.3
@@ -17,9 +17,9 @@ require (
m7s.live/plugin/logrotate/v4 v4.0.6
m7s.live/plugin/monitor/v4 v4.0.5
m7s.live/plugin/preview/v4 v4.1.5-0.20240313053841-3228fb004004
m7s.live/plugin/record/v4 v4.4.7-0.20240326145629-cfa781bce27d
m7s.live/plugin/record/v4 v4.4.7-0.20240520050010-6a749d194324
m7s.live/plugin/room/v4 v4.1.1-0.20240402112256-da53fe368413
m7s.live/plugin/rtmp/v4 v4.3.1-0.20240307124858-efe5c2b0ee20
m7s.live/plugin/rtmp/v4 v4.3.1-0.20240521012445-8df3cf16e26b
m7s.live/plugin/rtsp/v4 v4.3.5-0.20240228010654-14ef344d0848
m7s.live/plugin/snap/v4 v4.0.8
m7s.live/plugin/webrtc/v4 v4.2.6-0.20240228010952-272f6e1bc8bd
@@ -32,6 +32,7 @@ require (
github.com/bluenviron/mediacommon v1.9.2 // indirect
github.com/cnotch/ipchub v1.1.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/deepch/vdk v0.0.27 // indirect
github.com/denisbrodbeck/machineid v1.0.1 // indirect
github.com/discoviking/fsm v0.0.0-20150126104936-f4a273feecca // indirect
github.com/ghettovoice/gosip v0.0.0-20231227123312-6b80e2d3e6f7 // indirect

36
go.sum
View File

@@ -16,6 +16,8 @@ github.com/cnotch/xlog v0.0.0-20201208005456-cfda439cd3a0/go.mod h1:RW9oHsR79ffl
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/deepch/vdk v0.0.27 h1:j/SHaTiZhA47wRpaue8NRp7P9xwOOO/lunxrDJBwcao=
github.com/deepch/vdk v0.0.27/go.mod h1:JlgGyR2ld6+xOIHa7XAxJh+stSDBAkdNvIPkUIdIywk=
github.com/denisbrodbeck/machineid v1.0.1 h1:geKr9qtkB876mXguW2X6TU4ZynleN6ezuMSRhl4D7AQ=
github.com/denisbrodbeck/machineid v1.0.1/go.mod h1:dJUwb7PTidGDeYyUBmXZ2GphQBbjJCrnectwCyxcUSI=
github.com/discoviking/fsm v0.0.0-20150126104936-f4a273feecca h1:cTTdXpkQ1aVbOOmHwdwtYuwUZcQtcMrleD1UXLWhAq8=
@@ -397,12 +399,36 @@ m7s.live/engine/v4 v4.15.2-0.20240402075636-a44ad2830b3a h1:P6v5yMV6P8kf4LcgZ1CM
m7s.live/engine/v4 v4.15.2-0.20240402075636-a44ad2830b3a/go.mod h1:FRtMPBGzNE6kCLgY0wuS3H7d1btKocRiVe9fAkDtP1g=
m7s.live/engine/v4 v4.15.2-0.20240402112224-9f9b2392735a h1:5/nM2MKhx28ADM8Ev62sGI7jKbG7GJpNcoBqAhERSPg=
m7s.live/engine/v4 v4.15.2-0.20240402112224-9f9b2392735a/go.mod h1:FRtMPBGzNE6kCLgY0wuS3H7d1btKocRiVe9fAkDtP1g=
m7s.live/engine/v4 v4.15.2-0.20240507090929-4a481a016544 h1:yx0ucrNDpttU3Jy3b8IpCCseFo7ua3664SIVL1L1UXA=
m7s.live/engine/v4 v4.15.2-0.20240507090929-4a481a016544/go.mod h1:uKxjmsjU1WARUNowEkP83BSrJMUjGwkJrX5nPi6DGmE=
m7s.live/engine/v4 v4.15.2-0.20240604004959-0c7bd2717620 h1:5llhSE6O+1T2Wdz8lfLDn0jUTdzQZwz/F4xSNIbYCok=
m7s.live/engine/v4 v4.15.2-0.20240604004959-0c7bd2717620/go.mod h1:uKxjmsjU1WARUNowEkP83BSrJMUjGwkJrX5nPi6DGmE=
m7s.live/engine/v4 v4.15.2-0.20240606005101-a5adc11d55cd h1:Gh9aUhyhVItBFZ4HMJraVHlwodmmhVkfNuHm+kkIfMI=
m7s.live/engine/v4 v4.15.2-0.20240606005101-a5adc11d55cd/go.mod h1:uKxjmsjU1WARUNowEkP83BSrJMUjGwkJrX5nPi6DGmE=
m7s.live/engine/v4 v4.15.2-0.20240607005755-9b574f3ddcdb h1:C3uPG+rZ0MQAWJUZ5Klo9m+AAeIz+ELjQOIkWvRr9kQ=
m7s.live/engine/v4 v4.15.2-0.20240607005755-9b574f3ddcdb/go.mod h1:uKxjmsjU1WARUNowEkP83BSrJMUjGwkJrX5nPi6DGmE=
m7s.live/engine/v4 v4.15.2-0.20240607085410-53b55bc19e8e h1:w+TCbdypxVgSca3B/MHFpeyDJz9AAi0Wf1QzbCa+Pco=
m7s.live/engine/v4 v4.15.2-0.20240607085410-53b55bc19e8e/go.mod h1:uKxjmsjU1WARUNowEkP83BSrJMUjGwkJrX5nPi6DGmE=
m7s.live/engine/v4 v4.15.2-0.20240612010920-cf636d3b6165 h1:6Ak4t2bb0eIvpqiHg6Egt8p2FHihQ/p8m5IsKTVK2zo=
m7s.live/engine/v4 v4.15.2-0.20240612010920-cf636d3b6165/go.mod h1:uKxjmsjU1WARUNowEkP83BSrJMUjGwkJrX5nPi6DGmE=
m7s.live/engine/v4 v4.15.2-0.20240613010124-6360213cd761 h1:FElj0OuGk7TSSJEdRD9YhhWDPdpI1yjLrsxrIZRHzTo=
m7s.live/engine/v4 v4.15.2-0.20240613010124-6360213cd761/go.mod h1:uKxjmsjU1WARUNowEkP83BSrJMUjGwkJrX5nPi6DGmE=
m7s.live/engine/v4 v4.15.2-0.20240617004224-0dfd3e74509f h1:mWPYV7D8/gNQ9HAhpf4qJIKuO0ywQ1h9wZqUlo5kuLA=
m7s.live/engine/v4 v4.15.2-0.20240617004224-0dfd3e74509f/go.mod h1:uKxjmsjU1WARUNowEkP83BSrJMUjGwkJrX5nPi6DGmE=
m7s.live/engine/v4 v4.15.2-0.20240618004044-98f334ec1092 h1:GZQdv0GQgw+T80xeXQq5gIBhJI3bpy/k1sOAHZauN8Q=
m7s.live/engine/v4 v4.15.2-0.20240618004044-98f334ec1092/go.mod h1:uKxjmsjU1WARUNowEkP83BSrJMUjGwkJrX5nPi6DGmE=
m7s.live/engine/v4 v4.15.2-0.20240618012344-72922ce539a7 h1:hGXYD1WpQhkKsvpAgFyNIuCzh/vGdZ3YTzpKr0nLnA8=
m7s.live/engine/v4 v4.15.2-0.20240618012344-72922ce539a7/go.mod h1:uKxjmsjU1WARUNowEkP83BSrJMUjGwkJrX5nPi6DGmE=
m7s.live/plugin/debug/v4 v4.0.3 h1:lwqKkySXhu47kon/YeF+h5UXXac6c9seb2L6Y8X5ktM=
m7s.live/plugin/debug/v4 v4.0.3/go.mod h1:muzikl1KrHfbT/+2aHzKg9qDGfpArViQAtpcfFrST88=
m7s.live/plugin/fmp4/v4 v4.0.6 h1:X4FXfYuI1OCgaJzyJUNySDRPNPHzLJ5StgX/IxljQIA=
m7s.live/plugin/fmp4/v4 v4.0.6/go.mod h1:0P3IbefEJ6Cs9AeMME0FbEiOK7XNn1fJ5xHohtefIQA=
m7s.live/plugin/gb28181/v4 v4.4.4 h1:2ZeHCYk1qyYoF9YwEJPFkqZzH/FmkadSxT2GC+tkKFk=
m7s.live/plugin/gb28181/v4 v4.4.4/go.mod h1:mK5embLQwDULFJjA7jBls1Cwvow98lTWS6n/uZ7Ampk=
m7s.live/plugin/gb28181/v4 v4.4.5-0.20240403021512-d35b18f1a977 h1:VE6e41Q+o5/Hj0gUtKyuNtyJQgSGvZ+/8F6PEzJfNvs=
m7s.live/plugin/gb28181/v4 v4.4.5-0.20240403021512-d35b18f1a977/go.mod h1:mK5embLQwDULFJjA7jBls1Cwvow98lTWS6n/uZ7Ampk=
m7s.live/plugin/gb28181/v4 v4.4.5-0.20240521112210-a207352fe6e4 h1:IdlwT2QGUT7k2SkcV0LdPBum/STri2IBWdB0HfT22JU=
m7s.live/plugin/gb28181/v4 v4.4.5-0.20240521112210-a207352fe6e4/go.mod h1:mK5embLQwDULFJjA7jBls1Cwvow98lTWS6n/uZ7Ampk=
m7s.live/plugin/hdl/v4 v4.1.11-0.20240313041408-780dcc14aa1b h1:kVDaiqUVPo2pMBcTnrAFk5Q/kKJACmOgSNE71lcF0B0=
m7s.live/plugin/hdl/v4 v4.1.11-0.20240313041408-780dcc14aa1b/go.mod h1:SzMML8acGj8QD5AwihVTnTuCAdKCOpdf+q/CYl/3/Hc=
m7s.live/plugin/hls/v4 v4.3.9-0.20240313063851-81841202e6ab h1:bj2EUd8Ur1cVIssj3ZdrQeE4Fueh8qtthptJQkqM9ZY=
@@ -423,6 +449,10 @@ m7s.live/plugin/record/v4 v4.4.7-0.20240306125017-a6567ad9ea5e h1:JqV8SZMk0RBaEs
m7s.live/plugin/record/v4 v4.4.7-0.20240306125017-a6567ad9ea5e/go.mod h1:4fSAA/AYCNsFA0Ii0UVuBqsbhoTXC1s3lC/en5qabjg=
m7s.live/plugin/record/v4 v4.4.7-0.20240326145629-cfa781bce27d h1:F8nfxjDiJXmwRonmhKr0hffOgA2GhJoluJ9ftiEUfOU=
m7s.live/plugin/record/v4 v4.4.7-0.20240326145629-cfa781bce27d/go.mod h1:4fSAA/AYCNsFA0Ii0UVuBqsbhoTXC1s3lC/en5qabjg=
m7s.live/plugin/record/v4 v4.4.7-0.20240517091257-9476c9a36ce1 h1:MJSHaphhuDbg4sk7nwGlyoQdAKcIQurpQJ5Ot36YVeI=
m7s.live/plugin/record/v4 v4.4.7-0.20240517091257-9476c9a36ce1/go.mod h1:4fSAA/AYCNsFA0Ii0UVuBqsbhoTXC1s3lC/en5qabjg=
m7s.live/plugin/record/v4 v4.4.7-0.20240520050010-6a749d194324 h1:SjFJBrNX1Ecyn9psYYLftyH1E/BfSnIyWYEDzPKalqA=
m7s.live/plugin/record/v4 v4.4.7-0.20240520050010-6a749d194324/go.mod h1:4fSAA/AYCNsFA0Ii0UVuBqsbhoTXC1s3lC/en5qabjg=
m7s.live/plugin/room/v4 v4.1.0 h1:7avMuCnYHX1z9jmoPaGl4tdw5DKFDWiAgFK0+RWVqzA=
m7s.live/plugin/room/v4 v4.1.0/go.mod h1:4GBdAHUYtdp+nkHcGIClI8xkIUo/VTrD9Y0YMlTE7HU=
m7s.live/plugin/room/v4 v4.1.1-0.20240402092359-8f5f31f2c93a h1:LcWqBbHMg+tffvjddVRf9MEdv4kIDLNKMXo7JHwqxyw=
@@ -431,6 +461,12 @@ m7s.live/plugin/room/v4 v4.1.1-0.20240402112256-da53fe368413 h1:FT7i+1fVF4qO71Iv
m7s.live/plugin/room/v4 v4.1.1-0.20240402112256-da53fe368413/go.mod h1:4GBdAHUYtdp+nkHcGIClI8xkIUo/VTrD9Y0YMlTE7HU=
m7s.live/plugin/rtmp/v4 v4.3.1-0.20240307124858-efe5c2b0ee20 h1:ugC5795EjCm0sNFUYp7NzmfZGy46Rz1/PY240DFSpOQ=
m7s.live/plugin/rtmp/v4 v4.3.1-0.20240307124858-efe5c2b0ee20/go.mod h1:6yihulC3KwZaT28qIHHgD68/aP7S6LpA2x3L8mMq6+w=
m7s.live/plugin/rtmp/v4 v4.3.1-0.20240520045725-f0ac19813b34 h1:xpVvWqBHwmhatw0TkIa5CB/voPnRvCBEV7NQz/oRxts=
m7s.live/plugin/rtmp/v4 v4.3.1-0.20240520045725-f0ac19813b34/go.mod h1:6yihulC3KwZaT28qIHHgD68/aP7S6LpA2x3L8mMq6+w=
m7s.live/plugin/rtmp/v4 v4.3.1-0.20240520092204-743bd75a7789 h1:tmP3nrUR2NKm6GuMufKlnGrTrBoeo1YZIJBjExhZQ7I=
m7s.live/plugin/rtmp/v4 v4.3.1-0.20240520092204-743bd75a7789/go.mod h1:6yihulC3KwZaT28qIHHgD68/aP7S6LpA2x3L8mMq6+w=
m7s.live/plugin/rtmp/v4 v4.3.1-0.20240521012445-8df3cf16e26b h1:qYczwlbEMS06RXTAZ63J6sjhv2b04CnEEJFi0SpG6tk=
m7s.live/plugin/rtmp/v4 v4.3.1-0.20240521012445-8df3cf16e26b/go.mod h1:6yihulC3KwZaT28qIHHgD68/aP7S6LpA2x3L8mMq6+w=
m7s.live/plugin/rtsp/v4 v4.3.5-0.20240228010654-14ef344d0848 h1:vjI/Pc9kOcvXClq6i3i0U93GdZ73OLWCJ5PsJq9q2f0=
m7s.live/plugin/rtsp/v4 v4.3.5-0.20240228010654-14ef344d0848/go.mod h1:eU4T50gY67EqNRQqUNeEgCi4W9Pa6tGxltHuOJTFwio=
m7s.live/plugin/snap/v4 v4.0.8 h1:65t4Wd9wiBdD1/ucCSVma5/LhEg/6XbC4yqf95uvCxI=

17
main.go
View File

@@ -2,8 +2,8 @@ package main
//go:generate go run gen.go $debug
/*
███ ███ ██████ ███ ██ 👑 ██████ ██ ██ ██████ █████
/*
███ ███ ██████ ███ ██ 👑 ██████ ██ ██ ██████ █████
████ ████ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██ ██ ██ ██ ██████ ██ ██ ██ ███████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
@@ -36,17 +36,20 @@ import (
"context"
"flag"
"fmt"
"os"
"m7s.live/engine/v4"
"m7s.live/engine/v4/util"
_ "m7s.live/plugin/logrotate/v4"
_ "m7s.live/plugin/debug/v4"
_ "m7s.live/plugin/fmp4/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/logrotate/v4"
_ "m7s.live/plugin/monitor/v4"
_ "m7s.live/plugin/preview/v4"
_ "m7s.live/plugin/record/v4"
_ "m7s.live/plugin/room/v4"
@@ -55,8 +58,6 @@ import (
_ "m7s.live/plugin/snap/v4"
_ "m7s.live/plugin/webrtc/v4"
_ "m7s.live/plugin/webtransport/v4"
_ "m7s.live/plugin/fmp4/v4"
_ "m7s.live/plugin/monitor/v4"
)
var (
@@ -65,7 +66,11 @@ var (
func main() {
fmt.Println("start github.com/langhuihui/monibuca version:", version)
conf := flag.String("c", "config.yaml", "config file")
confPathFromEnv := os.Getenv("M7S_CONFIG_FILE")
if confPathFromEnv == "" {
confPathFromEnv = "config.yaml" // 如果环境变量未设置,默认使用此路径
}
conf := flag.String("c", confPathFromEnv, "config file")
flag.Parse()
ctx, cancel := context.WithCancel(context.WithValue(context.Background(), "version", version))
go util.WaitTerm(cancel)