Skip to content

Commit 1abb523

Browse files
Merge branch 'bluenviron:main' into main
2 parents ec25063 + 184899d commit 1abb523

104 files changed

Lines changed: 2413 additions & 1799 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/lint.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ jobs:
1717

1818
- uses: actions/setup-go@v6
1919
with:
20-
go-version: "1.26"
20+
go-version: "1.25"
2121

2222
- run: go generate ./...
2323

2424
- uses: golangci/golangci-lint-action@v9
2525
with:
26-
version: v2.10.1
26+
version: v2.11.1
2727

2828
go_mod:
2929
runs-on: ubuntu-22.04
@@ -33,7 +33,7 @@ jobs:
3333

3434
- uses: actions/setup-go@v6
3535
with:
36-
go-version: "1.26"
36+
go-version: "1.25"
3737

3838
- run: make lint-go-mod
3939

@@ -45,7 +45,7 @@ jobs:
4545

4646
- uses: actions/setup-go@v6
4747
with:
48-
go-version: "1.26"
48+
go-version: "1.25"
4949

5050
- run: make lint-conf
5151

@@ -57,7 +57,7 @@ jobs:
5757

5858
- uses: actions/setup-go@v6
5959
with:
60-
go-version: "1.26"
60+
go-version: "1.25"
6161

6262
- run: make lint-go2api
6363

.github/workflows/nightly_binaries.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414

1515
- run: make binaries
1616

17-
- uses: actions/upload-artifact@v6
17+
- uses: actions/upload-artifact@v7
1818
with:
1919
name: binaries
2020
path: binaries

.github/workflows/release.yml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ on:
88
permissions:
99
id-token: write
1010
attestations: write
11+
artifact-metadata: write
1112
contents: write
1213
issues: write
13-
discussions: write
14-
pull-requests: write
1514

1615
jobs:
1716
binaries:
@@ -24,11 +23,11 @@ jobs:
2423

2524
- run: cd binaries && sha256sum -b * > checksums.sha256
2625

27-
- uses: actions/attest-build-provenance@v3
26+
- uses: actions/attest@v4
2827
with:
2928
subject-path: '${{ github.workspace }}/binaries/*'
3029

31-
- uses: actions/upload-artifact@v6
30+
- uses: actions/upload-artifact@v7
3231
with:
3332
name: binaries
3433
path: binaries
@@ -38,7 +37,7 @@ jobs:
3837
runs-on: ubuntu-22.04
3938

4039
steps:
41-
- uses: actions/download-artifact@v7
40+
- uses: actions/download-artifact@v8
4241
with:
4342
name: binaries
4443
path: binaries
@@ -150,7 +149,7 @@ jobs:
150149
steps:
151150
- uses: actions/checkout@v6
152151

153-
- uses: actions/download-artifact@v7
152+
- uses: actions/download-artifact@v8
154153
with:
155154
name: binaries
156155
path: binaries

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,6 @@ jobs:
4141

4242
- uses: actions/setup-go@v6
4343
with:
44-
go-version: "1.26"
44+
go-version: "1.25"
4545

4646
- run: make test-e2e-nodocker

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
BASE_IMAGE = golang:1.26-alpine3.22
2-
GOLANGCI_LINT_IMAGE = golangci/golangci-lint:v2.10.1
1+
BASE_IMAGE = golang:1.25-alpine3.22
2+
GOLANGCI_LINT_IMAGE = golangci/golangci-lint:v2.11.1
33
NODE_IMAGE = node:20-alpine3.22
44

55
.PHONY: $(shell ls)

api/openapi.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,12 +382,12 @@ components:
382382
# Always available
383383
alwaysAvailable:
384384
type: boolean
385-
alwaysAvailableFile:
386-
type: string
387385
alwaysAvailableTracks:
388386
type: array
389387
items:
390388
$ref: '#/components/schemas/AlwaysAvailableTrack'
389+
alwaysAvailableFile:
390+
type: string
391391

392392
# Record
393393
record:

docs/1-kickoff/1-introduction.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@ _MediaMTX_ is a ready-to-use and zero-dependency live media server and media pro
66

77
Main features:
88

9-
- [Publish](../2-usage/02-publish.md) live streams to the server with SRT, WebRTC, RTSP, RTMP, HLS, MPEG-TS, RTP
10-
- [Read](../2-usage/03-read.md) live streams from the server with SRT, WebRTC, RTSP, RTMP, HLS
9+
- [Publish](../2-publish/01-overview.md) live streams to the server with SRT, WebRTC, RTSP, RTMP, HLS, MPEG-TS, RTP
10+
- [Read](../3-read/01-overview.md) live streams from the server with SRT, WebRTC, RTSP, RTMP, HLS
1111
- Streams are automatically converted from a protocol to another
1212
- Serve several streams at once in separate paths
1313
- Reload the configuration without disconnecting existing clients (hot reloading)
14-
- [Serve always-available streams](../2-usage/07-always-available.md) even when the publisher is offline
15-
- [Record](../2-usage/08-record.md) streams to disk in fMP4 or MPEG-TS format
16-
- [Playback](../2-usage/09-playback.md) recorded streams
17-
- [Authenticate](../2-usage/05-authentication.md) users with internal, HTTP or JWT authentication
18-
- [Forward](../2-usage/10-forward.md) streams to other servers
19-
- [Proxy](../2-usage/11-proxy.md) requests to other servers
20-
- [Control](../2-usage/20-control-api.md) the server through the Control API
21-
- [Extract metrics](../2-usage/21-metrics.md) from the server in a Prometheus-compatible format
22-
- [Monitor performance](../2-usage/22-performance.md) to investigate CPU and RAM consumption
23-
- [Run hooks](../2-usage/19-hooks.md) (external commands) when clients connect, disconnect, read or publish streams
14+
- [Serve always-available streams](../4-other/05-always-available.md) even when the publisher is offline
15+
- [Record](../4-other/06-record.md) streams to disk in fMP4 or MPEG-TS format
16+
- [Playback](../4-other/07-playback.md) recorded streams
17+
- [Authenticate](../4-other/03-authentication.md) users with internal, HTTP or JWT authentication
18+
- [Forward](../4-other/08-forward.md) streams to other servers
19+
- [Proxy](../4-other/09-proxy.md) requests to other servers
20+
- [Control](../4-other/18-control-api.md) the server through the Control API
21+
- [Extract metrics](../4-other/19-metrics.md) from the server in a Prometheus-compatible format
22+
- [Monitor performance](../4-other/20-performance.md) to investigate CPU and RAM consumption
23+
- [Run hooks](../4-other/17-hooks.md) (external commands) when clients connect, disconnect, read or publish streams
2424
- Compatible with Linux, Windows and macOS, does not require any dependency or interpreter, it's a single executable
2525

2626
Use the menu to navigate through the documentation.

docs/1-kickoff/2-install.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,6 @@ pkg install mediamtx
9090

9191
## OpenWrt binary
9292

93-
If the architecture of the OpenWrt device is amd64, armv6, armv7 or arm64, use the [standalone binary method](2-install.md#standalone-binary) and download a Linux binary that corresponds to your architecture.
93+
If the architecture of the OpenWrt device is amd64, armv6, armv7 or arm64, use the [standalone binary method](#standalone-binary) and download a Linux binary that corresponds to your architecture.
9494

95-
Otherwise, [compile the server from source](../4-other/1-compile.md).
95+
Otherwise, [compile the server from source](../6-misc/1-compile.md).
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Basic usage
22

3-
1. [Publish](02-publish.md) a stream. For instance, you can publish a stream from a MP4 file with _FFmpeg_:
3+
1. [Publish](../2-publish/01-overview.md) a stream. For instance, you can publish a stream from a MP4 file with _FFmpeg_:
44

55
```sh
66
ffmpeg -re -stream_loop -1 -i file.mp4 -c copy \
@@ -14,7 +14,7 @@
1414
! qtdemux name=d d.video_0 ! queue ! s.sink_0 d.audio_0 ! queue ! s.sink_1
1515
```
1616

17-
2. [Read](03-read.md) the stream. For instance, you can read the stream with _VLC_:
17+
2. [Read](../3-read/01-overview.md) the stream. For instance, you can read the stream with _VLC_:
1818

1919
```sh
2020
vlc --network-caching=50 rtsp://localhost:8554/mystream

docs/2-publish/01-overview.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Publish a stream
2+
3+
Live streams can be published to the server with the following protocols and codecs:
4+
5+
| protocol | variants | codecs |
6+
| ---------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
7+
| [SRT clients](02-srt-clients.md) | | **Video**: H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video<br/>**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3<br/>**Other**: KLV |
8+
| [SRT cameras and servers](03-srt-cameras-and-servers.md) | | **Video**: H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video<br/>**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3<br/>**Other**: KLV |
9+
| [WebRTC clients](04-webrtc-clients.md) | WHIP | **Video**: AV1, VP9, VP8, H265, H264<br/>**Audio**: Opus, G722, G711 (PCMA, PCMU) |
10+
| [WebRTC servers](05-webrtc-servers.md) | WHEP | **Video**: AV1, VP9, VP8, H265, H264<br/>**Audio**: Opus, G722, G711 (PCMA, PCMU) |
11+
| [RTSP clients](06-rtsp-clients.md) | UDP, TCP, RTSPS | **Video**: AV1, VP9, VP8, H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video, MJPEG<br/>**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G726, G722, G711 (PCMA, PCMU), LPCM<br/>**Other**: KLV, MPEG-TS, any RTP-compatible codec |
12+
| [RTSP cameras and servers](07-rtsp-cameras-and-servers) | UDP, UDP-Multicast, TCP, RTSPS | **Video**: AV1, VP9, VP8, H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video, MJPEG<br/>**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G726, G722, G711 (PCMA, PCMU), LPCM<br/>**Other**: KLV, MPEG-TS, any RTP-compatible codec |
13+
| [RTMP clients](08-rtmp-clients.md) | RTMP, RTMPS, Enhanced RTMP | **Video**: AV1, VP9, H265, H264<br/>**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G711 (PCMA, PCMU), LPCM |
14+
| [RTMP cameras and servers](09-rtmp-cameras-and-servers.md) | RTMP, RTMPS, Enhanced RTMP | **Video**: AV1, VP9, H265, H264<br/>**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G711 (PCMA, PCMU), LPCM |
15+
| [HLS cameras and servers](10-hls-cameras-and-servers.md) | Low-Latency HLS, MP4-based HLS, legacy HLS | **Video**: AV1, VP9, H265, H264<br/>**Audio**: Opus, MPEG-4 Audio (AAC) |
16+
| [MPEG-TS](11-mpeg-ts.md) | MPEG-TS over UDP, MPEG-TS over Unix socket | **Video**: H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video<br/>**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3<br/>**Other**: KLV |
17+
| [RTP](12-rtp.md) | RTP over UDP | **Video**: AV1, VP9, VP8, H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video, M-JPEG<br/>**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G726, G722, G711 (PCMA, PCMU), LPCM<br/>**Other**: KLV, MPEG-TS, any RTP-compatible codec |
18+
19+
We provide instructions for publishing with the following devices:
20+
21+
- [Raspberry Pi Cameras](13-raspberry-pi-cameras.md)
22+
- [Generic webcams](14-generic-webcams.md)
23+
24+
We provide instructions for publishing with the following software:
25+
26+
- [FFmpeg](15-ffmpeg.md)
27+
- [GStreamer](16-gstreamer.md)
28+
- [OBS Studio](17-obs-studio.md)
29+
- [Python and OpenCV](18-python-opencv.md)
30+
- [Golang](19-golang.md)
31+
- [Unity](20-unity.md)
32+
- [Web browsers](21-web-browsers.md)

0 commit comments

Comments
 (0)