* add ffmpeg variant * remove 'v' prefix from tags
This commit is contained in:
parent
4dd518cbb1
commit
ae883040fd
|
@ -1,5 +1,5 @@
|
|||
# do not add .git, since it is needed to extract the tag
|
||||
# do not add /binaries, since they're needed by make dockerhub
|
||||
/tmp
|
||||
# do not add /tmp, since it is needed by make dockerhub
|
||||
/binaries
|
||||
/coverage*.txt
|
||||
/apidocs/*.html
|
||||
|
|
1
Makefile
1
Makefile
|
@ -1,6 +1,7 @@
|
|||
BASE_IMAGE = golang:1.20-alpine3.17
|
||||
LINT_IMAGE = golangci/golangci-lint:v1.52.2
|
||||
NODE_IMAGE = node:16-alpine3.17
|
||||
ALPINE_IMAGE = alpine:3.17
|
||||
RPI32_IMAGE = balenalib/raspberry-pi:bullseye-run
|
||||
RPI64_IMAGE = balenalib/raspberrypi3-64:bullseye-run
|
||||
|
||||
|
|
30
README.md
30
README.md
|
@ -41,7 +41,6 @@ Features:
|
|||
* Reload the configuration without disconnecting existing clients (hot reloading)
|
||||
* Read Prometheus-compatible metrics
|
||||
* Run external commands when clients connect, disconnect, read or publish streams
|
||||
* Natively compatible with the Raspberry Pi Camera
|
||||
* Compatible with Linux, Windows and macOS, does not require any dependency or interpreter, it's a single executable
|
||||
|
||||
[![Test](https://github.com/bluenviron/mediamtx/workflows/test/badge.svg)](https://github.com/bluenviron/mediamtx/actions?query=workflow:test)
|
||||
|
@ -58,9 +57,9 @@ _rtsp-simple-server_ has been rebranded as _MediaMTX_. The reason is pretty obvi
|
|||
## Table of contents
|
||||
|
||||
* [Installation](#installation)
|
||||
* [Standard](#standard)
|
||||
* [Docker](#docker)
|
||||
* [OpenWRT](#openwrt)
|
||||
* [Standalone binary](#standalone-binary)
|
||||
* [Docker image](#docker-image)
|
||||
* [OpenWRT package](#openwrt-package)
|
||||
* [Basic usage](#basic-usage)
|
||||
* [General](#general)
|
||||
* [Configuration](#configuration)
|
||||
|
@ -114,7 +113,9 @@ _rtsp-simple-server_ has been rebranded as _MediaMTX_. The reason is pretty obvi
|
|||
|
||||
## Installation
|
||||
|
||||
### Standard
|
||||
There are several installation methods available: standalone binary, Docker image and OpenWRT package.
|
||||
|
||||
### Standalone binary
|
||||
|
||||
1. Download and extract a precompiled binary from the [release page](https://github.com/bluenviron/mediamtx/releases).
|
||||
|
||||
|
@ -124,23 +125,30 @@ _rtsp-simple-server_ has been rebranded as _MediaMTX_. The reason is pretty obvi
|
|||
./mediamtx
|
||||
```
|
||||
|
||||
### Docker
|
||||
### Docker image
|
||||
|
||||
Download and launch the image:
|
||||
|
||||
```
|
||||
docker run --rm -it --network=host aler9/rtsp-simple-server
|
||||
docker run --rm -it --network=host aler9/rtsp-simple-server:latest
|
||||
```
|
||||
|
||||
The `--network=host` flag is mandatory since Docker can change the source port of UDP packets for routing reasons, and this doesn't allow the server to find out the author of the packets. This issue can be avoided by disabling the UDP transport protocol:
|
||||
Available images:
|
||||
|
||||
|name|FFmpeg included|RPI Camera support|
|
||||
|----|---------------|------------------|
|
||||
|aler9/rtsp-simple-server:latest|:x:|:x:|
|
||||
|aler9/rtsp-simple-server:latest-ffmpeg|:heavy_check_mark:|:x:|
|
||||
|aler9/rtsp-simple-server:latest-rpi|:x:|:heavy_check_mark:|
|
||||
|aler9/rtsp-simple-server:latest-ffmpeg-rpi|:heavy_check_mark:|:heavy_check_mark:
|
||||
|
||||
The `--network=host` flag is mandatory since Docker can change the source port of UDP packets for routing reasons, and this doesn't allow the RTSP server to identify the senders of the packets. This issue can be avoided by disabling the UDP transport protocol:
|
||||
|
||||
```
|
||||
docker run --rm -it -e MTX_PROTOCOLS=tcp -p 8554:8554 -p 1935:1935 -p 8888:8888 -p 8889:8889 aler9/rtsp-simple-server
|
||||
```
|
||||
|
||||
Please keep in mind that the Docker image doesn't include _FFmpeg_. if you need to use _FFmpeg_ for an external command or anything else, you need to build a Docker image that contains both _rtsp-simple-server_ and _FFmpeg_, by following instructions [here](https://github.com/bluenviron/mediamtx/discussions/278#discussioncomment-549104).
|
||||
|
||||
### OpenWRT
|
||||
### OpenWRT package
|
||||
|
||||
1. In a x86 Linux system, download the OpenWRT SDK corresponding to the wanted OpenWRT version and target from the [OpenWRT website](https://downloads.openwrt.org/releases/) and extract it.
|
||||
|
||||
|
|
|
@ -19,9 +19,9 @@ WORKDIR /s
|
|||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
COPY . ./
|
||||
ENV VERSION $(shell git describe --tags)
|
||||
ARG VERSION
|
||||
ENV CGO_ENABLED 0
|
||||
RUN rm -rf binaries
|
||||
RUN rm -rf tmp binaries
|
||||
RUN mkdir tmp binaries
|
||||
RUN cp mediamtx.yml LICENSE tmp/
|
||||
|
||||
|
@ -71,6 +71,8 @@ endef
|
|||
export DOCKERFILE_BINARIES
|
||||
|
||||
binaries:
|
||||
echo "$$DOCKERFILE_BINARIES" | DOCKER_BUILDKIT=1 docker build . -f - -t temp
|
||||
echo "$$DOCKERFILE_BINARIES" | DOCKER_BUILDKIT=1 docker build . -f - \
|
||||
--build-arg VERSION=$$(git describe --tags) \
|
||||
-t temp
|
||||
docker run --rm -v $(PWD):/out \
|
||||
temp sh -c "rm -rf /out/binaries && cp -r /s/binaries /out/"
|
||||
|
|
|
@ -1,110 +1,111 @@
|
|||
REPOSITORY = aler9/rtsp-simple-server
|
||||
|
||||
define DOCKERFILE_DOCKERHUB
|
||||
FROM scratch
|
||||
ARG BINARY
|
||||
ADD $$BINARY /
|
||||
ARG TARGETPLATFORM
|
||||
ADD tmp/binaries/$$TARGETPLATFORM.tar.gz /
|
||||
ENTRYPOINT [ "/mediamtx" ]
|
||||
endef
|
||||
export DOCKERFILE_DOCKERHUB
|
||||
|
||||
define DOCKERFILE_DOCKERHUB_RPI_32
|
||||
FROM $(RPI32_IMAGE) AS base
|
||||
RUN apt update && apt install -y --no-install-recommends libcamera0 libfreetype6
|
||||
ARG BINARY
|
||||
ADD $$BINARY /
|
||||
define DOCKERFILE_DOCKERHUB_FFMPEG
|
||||
FROM $(ALPINE_IMAGE)
|
||||
RUN apk add --no-cache ffmpeg
|
||||
ARG TARGETPLATFORM
|
||||
ADD tmp/binaries/$$TARGETPLATFORM.tar.gz /
|
||||
ENTRYPOINT [ "/mediamtx" ]
|
||||
endef
|
||||
export DOCKERFILE_DOCKERHUB_RPI_32
|
||||
export DOCKERFILE_DOCKERHUB_FFMPEG
|
||||
|
||||
define DOCKERFILE_DOCKERHUB_RPI_64
|
||||
define DOCKERFILE_DOCKERHUB_RPI_BASE_32
|
||||
FROM $(RPI32_IMAGE)
|
||||
endef
|
||||
export DOCKERFILE_DOCKERHUB_RPI_BASE_32
|
||||
|
||||
define DOCKERFILE_DOCKERHUB_RPI_BASE_64
|
||||
FROM $(RPI64_IMAGE)
|
||||
endef
|
||||
export DOCKERFILE_DOCKERHUB_RPI_BASE_64
|
||||
|
||||
define DOCKERFILE_DOCKERHUB_RPI
|
||||
FROM scratch
|
||||
ARG TARGETPLATFORM
|
||||
ADD tmp/rpi_base/$$TARGETPLATFORM.tar /
|
||||
RUN apt update && apt install -y --no-install-recommends libcamera0 libfreetype6
|
||||
ARG BINARY
|
||||
ADD $$BINARY /
|
||||
ADD tmp/binaries/$$TARGETPLATFORM.tar.gz /
|
||||
ENTRYPOINT [ "/mediamtx" ]
|
||||
endef
|
||||
export DOCKERFILE_DOCKERHUB_RPI_64
|
||||
export DOCKERFILE_DOCKERHUB_RPI
|
||||
|
||||
define DOCKERFILE_DOCKERHUB_FFMPEG_RPI
|
||||
FROM scratch
|
||||
ARG TARGETPLATFORM
|
||||
ADD tmp/rpi_base/$$TARGETPLATFORM.tar /
|
||||
RUN apt update && apt install -y --no-install-recommends libcamera0 libfreetype6 ffmpeg
|
||||
ADD tmp/binaries/$$TARGETPLATFORM.tar.gz /
|
||||
ENTRYPOINT [ "/mediamtx" ]
|
||||
endef
|
||||
export DOCKERFILE_DOCKERHUB_FFMPEG_RPI
|
||||
|
||||
dockerhub:
|
||||
$(eval export DOCKER_CLI_EXPERIMENTAL=enabled)
|
||||
$(eval VERSION := $(shell git describe --tags))
|
||||
$(eval VERSION := $(shell git describe --tags | tr -d v))
|
||||
|
||||
docker login -u $(DOCKER_USER) -p $(DOCKER_PASSWORD)
|
||||
|
||||
rm -rf tmp
|
||||
mkdir -p tmp tmp/binaries/linux/arm tmp/rpi_base/linux/arm
|
||||
|
||||
cp binaries/*linux_amd64.tar.gz tmp/binaries/linux/amd64.tar.gz
|
||||
cp binaries/*linux_armv6.tar.gz tmp/binaries/linux/arm/v6.tar.gz
|
||||
cp binaries/*linux_armv7.tar.gz tmp/binaries/linux/arm/v7.tar.gz
|
||||
cp binaries/*linux_arm64v8.tar.gz tmp/binaries/linux/arm64.tar.gz
|
||||
|
||||
docker buildx rm builder 2>/dev/null || true
|
||||
rm -rf $$HOME/.docker/manifests/*
|
||||
docker buildx create --name=builder --use
|
||||
|
||||
echo "$$DOCKERFILE_DOCKERHUB" | docker buildx build . -f - \
|
||||
--provenance=false \
|
||||
--platform=linux/amd64 \
|
||||
--build-arg BINARY="$$(echo binaries/*linux_amd64.tar.gz)" \
|
||||
-t aler9/rtsp-simple-server:$(VERSION)-amd64 \
|
||||
-t aler9/rtsp-simple-server:latest-amd64 \
|
||||
--platform=linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8 \
|
||||
-t $(REPOSITORY):$(VERSION) \
|
||||
-t $(REPOSITORY):latest \
|
||||
--push
|
||||
|
||||
echo "$$DOCKERFILE_DOCKERHUB" | docker buildx build . -f - \
|
||||
echo "$$DOCKERFILE_DOCKERHUB_FFMPEG" | docker buildx build . -f - \
|
||||
--provenance=false \
|
||||
--platform=linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8 \
|
||||
-t $(REPOSITORY):$(VERSION)-ffmpeg \
|
||||
-t $(REPOSITORY):latest-ffmpeg \
|
||||
--push
|
||||
|
||||
echo "$$DOCKERFILE_DOCKERHUB_RPI_BASE_32" | docker buildx build . -f - \
|
||||
--provenance=false \
|
||||
--platform=linux/arm/v6 \
|
||||
--build-arg BINARY="$$(echo binaries/*linux_armv6.tar.gz)" \
|
||||
-t aler9/rtsp-simple-server:$(VERSION)-armv6 \
|
||||
-t aler9/rtsp-simple-server:latest-armv6 \
|
||||
--push
|
||||
--output type=tar,dest=tmp/rpi_base/linux/arm/v6.tar
|
||||
|
||||
echo "$$DOCKERFILE_DOCKERHUB_RPI_32" | docker buildx build . -f - \
|
||||
--provenance=false \
|
||||
--platform=linux/arm/v6 \
|
||||
--build-arg BINARY="$$(echo binaries/*linux_armv6.tar.gz)" \
|
||||
-t aler9/rtsp-simple-server:$(VERSION)-armv6-rpi \
|
||||
-t aler9/rtsp-simple-server:latest-armv6-rpi \
|
||||
--push
|
||||
|
||||
echo "$$DOCKERFILE_DOCKERHUB" | docker buildx build . -f - \
|
||||
echo "$$DOCKERFILE_DOCKERHUB_RPI_BASE_32" | docker buildx build . -f - \
|
||||
--provenance=false \
|
||||
--platform=linux/arm/v7 \
|
||||
--build-arg BINARY="$$(echo binaries/*linux_armv7.tar.gz)" \
|
||||
-t aler9/rtsp-simple-server:$(VERSION)-armv7 \
|
||||
-t aler9/rtsp-simple-server:latest-armv7 \
|
||||
--push
|
||||
--output type=tar,dest=tmp/rpi_base/linux/arm/v7.tar
|
||||
|
||||
echo "$$DOCKERFILE_DOCKERHUB_RPI_32" | docker buildx build . -f - \
|
||||
--provenance=false \
|
||||
--platform=linux/arm/v7 \
|
||||
--build-arg BINARY="$$(echo binaries/*linux_armv7.tar.gz)" \
|
||||
-t aler9/rtsp-simple-server:$(VERSION)-armv7-rpi \
|
||||
-t aler9/rtsp-simple-server:latest-armv7-rpi \
|
||||
--push
|
||||
|
||||
echo "$$DOCKERFILE_DOCKERHUB" | docker buildx build . -f - \
|
||||
echo "$$DOCKERFILE_DOCKERHUB_RPI_BASE_64" | docker buildx build . -f - \
|
||||
--provenance=false \
|
||||
--platform=linux/arm64/v8 \
|
||||
--build-arg BINARY="$$(echo binaries/*linux_arm64v8.tar.gz)" \
|
||||
-t aler9/rtsp-simple-server:$(VERSION)-arm64v8 \
|
||||
-t aler9/rtsp-simple-server:latest-arm64v8 \
|
||||
--push
|
||||
--output type=tar,dest=tmp/rpi_base/linux/arm64.tar
|
||||
|
||||
echo "$$DOCKERFILE_DOCKERHUB_RPI_64" | docker buildx build . -f - \
|
||||
echo "$$DOCKERFILE_DOCKERHUB_RPI" | docker buildx build . -f - \
|
||||
--provenance=false \
|
||||
--platform=linux/arm64/v8 \
|
||||
--build-arg BINARY="$$(echo binaries/*linux_arm64v8.tar.gz)" \
|
||||
-t aler9/rtsp-simple-server:$(VERSION)-arm64v8-rpi \
|
||||
-t aler9/rtsp-simple-server:latest-arm64v8-rpi \
|
||||
--platform=linux/arm/v6,linux/arm/v7,linux/arm64/v8 \
|
||||
-t $(REPOSITORY):$(VERSION)-rpi \
|
||||
-t $(REPOSITORY):latest-rpi \
|
||||
--push
|
||||
|
||||
docker manifest create aler9/rtsp-simple-server:$(VERSION)-rpi \
|
||||
$(foreach ARCH,armv6 armv7 arm64v8,aler9/rtsp-simple-server:$(VERSION)-$(ARCH)-rpi)
|
||||
docker manifest push aler9/rtsp-simple-server:$(VERSION)-rpi
|
||||
|
||||
docker manifest create aler9/rtsp-simple-server:$(VERSION) \
|
||||
$(foreach ARCH,amd64 armv6 armv7 arm64v8,aler9/rtsp-simple-server:$(VERSION)-$(ARCH))
|
||||
docker manifest push aler9/rtsp-simple-server:$(VERSION)
|
||||
|
||||
docker manifest create aler9/rtsp-simple-server:latest-rpi \
|
||||
$(foreach ARCH,armv6 armv7 arm64v8,aler9/rtsp-simple-server:$(VERSION)-$(ARCH)-rpi)
|
||||
docker manifest push aler9/rtsp-simple-server:latest-rpi
|
||||
|
||||
docker manifest create aler9/rtsp-simple-server:latest \
|
||||
$(foreach ARCH,amd64 armv6 armv7 arm64v8,aler9/rtsp-simple-server:$(VERSION)-$(ARCH))
|
||||
docker manifest push aler9/rtsp-simple-server:latest
|
||||
echo "$$DOCKERFILE_DOCKERHUB_FFMPEG_RPI" | docker buildx build . -f - \
|
||||
--provenance=false \
|
||||
--platform=linux/arm/v6,linux/arm/v7,linux/arm64/v8 \
|
||||
-t $(REPOSITORY):$(VERSION)-ffmpeg-rpi \
|
||||
-t $(REPOSITORY):latest-ffmpeg-rpi \
|
||||
--push
|
||||
|
||||
docker buildx rm builder
|
||||
rm -rf $$HOME/.docker/manifests/*
|
||||
|
|
Loading…
Reference in New Issue