From 10e8f73d5fb73957f5445462b1c8f0f5b57070f1 Mon Sep 17 00:00:00 2001 From: bluenviron-bot <214245907+bluenviron-bot@users.noreply.github.com> Date: Mon, 22 Dec 2025 19:43:20 +0100 Subject: [PATCH 01/51] bump golangci-lint to 2.7.2 (#5261) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5553d83a..100e9f03 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ BASE_IMAGE = golang:1.25-alpine3.22 -GOLANGCI_LINT_IMAGE = golangci/golangci-lint:v2.7.1 +GOLANGCI_LINT_IMAGE = golangci/golangci-lint:v2.7.2 NODE_IMAGE = node:20-alpine3.22 .PHONY: $(shell ls) From 5b0647abca802cf8bcc71c5ac72c36d9c0b86f9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 19:43:43 +0100 Subject: [PATCH 02/51] build(deps): bump golang.org/x/crypto from 0.45.0 to 0.46.0 (#5265) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.45.0 to 0.46.0. - [Commits](https://github.com/golang/crypto/compare/v0.45.0...v0.46.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.46.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index b2d3efaa..f989ab2f 100644 --- a/go.mod +++ b/go.mod @@ -36,9 +36,9 @@ require ( github.com/pion/transport/v3 v3.1.1 github.com/pion/webrtc/v4 v4.1.7 github.com/stretchr/testify v1.11.1 - golang.org/x/crypto v0.45.0 - golang.org/x/sys v0.38.0 - golang.org/x/term v0.37.0 + golang.org/x/crypto v0.46.0 + golang.org/x/sys v0.39.0 + golang.org/x/term v0.38.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -97,8 +97,8 @@ require ( golang.org/x/arch v0.20.0 // indirect golang.org/x/mod v0.30.0 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/sync v0.18.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/text v0.32.0 // indirect golang.org/x/time v0.9.0 // indirect golang.org/x/tools v0.39.0 // indirect google.golang.org/protobuf v1.36.9 // indirect diff --git a/go.sum b/go.sum index cb68e463..50f1a4f7 100644 --- a/go.sum +++ b/go.sum @@ -239,8 +239,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20211209193657-4570a0811e8b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= -golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= @@ -249,8 +249,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= -golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= -golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -261,17 +261,17 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= -golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= +golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q= +golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= From 8432f1e7f048c78f07b342f25bab91b09c02edff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 19:44:18 +0100 Subject: [PATCH 03/51] build(deps): bump actions/upload-artifact from 5 to 6 (#5272) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/nightly_binaries.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nightly_binaries.yml b/.github/workflows/nightly_binaries.yml index 049e3b17..e70c8f88 100644 --- a/.github/workflows/nightly_binaries.yml +++ b/.github/workflows/nightly_binaries.yml @@ -14,7 +14,7 @@ jobs: - run: make binaries - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v6 with: name: binaries path: binaries diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f11377c9..6228507c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,7 +28,7 @@ jobs: with: subject-path: '${{ github.workspace }}/binaries/*' - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v6 with: name: binaries path: binaries From 98de1496a385f3d0e5dd3152dc0799d30177a306 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 19:44:25 +0100 Subject: [PATCH 04/51] build(deps): bump actions/download-artifact from 6 to 7 (#5271) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6228507c..0cd2f883 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,7 +38,7 @@ jobs: runs-on: ubuntu-22.04 steps: - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 with: name: binaries path: binaries @@ -151,7 +151,7 @@ jobs: steps: - uses: actions/checkout@v6 - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 with: name: binaries path: binaries From 4d8e2bc2684eb520546d16d2e57a2a7173fbe60b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 19:44:50 +0100 Subject: [PATCH 05/51] build(deps): bump github.com/pion/webrtc/v4 from 4.1.7 to 4.1.8 (#5268) Bumps [github.com/pion/webrtc/v4](https://github.com/pion/webrtc) from 4.1.7 to 4.1.8. - [Release notes](https://github.com/pion/webrtc/releases) - [Commits](https://github.com/pion/webrtc/compare/v4.1.7...v4.1.8) --- updated-dependencies: - dependency-name: github.com/pion/webrtc/v4 dependency-version: 4.1.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index f989ab2f..9287c4a8 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( github.com/pion/rtp v1.8.26 github.com/pion/sdp/v3 v3.0.16 github.com/pion/transport/v3 v3.1.1 - github.com/pion/webrtc/v4 v4.1.7 + github.com/pion/webrtc/v4 v4.1.8 github.com/stretchr/testify v1.11.1 golang.org/x/crypto v0.46.0 golang.org/x/sys v0.39.0 @@ -80,7 +80,7 @@ require ( github.com/pion/randutil v0.1.0 // indirect github.com/pion/sctp v1.8.41 // indirect github.com/pion/srtp/v3 v3.0.9 // indirect - github.com/pion/stun/v3 v3.0.1 // indirect + github.com/pion/stun/v3 v3.0.2 // indirect github.com/pion/turn/v4 v4.1.3 // indirect github.com/pjbgf/sha1cd v0.3.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect diff --git a/go.sum b/go.sum index 50f1a4f7..cb5e7f9e 100644 --- a/go.sum +++ b/go.sum @@ -181,14 +181,14 @@ github.com/pion/sdp/v3 v3.0.16 h1:0dKzYO6gTAvuLaAKQkC02eCPjMIi4NuAr/ibAwrGDCo= github.com/pion/sdp/v3 v3.0.16/go.mod h1:9tyKzznud3qiweZcD86kS0ff1pGYB3VX+Bcsmkx6IXo= github.com/pion/srtp/v3 v3.0.9 h1:lRGF4G61xxj+m/YluB3ZnBpiALSri2lTzba0kGZMrQY= github.com/pion/srtp/v3 v3.0.9/go.mod h1:E+AuWd7Ug2Fp5u38MKnhduvpVkveXJX6J4Lq4rxUYt8= -github.com/pion/stun/v3 v3.0.1 h1:jx1uUq6BdPihF0yF33Jj2mh+C9p0atY94IkdnW174kA= -github.com/pion/stun/v3 v3.0.1/go.mod h1:RHnvlKFg+qHgoKIqtQWMOJF52wsImCAf/Jh5GjX+4Tw= +github.com/pion/stun/v3 v3.0.2 h1:BJuGEN2oLrJisiNEJtUTJC4BGbzbfp37LizfqswblFU= +github.com/pion/stun/v3 v3.0.2/go.mod h1:JFJKfIWvt178MCF5H/YIgZ4VX3LYE77vca4b9HP60SA= github.com/pion/transport/v3 v3.1.1 h1:Tr684+fnnKlhPceU+ICdrw6KKkTms+5qHMgw6bIkYOM= github.com/pion/transport/v3 v3.1.1/go.mod h1:+c2eewC5WJQHiAA46fkMMzoYZSuGzA/7E2FPrOYHctQ= github.com/pion/turn/v4 v4.1.3 h1:jVNW0iR05AS94ysEtvzsrk3gKs9Zqxf6HmnsLfRvlzA= github.com/pion/turn/v4 v4.1.3/go.mod h1:TD/eiBUf5f5LwXbCJa35T7dPtTpCHRJ9oJWmyPLVT3A= -github.com/pion/webrtc/v4 v4.1.7 h1:sl3vFuVHa1u/7DcFbud7e1zk3sG3RjBS5GI2ckltROg= -github.com/pion/webrtc/v4 v4.1.7/go.mod h1:y3mRk8wpmOVkTTEGYB/eXAg0DPEfTEdC/Y021zRiOiM= +github.com/pion/webrtc/v4 v4.1.8 h1:ynkjfiURDQ1+8EcJsoa60yumHAmyeYjz08AaOuor+sk= +github.com/pion/webrtc/v4 v4.1.8/go.mod h1:KVaARG2RN0lZx0jc7AWTe38JpPv+1/KicOZ9jN52J/s= github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= From 55c8e69bfc049234700d534073cb72ebdf2d8698 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 20:39:42 +0100 Subject: [PATCH 06/51] build(deps): bump github.com/quic-go/quic-go from 0.54.1 to 0.57.0 (#5269) Bumps [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go) from 0.54.1 to 0.57.0. - [Release notes](https://github.com/quic-go/quic-go/releases) - [Commits](https://github.com/quic-go/quic-go/compare/v0.54.1...v0.57.0) --- updated-dependencies: - dependency-name: github.com/quic-go/quic-go dependency-version: 0.57.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++------- go.sum | 16 ++++++++-------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 9287c4a8..384eac05 100644 --- a/go.mod +++ b/go.mod @@ -84,8 +84,8 @@ require ( github.com/pion/turn/v4 v4.1.3 // indirect github.com/pjbgf/sha1cd v0.3.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/quic-go/qpack v0.5.1 // indirect - github.com/quic-go/quic-go v0.54.1 // indirect + github.com/quic-go/qpack v0.6.0 // indirect + github.com/quic-go/quic-go v0.57.0 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/skeema/knownhosts v1.3.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect @@ -93,14 +93,10 @@ require ( github.com/wlynxg/anet v0.0.5 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect - go.uber.org/mock v0.5.0 // indirect golang.org/x/arch v0.20.0 // indirect - golang.org/x/mod v0.30.0 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/sync v0.19.0 // indirect golang.org/x/text v0.32.0 // indirect - golang.org/x/time v0.9.0 // indirect - golang.org/x/tools v0.39.0 // indirect + golang.org/x/time v0.12.0 // indirect google.golang.org/protobuf v1.36.9 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index cb5e7f9e..854549e2 100644 --- a/go.sum +++ b/go.sum @@ -196,10 +196,10 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/profile v1.4.0/go.mod h1:NWz/XGvpEW1FyYQ7fCx4dqYBLlfTcE+A9FLAkNKqjFE= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI= -github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg= -github.com/quic-go/quic-go v0.54.1 h1:4ZAWm0AhCb6+hE+l5Q1NAL0iRn/ZrMwqHRGQiFwj2eg= -github.com/quic-go/quic-go v0.54.1/go.mod h1:e68ZEaCdyviluZmy44P6Iey98v/Wfz6HCjQEm+l8zTY= +github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8= +github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII= +github.com/quic-go/quic-go v0.57.0 h1:AsSSrrMs4qI/hLrKlTH/TGQeTMY0ib1pAOX7vA3AdqE= +github.com/quic-go/quic-go v0.57.0/go.mod h1:ly4QBAjHA2VhdnxhojRsCUOeJwKYg+taDlos92xb1+s= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= @@ -229,8 +229,8 @@ github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= -go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= -go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= +go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko= +go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/arch v0.20.0 h1:dx1zTU0MAE98U+TQ8BLl7XsJbgze2WnNKF/8tGp/Q6c= @@ -272,8 +272,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= -golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= -golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= From 4b81720888b36dbf06dee7657c3110a7826fa757 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Dec 2025 20:29:39 +0100 Subject: [PATCH 07/51] build(deps): bump github.com/matthewhartstonge/argon2 (#5284) Bumps [github.com/matthewhartstonge/argon2](https://github.com/matthewhartstonge/argon2) from 1.4.3 to 1.4.4. - [Release notes](https://github.com/matthewhartstonge/argon2/releases) - [Changelog](https://github.com/matthewhartstonge/argon2/blob/main/CHANGELOG.md) - [Commits](https://github.com/matthewhartstonge/argon2/compare/v1.4.3...v1.4.4) --- updated-dependencies: - dependency-name: github.com/matthewhartstonge/argon2 dependency-version: 1.4.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 384eac05..bd1de473 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/gookit/color v1.6.0 github.com/gorilla/websocket v1.5.3 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 - github.com/matthewhartstonge/argon2 v1.4.3 + github.com/matthewhartstonge/argon2 v1.4.4 github.com/minio/selfupdate v0.6.0 github.com/pion/ice/v4 v4.0.13 github.com/pion/interceptor v0.1.42 diff --git a/go.sum b/go.sum index 854549e2..2e50444a 100644 --- a/go.sum +++ b/go.sum @@ -137,8 +137,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/matthewhartstonge/argon2 v1.4.3 h1:rqbAR3lzzIjQdwQ5V8AyLKRB6F5tk479EiPSsrwH428= -github.com/matthewhartstonge/argon2 v1.4.3/go.mod h1:yV9Hi7hkRTdHMBUtpaJepCxc0szFRF7g1kE2i1QEy9s= +github.com/matthewhartstonge/argon2 v1.4.4 h1:IxMnW8Y5/As75hr3zIUAGmHlzqwhYb/cc0wI9QO29JM= +github.com/matthewhartstonge/argon2 v1.4.4/go.mod h1:3o39C3PfERZZ3sm5hFcYNTaLDz4sz6PVfeJo8yITGf4= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/minio/selfupdate v0.6.0 h1:i76PgT0K5xO9+hjzKcacQtO7+MjJ4JKA8Ak8XQ9DDwU= From 1ad48c73dc26d3deebd964583bb2d8d38afe18e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Dec 2025 20:36:46 +0100 Subject: [PATCH 08/51] build(deps): bump github.com/pion/ice/v4 from 4.0.13 to 4.1.0 (#5283) Bumps [github.com/pion/ice/v4](https://github.com/pion/ice) from 4.0.13 to 4.1.0. - [Release notes](https://github.com/pion/ice/releases) - [Commits](https://github.com/pion/ice/compare/v4.0.13...v4.1.0) --- updated-dependencies: - dependency-name: github.com/pion/ice/v4 dependency-version: 4.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index bd1de473..8cf219ce 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 github.com/matthewhartstonge/argon2 v1.4.4 github.com/minio/selfupdate v0.6.0 - github.com/pion/ice/v4 v4.0.13 + github.com/pion/ice/v4 v4.1.0 github.com/pion/interceptor v0.1.42 github.com/pion/logging v0.2.4 github.com/pion/rtcp v1.2.16 @@ -75,7 +75,7 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pion/datachannel v1.5.10 // indirect - github.com/pion/dtls/v3 v3.0.8 // indirect + github.com/pion/dtls/v3 v3.0.9 // indirect github.com/pion/mdns/v2 v2.1.0 // indirect github.com/pion/randutil v0.1.0 // indirect github.com/pion/sctp v1.8.41 // indirect diff --git a/go.sum b/go.sum index 2e50444a..4700f7e1 100644 --- a/go.sum +++ b/go.sum @@ -159,10 +159,10 @@ github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0 github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pion/datachannel v1.5.10 h1:ly0Q26K1i6ZkGf42W7D4hQYR90pZwzFOjTq5AuCKk4o= github.com/pion/datachannel v1.5.10/go.mod h1:p/jJfC9arb29W7WrxyKbepTU20CFgyx5oLo8Rs4Py/M= -github.com/pion/dtls/v3 v3.0.8 h1:ZrPUrvPVDaTJDM8Vu1veatzXebLlsIWeT7Vaate/zwM= -github.com/pion/dtls/v3 v3.0.8/go.mod h1:abApPjgadS/ra1wvUzHLc3o2HvoxppAh+NZkyApL4Os= -github.com/pion/ice/v4 v4.0.13 h1:1cdmd80gmLdnVTM2bXzw2CBebvXvkGNEaWi/CuDK9WQ= -github.com/pion/ice/v4 v4.0.13/go.mod h1:Xo5f5DBbEjQac+6pR7i83AGuwoGxnxwXkOOvHFVnfnM= +github.com/pion/dtls/v3 v3.0.9 h1:4AijfFRm8mAjd1gfdlB1wzJF3fjjR/VPIpJgkEtvYmM= +github.com/pion/dtls/v3 v3.0.9/go.mod h1:abApPjgadS/ra1wvUzHLc3o2HvoxppAh+NZkyApL4Os= +github.com/pion/ice/v4 v4.1.0 h1:YlxIii2bTPWyC08/4hdmtYq4srbrY0T9xcTsTjldGqU= +github.com/pion/ice/v4 v4.1.0/go.mod h1:5gPbzYxqenvn05k7zKPIZFuSAufolygiy6P1U9HzvZ4= github.com/pion/interceptor v0.1.42 h1:0/4tvNtruXflBxLfApMVoMubUMik57VZ+94U0J7cmkQ= github.com/pion/interceptor v0.1.42/go.mod h1:g6XYTChs9XyolIQFhRHOOUS+bGVGLRfgTCUzH29EfVU= github.com/pion/logging v0.2.4 h1:tTew+7cmQ+Mc1pTBLKH2puKsOvhm32dROumOZ655zB8= From 55f93eddde1b4a869a98bf83fbdfa3d7a16a0bbe Mon Sep 17 00:00:00 2001 From: Alessandro Ros Date: Wed, 24 Dec 2025 20:37:01 +0100 Subject: [PATCH 09/51] rtsp: call rtsp.ToStream before advertising the stream (#5288) --- internal/core/path_test.go | 12 +-- internal/protocols/rtsp/to_stream.go | 4 +- internal/protocols/webrtc/to_stream_test.go | 4 +- internal/servers/rtmp/conn.go | 6 +- internal/servers/rtsp/conn.go | 8 +- internal/servers/rtsp/session.go | 10 +-- internal/servers/srt/conn.go | 6 +- internal/servers/webrtc/session.go | 6 +- internal/staticsources/hls/source.go | 8 +- internal/staticsources/mpegts/source.go | 6 +- internal/staticsources/rtmp/source.go | 6 +- internal/staticsources/rtp/source.go | 10 +-- internal/staticsources/rtsp/source.go | 89 +++++++++++---------- internal/staticsources/srt/source.go | 6 +- internal/staticsources/webrtc/source.go | 6 +- 15 files changed, 97 insertions(+), 90 deletions(-) diff --git a/internal/core/path_test.go b/internal/core/path_test.go index 42deecc1..93278efb 100644 --- a/internal/core/path_test.go +++ b/internal/core/path_test.go @@ -842,7 +842,7 @@ func TestPathFallback(t *testing.T) { } func TestPathResolveSource(t *testing.T) { - var stream *gortsplib.ServerStream + var strm *gortsplib.ServerStream s := gortsplib.Server{ Handler: &testServer{ @@ -852,12 +852,12 @@ func TestPathResolveSource(t *testing.T) { require.Equal(t, "/a", ctx.Path) return &base.Response{ StatusCode: base.StatusOK, - }, stream, nil + }, strm, nil }, onSetup: func(_ *gortsplib.ServerHandlerOnSetupCtx) (*base.Response, *gortsplib.ServerStream, error) { return &base.Response{ StatusCode: base.StatusOK, - }, stream, nil + }, strm, nil }, onPlay: func(_ *gortsplib.ServerHandlerOnPlayCtx) (*base.Response, error) { return &base.Response{ @@ -872,13 +872,13 @@ func TestPathResolveSource(t *testing.T) { require.NoError(t, err) defer s.Close() - stream = &gortsplib.ServerStream{ + strm = &gortsplib.ServerStream{ Server: &s, Desc: &description.Session{Medias: []*description.Media{test.MediaH264}}, } - err = stream.Initialize() + err = strm.Initialize() require.NoError(t, err) - defer stream.Close() + defer strm.Close() p, ok := newInstance( "paths:\n" + diff --git a/internal/protocols/rtsp/to_stream.go b/internal/protocols/rtsp/to_stream.go index bbf277e8..658a14a8 100644 --- a/internal/protocols/rtsp/to_stream.go +++ b/internal/protocols/rtsp/to_stream.go @@ -32,7 +32,7 @@ func ToStream( source rtspSource, medias []*description.Media, pathConf *conf.Path, - strm *stream.Stream, + strm **stream.Stream, log logger.Writer, ) { for _, medi := range medias { @@ -82,7 +82,7 @@ func ToStream( return } - strm.WriteRTPPacket(cmedi, cforma, pkt, ntp, pts) + (*strm).WriteRTPPacket(cmedi, cforma, pkt, ntp, pts) }) } } diff --git a/internal/protocols/webrtc/to_stream_test.go b/internal/protocols/webrtc/to_stream_test.go index afa5437d..b259e54c 100644 --- a/internal/protocols/webrtc/to_stream_test.go +++ b/internal/protocols/webrtc/to_stream_test.go @@ -405,8 +405,8 @@ func TestToStream(t *testing.T) { err = pc2.GatherIncomingTracks() require.NoError(t, err) - var stream *stream.Stream - medias, err := ToStream(pc2, &conf.Path{}, &stream, nil) + var strm *stream.Stream + medias, err := ToStream(pc2, &conf.Path{}, &strm, nil) require.NoError(t, err) require.Equal(t, ca.out, medias[0].Formats[0]) }) diff --git a/internal/servers/rtmp/conn.go b/internal/servers/rtmp/conn.go index 14b738dd..04209f21 100644 --- a/internal/servers/rtmp/conn.go +++ b/internal/servers/rtmp/conn.go @@ -229,15 +229,15 @@ func (c *conn) runPublish() error { return err } - var stream *stream.Stream + var strm *stream.Stream - medias, err := rtmp.ToStream(r, &stream) + medias, err := rtmp.ToStream(r, &strm) if err != nil { return err } var path defs.Path - path, stream, err = c.pathManager.AddPublisher(defs.PathAddPublisherReq{ + path, strm, err = c.pathManager.AddPublisher(defs.PathAddPublisherReq{ Author: c, Desc: &description.Session{Medias: medias}, GenerateRTPPackets: true, diff --git a/internal/servers/rtsp/conn.go b/internal/servers/rtsp/conn.go index 9966c6ea..b6b85b6e 100644 --- a/internal/servers/rtsp/conn.go +++ b/internal/servers/rtsp/conn.go @@ -193,16 +193,16 @@ func (c *conn) onDescribe(ctx *gortsplib.ServerHandlerOnDescribeCtx, }, nil, nil } - var stream *gortsplib.ServerStream + var strm *gortsplib.ServerStream if !c.isTLS { - stream = res.Stream.RTSPStream(c.rserver) + strm = res.Stream.RTSPStream(c.rserver) } else { - stream = res.Stream.RTSPSStream(c.rserver) + strm = res.Stream.RTSPSStream(c.rserver) } return &base.Response{ StatusCode: base.StatusOK, - }, stream, nil + }, strm, nil } func (c *conn) handleAuthError(err *auth.Error) (*base.Response, error) { diff --git a/internal/servers/rtsp/session.go b/internal/servers/rtsp/session.go index fd9e1f03..4e91293c 100644 --- a/internal/servers/rtsp/session.go +++ b/internal/servers/rtsp/session.go @@ -331,16 +331,16 @@ func (s *session) onRecord(_ *gortsplib.ServerHandlerOnRecordCtx) (*base.Respons }, err } - s.path = path - s.stream = stream - rtsp.ToStream( s.rsession, s.rsession.AnnouncedDescription().Medias, - s.path.SafeConf(), - stream, + path.SafeConf(), + &s.stream, s) + s.path = path + s.stream = stream + return &base.Response{ StatusCode: base.StatusOK, }, nil diff --git a/internal/servers/srt/conn.go b/internal/servers/srt/conn.go index a15cd317..5684d24e 100644 --- a/internal/servers/srt/conn.go +++ b/internal/servers/srt/conn.go @@ -213,15 +213,15 @@ func (c *conn) runPublishReader(sconn srt.Conn, streamID *streamID, pathConf *co decodeErrors.Increase() }) - var stream *stream.Stream + var strm *stream.Stream - medias, err := mpegts.ToStream(r, &stream, c) + medias, err := mpegts.ToStream(r, &strm, c) if err != nil { return err } var path defs.Path - path, stream, err = c.pathManager.AddPublisher(defs.PathAddPublisherReq{ + path, strm, err = c.pathManager.AddPublisher(defs.PathAddPublisherReq{ Author: c, Desc: &description.Session{Medias: medias}, GenerateRTPPackets: true, diff --git a/internal/servers/webrtc/session.go b/internal/servers/webrtc/session.go index 183385ee..75a869a6 100644 --- a/internal/servers/webrtc/session.go +++ b/internal/servers/webrtc/session.go @@ -233,15 +233,15 @@ func (s *session) runPublish() (int, error) { return 0, err } - var stream *stream.Stream + var strm *stream.Stream - medias, err := webrtc.ToStream(pc, pathConf, &stream, s) + medias, err := webrtc.ToStream(pc, pathConf, &strm, s) if err != nil { return 0, err } var path defs.Path - path, stream, err = s.pathManager.AddPublisher(defs.PathAddPublisherReq{ + path, strm, err = s.pathManager.AddPublisher(defs.PathAddPublisherReq{ Author: s, Desc: &description.Session{Medias: medias}, GenerateRTPPackets: false, diff --git a/internal/staticsources/hls/source.go b/internal/staticsources/hls/source.go index ff7ba90b..bb96ae87 100644 --- a/internal/staticsources/hls/source.go +++ b/internal/staticsources/hls/source.go @@ -37,10 +37,10 @@ func (s *Source) Log(level logger.Level, format string, args ...any) { // Run implements StaticSource. func (s *Source) Run(params defs.StaticSourceRunParams) error { - var stream *stream.Stream + var strm *stream.Stream defer func() { - if stream != nil { + if strm != nil { s.Parent.SetNotReady(defs.PathSourceStaticSetNotReadyReq{}) } }() @@ -94,7 +94,7 @@ func (s *Source) Run(params defs.StaticSourceRunParams) error { decodeErrors.Increase() }, OnTracks: func(tracks []*gohlslib.Track) error { - medias, err2 := hls.ToStream(c, tracks, params.Conf, &stream) + medias, err2 := hls.ToStream(c, tracks, params.Conf, &strm) if err2 != nil { return err2 } @@ -107,7 +107,7 @@ func (s *Source) Run(params defs.StaticSourceRunParams) error { return res.Err } - stream = res.Stream + strm = res.Stream return nil }, diff --git a/internal/staticsources/mpegts/source.go b/internal/staticsources/mpegts/source.go index c13cec82..590576a2 100644 --- a/internal/staticsources/mpegts/source.go +++ b/internal/staticsources/mpegts/source.go @@ -116,9 +116,9 @@ func (s *Source) runReader(nc net.Conn) error { decodeErrors.Increase() }) - var stream *stream.Stream + var strm *stream.Stream - medias, err := mpegts.ToStream(mr, &stream, s) + medias, err := mpegts.ToStream(mr, &strm, s) if err != nil { return err } @@ -134,7 +134,7 @@ func (s *Source) runReader(nc net.Conn) error { defer s.Parent.SetNotReady(defs.PathSourceStaticSetNotReadyReq{}) - stream = res.Stream + strm = res.Stream for { nc.SetReadDeadline(time.Now().Add(time.Duration(s.ReadTimeout))) diff --git a/internal/staticsources/rtmp/source.go b/internal/staticsources/rtmp/source.go index 9fff458e..772b82a4 100644 --- a/internal/staticsources/rtmp/source.go +++ b/internal/staticsources/rtmp/source.go @@ -101,9 +101,9 @@ func (s *Source) runReader(conn *gortmplib.Client) error { return err } - var stream *stream.Stream + var strm *stream.Stream - medias, err := rtmp.ToStream(r, &stream) + medias, err := rtmp.ToStream(r, &strm) if err != nil { return err } @@ -123,7 +123,7 @@ func (s *Source) runReader(conn *gortmplib.Client) error { defer s.Parent.SetNotReady(defs.PathSourceStaticSetNotReadyReq{}) - stream = res.Stream + strm = res.Stream conn.NetConn().SetWriteDeadline(time.Time{}) diff --git a/internal/staticsources/rtp/source.go b/internal/staticsources/rtp/source.go index 8e3dc21d..735eba28 100644 --- a/internal/staticsources/rtp/source.go +++ b/internal/staticsources/rtp/source.go @@ -133,7 +133,7 @@ func (s *Source) runReader(desc *description.Session, nc net.Conn) error { decodeErrors.Start() defer decodeErrors.Stop() - var stream *stream.Stream + var strm *stream.Stream timeDecoder := &rtptime.GlobalDecoder{} timeDecoder.Initialize() @@ -168,14 +168,14 @@ func (s *Source) runReader(desc *description.Session, nc net.Conn) error { var pkt rtp.Packet err = pkt.Unmarshal(buf[:n]) if err != nil { - if stream != nil { + if strm != nil { decodeErrors.Increase() continue } return err } - if stream == nil { + if strm == nil { res := s.Parent.SetReady(defs.PathSourceStaticSetReadyReq{ Desc: desc, GenerateRTPPackets: false, @@ -187,7 +187,7 @@ func (s *Source) runReader(desc *description.Session, nc net.Conn) error { defer s.Parent.SetNotReady(defs.PathSourceStaticSetNotReadyReq{}) - stream = res.Stream + strm = res.Stream } media, ok := mediasByPayloadType[pkt.PayloadType] @@ -209,7 +209,7 @@ func (s *Source) runReader(desc *description.Session, nc net.Conn) error { continue } - stream.WriteRTPPacket(media.desc, forma.desc, pkt, time.Time{}, pts) + strm.WriteRTPPacket(media.desc, forma.desc, pkt, time.Time{}, pts) } } } diff --git a/internal/staticsources/rtsp/source.go b/internal/staticsources/rtsp/source.go index 23d16b10..f512be57 100644 --- a/internal/staticsources/rtsp/source.go +++ b/internal/staticsources/rtsp/source.go @@ -16,6 +16,7 @@ import ( "github.com/bluenviron/mediamtx/internal/logger" "github.com/bluenviron/mediamtx/internal/protocols/rtsp" "github.com/bluenviron/mediamtx/internal/protocols/tls" + "github.com/bluenviron/mediamtx/internal/stream" ) func createRangeHeader(cnf *conf.Path) (*headers.Range, error) { @@ -187,47 +188,7 @@ func (s *Source) Run(params defs.StaticSourceRunParams) error { readErr := make(chan error) go func() { - readErr <- func() error { - desc, _, err2 := c.Describe(u) - if err2 != nil { - return err2 - } - - err2 = c.SetupAll(desc.BaseURL, desc.Medias) - if err2 != nil { - return err2 - } - - res := s.Parent.SetReady(defs.PathSourceStaticSetReadyReq{ - Desc: desc, - GenerateRTPPackets: false, - FillNTP: !params.Conf.UseAbsoluteTimestamp, - }) - if res.Err != nil { - return res.Err - } - - defer s.Parent.SetNotReady(defs.PathSourceStaticSetNotReadyReq{}) - - rtsp.ToStream( - c, - desc.Medias, - params.Conf, - res.Stream, - s) - - rangeHeader, err2 := createRangeHeader(params.Conf) - if err2 != nil { - return err2 - } - - _, err2 = c.Play(rangeHeader) - if err2 != nil { - return err2 - } - - return c.Wait() - }() + readErr <- s.runInner(c, u, params.Conf) }() for { @@ -245,6 +206,52 @@ func (s *Source) Run(params defs.StaticSourceRunParams) error { } } +func (s *Source) runInner(c *gortsplib.Client, u *base.URL, pathConf *conf.Path) error { + desc, _, err := c.Describe(u) + if err != nil { + return err + } + + err = c.SetupAll(desc.BaseURL, desc.Medias) + if err != nil { + return err + } + + var strm *stream.Stream + + rtsp.ToStream( + c, + desc.Medias, + pathConf, + &strm, + s) + + res := s.Parent.SetReady(defs.PathSourceStaticSetReadyReq{ + Desc: desc, + GenerateRTPPackets: false, + FillNTP: !pathConf.UseAbsoluteTimestamp, + }) + if res.Err != nil { + return res.Err + } + + defer s.Parent.SetNotReady(defs.PathSourceStaticSetNotReadyReq{}) + + strm = res.Stream + + rangeHeader, err := createRangeHeader(pathConf) + if err != nil { + return err + } + + _, err = c.Play(rangeHeader) + if err != nil { + return err + } + + return c.Wait() +} + // APISourceDescribe implements StaticSource. func (*Source) APISourceDescribe() defs.APIPathSourceOrReader { return defs.APIPathSourceOrReader{ diff --git a/internal/staticsources/srt/source.go b/internal/staticsources/srt/source.go index 5e091750..48acd8a9 100644 --- a/internal/staticsources/srt/source.go +++ b/internal/staticsources/srt/source.go @@ -101,9 +101,9 @@ func (s *Source) runReader(sconn srt.Conn) error { decodeErrors.Increase() }) - var stream *stream.Stream + var strm *stream.Stream - medias, err := mpegts.ToStream(r, &stream, s) + medias, err := mpegts.ToStream(r, &strm, s) if err != nil { return err } @@ -119,7 +119,7 @@ func (s *Source) runReader(sconn srt.Conn) error { defer s.Parent.SetNotReady(defs.PathSourceStaticSetNotReadyReq{}) - stream = res.Stream + strm = res.Stream for { sconn.SetReadDeadline(time.Now().Add(time.Duration(s.ReadTimeout))) diff --git a/internal/staticsources/webrtc/source.go b/internal/staticsources/webrtc/source.go index 2ecbd9aa..848724fe 100644 --- a/internal/staticsources/webrtc/source.go +++ b/internal/staticsources/webrtc/source.go @@ -67,9 +67,9 @@ func (s *Source) Run(params defs.StaticSourceRunParams) error { return err } - var stream *stream.Stream + var strm *stream.Stream - medias, err := webrtc.ToStream(client.PeerConnection(), params.Conf, &stream, s) + medias, err := webrtc.ToStream(client.PeerConnection(), params.Conf, &strm, s) if err != nil { client.Close() //nolint:errcheck return err @@ -87,7 +87,7 @@ func (s *Source) Run(params defs.StaticSourceRunParams) error { defer s.Parent.SetNotReady(defs.PathSourceStaticSetNotReadyReq{}) - stream = rres.Stream + strm = rres.Stream client.StartReading() From c83a13cf8edf1e705048289583027ec6137c4c8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Dec 2025 20:37:15 +0100 Subject: [PATCH 10/51] build(deps): bump github.com/pion/rtp from 1.8.26 to 1.8.27 (#5285) Bumps [github.com/pion/rtp](https://github.com/pion/rtp) from 1.8.26 to 1.8.27. - [Release notes](https://github.com/pion/rtp/releases) - [Commits](https://github.com/pion/rtp/compare/v1.8.26...v1.8.27) --- updated-dependencies: - dependency-name: github.com/pion/rtp dependency-version: 1.8.27 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 8cf219ce..96176a64 100644 --- a/go.mod +++ b/go.mod @@ -31,7 +31,7 @@ require ( github.com/pion/interceptor v0.1.42 github.com/pion/logging v0.2.4 github.com/pion/rtcp v1.2.16 - github.com/pion/rtp v1.8.26 + github.com/pion/rtp v1.8.27 github.com/pion/sdp/v3 v3.0.16 github.com/pion/transport/v3 v3.1.1 github.com/pion/webrtc/v4 v4.1.8 diff --git a/go.sum b/go.sum index 4700f7e1..b8b2d239 100644 --- a/go.sum +++ b/go.sum @@ -173,8 +173,8 @@ github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA= github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8= github.com/pion/rtcp v1.2.16 h1:fk1B1dNW4hsI78XUCljZJlC4kZOPk67mNRuQ0fcEkSo= github.com/pion/rtcp v1.2.16/go.mod h1:/as7VKfYbs5NIb4h6muQ35kQF/J0ZVNz2Z3xKoCBYOo= -github.com/pion/rtp v1.8.26 h1:VB+ESQFQhBXFytD+Gk8cxB6dXeVf2WQzg4aORvAvAAc= -github.com/pion/rtp v1.8.26/go.mod h1:rF5nS1GqbR7H/TCpKwylzeq6yDM+MM6k+On5EgeThEM= +github.com/pion/rtp v1.8.27 h1:kbWTdZr62RDlYjatVAW4qFwrAu9XcGnwMsofCfAHlOU= +github.com/pion/rtp v1.8.27/go.mod h1:rF5nS1GqbR7H/TCpKwylzeq6yDM+MM6k+On5EgeThEM= github.com/pion/sctp v1.8.41 h1:20R4OHAno4Vky3/iE4xccInAScAa83X6nWUfyc65MIs= github.com/pion/sctp v1.8.41/go.mod h1:2wO6HBycUH7iCssuGyc2e9+0giXVW0pyCv3ZuL8LiyY= github.com/pion/sdp/v3 v3.0.16 h1:0dKzYO6gTAvuLaAKQkC02eCPjMIi4NuAr/ibAwrGDCo= From 1704fba5e9bee6a1d632efe11c7ca0d8735b7535 Mon Sep 17 00:00:00 2001 From: Alessandro Ros Date: Wed, 24 Dec 2025 20:44:56 +0100 Subject: [PATCH 11/51] rtsp: avoid setupping back channels (#5074) (#5289) --- internal/staticsources/rtsp/source.go | 29 +++- internal/staticsources/rtsp/source_test.go | 179 ++++++++++++++++++++- 2 files changed, 201 insertions(+), 7 deletions(-) diff --git a/internal/staticsources/rtsp/source.go b/internal/staticsources/rtsp/source.go index f512be57..0a21f506 100644 --- a/internal/staticsources/rtsp/source.go +++ b/internal/staticsources/rtsp/source.go @@ -2,12 +2,14 @@ package rtsp import ( + "fmt" "net/url" "regexp" "time" "github.com/bluenviron/gortsplib/v5" "github.com/bluenviron/gortsplib/v5/pkg/base" + "github.com/bluenviron/gortsplib/v5/pkg/description" "github.com/bluenviron/gortsplib/v5/pkg/headers" "github.com/bluenviron/mediamtx/internal/conf" @@ -212,22 +214,39 @@ func (s *Source) runInner(c *gortsplib.Client, u *base.URL, pathConf *conf.Path) return err } - err = c.SetupAll(desc.BaseURL, desc.Medias) - if err != nil { - return err + var medias []*description.Media + + for _, m := range desc.Medias { + if !m.IsBackChannel { + _, err = c.Setup(desc.BaseURL, m, 0, 0) + if err != nil { + return err + } + + medias = append(medias, m) + } + } + + if medias == nil { + return fmt.Errorf("no medias have been setupped") + } + + desc2 := &description.Session{ + Title: desc.Title, + Medias: medias, } var strm *stream.Stream rtsp.ToStream( c, - desc.Medias, + desc2.Medias, pathConf, &strm, s) res := s.Parent.SetReady(defs.PathSourceStaticSetReadyReq{ - Desc: desc, + Desc: desc2, GenerateRTPPackets: false, FillNTP: !pathConf.UseAbsoluteTimestamp, }) diff --git a/internal/staticsources/rtsp/source_test.go b/internal/staticsources/rtsp/source_test.go index 7f15ece9..d7242f74 100644 --- a/internal/staticsources/rtsp/source_test.go +++ b/internal/staticsources/rtsp/source_test.go @@ -11,6 +11,7 @@ import ( "github.com/bluenviron/gortsplib/v5/pkg/auth" "github.com/bluenviron/gortsplib/v5/pkg/base" "github.com/bluenviron/gortsplib/v5/pkg/description" + "github.com/bluenviron/gortsplib/v5/pkg/format" "github.com/pion/rtp" "github.com/stretchr/testify/require" @@ -19,6 +20,10 @@ import ( "github.com/bluenviron/mediamtx/internal/test" ) +func ptrOf[T any](v T) *T { + return &v +} + type testServer struct { onDescribe func(*gortsplib.ServerHandlerOnDescribeCtx) (*base.Response, *gortsplib.ServerStream, error) onSetup func(*gortsplib.ServerHandlerOnSetupCtx) (*base.Response, *gortsplib.ServerStream, error) @@ -189,7 +194,7 @@ func TestSource(t *testing.T) { } } -func TestSourceNoPassword(t *testing.T) { +func TestNoPassword(t *testing.T) { var strm *gortsplib.ServerStream nonce, err := auth.GenerateNonce() @@ -290,7 +295,7 @@ func TestSourceNoPassword(t *testing.T) { <-p.Unit } -func TestSourceRange(t *testing.T) { +func TestRange(t *testing.T) { for _, ca := range []string{"clock", "npt", "smpte"} { t.Run(ca, func(t *testing.T) { var strm *gortsplib.ServerStream @@ -403,3 +408,173 @@ func TestSourceRange(t *testing.T) { }) } } + +func TestSkipBackChannel(t *testing.T) { + media0 := test.UniqueMediaH264() + media1 := test.UniqueMediaMPEG4Audio() + backChannelMedia := &description.Media{ + Type: description.MediaTypeAudio, + Formats: []format.Format{&format.Opus{PayloadTyp: 96, ChannelCount: 2}}, + IsBackChannel: true, + } + + var strm *gortsplib.ServerStream + setupCount := 0 + + s := gortsplib.Server{ + Handler: &testServer{ + onDescribe: func(_ *gortsplib.ServerHandlerOnDescribeCtx) (*base.Response, *gortsplib.ServerStream, error) { + return &base.Response{ + StatusCode: base.StatusOK, + }, strm, nil + }, + onSetup: func(_ *gortsplib.ServerHandlerOnSetupCtx) (*base.Response, *gortsplib.ServerStream, error) { + setupCount++ + return &base.Response{ + StatusCode: base.StatusOK, + }, strm, nil + }, + onPlay: func(_ *gortsplib.ServerHandlerOnPlayCtx) (*base.Response, error) { + go func() { + time.Sleep(100 * time.Millisecond) + err := strm.WritePacketRTP(media0, &rtp.Packet{ + Header: rtp.Header{ + Version: 0x02, + PayloadType: 96, + SequenceNumber: 57899, + Timestamp: 345234345, + SSRC: 978651231, + Marker: true, + }, + Payload: []byte{5, 1, 2, 3, 4}, + }) + require.NoError(t, err) + }() + + return &base.Response{ + StatusCode: base.StatusOK, + }, nil + }, + }, + RTSPAddress: "127.0.0.1:8555", + } + + err := s.Start() + require.NoError(t, err) + defer s.Close() + + strm = &gortsplib.ServerStream{ + Server: &s, + Desc: &description.Session{Medias: []*description.Media{media0, media1, backChannelMedia}}, + } + err = strm.Initialize() + require.NoError(t, err) + defer strm.Close() + + var sp conf.RTSPTransport + sp.UnmarshalJSON([]byte(`"tcp"`)) //nolint:errcheck + + p := &test.StaticSourceParent{} + p.Initialize() + defer p.Close() + + so := &Source{ + ReadTimeout: conf.Duration(10 * time.Second), + WriteTimeout: conf.Duration(10 * time.Second), + WriteQueueSize: 2048, + Parent: p, + } + + done := make(chan struct{}) + defer func() { <-done }() + + ctx, ctxCancel := context.WithCancel(context.Background()) + defer ctxCancel() + + go func() { + so.Run(defs.StaticSourceRunParams{ //nolint:errcheck + Context: ctx, + ResolvedSource: "rtsp://127.0.0.1:8555/teststream", + Conf: &conf.Path{ + RTSPTransport: conf.RTSPTransport{Protocol: ptrOf(gortsplib.ProtocolTCP)}, + }, + }) + close(done) + }() + + <-p.Unit + + require.Equal(t, 2, setupCount) +} + +func TestOnlyBackChannelsError(t *testing.T) { + backChannelMedia1 := &description.Media{ + Type: description.MediaTypeAudio, + Formats: []format.Format{&format.Opus{PayloadTyp: 96, ChannelCount: 2}}, + IsBackChannel: true, + } + backChannelMedia2 := &description.Media{ + Type: description.MediaTypeAudio, + Formats: []format.Format{&format.G711{PayloadTyp: 8, SampleRate: 8000, ChannelCount: 1}}, + IsBackChannel: true, + } + + var strm *gortsplib.ServerStream + + s := gortsplib.Server{ + Handler: &testServer{ + onDescribe: func(_ *gortsplib.ServerHandlerOnDescribeCtx) (*base.Response, *gortsplib.ServerStream, error) { + return &base.Response{ + StatusCode: base.StatusOK, + }, strm, nil + }, + onSetup: func(_ *gortsplib.ServerHandlerOnSetupCtx) (*base.Response, *gortsplib.ServerStream, error) { + return &base.Response{ + StatusCode: base.StatusOK, + }, strm, nil + }, + onPlay: func(_ *gortsplib.ServerHandlerOnPlayCtx) (*base.Response, error) { + return &base.Response{ + StatusCode: base.StatusOK, + }, nil + }, + }, + RTSPAddress: "127.0.0.1:8555", + } + + err := s.Start() + require.NoError(t, err) + defer s.Close() + + strm = &gortsplib.ServerStream{ + Server: &s, + Desc: &description.Session{Medias: []*description.Media{backChannelMedia1, backChannelMedia2}}, + } + err = strm.Initialize() + require.NoError(t, err) + defer strm.Close() + + p := &test.StaticSourceParent{} + p.Initialize() + + so := &Source{ + ReadTimeout: conf.Duration(10 * time.Second), + WriteTimeout: conf.Duration(10 * time.Second), + WriteQueueSize: 2048, + Parent: p, + } + + ctx, ctxCancel := context.WithCancel(context.Background()) + defer ctxCancel() + + err = so.Run(defs.StaticSourceRunParams{ + Context: ctx, + ResolvedSource: "rtsp://127.0.0.1:8555/teststream", + Conf: &conf.Path{ + RTSPTransport: conf.RTSPTransport{Protocol: ptrOf(gortsplib.ProtocolTCP)}, + }, + }) + + require.Error(t, err) + require.Contains(t, err.Error(), "no media") +} From cd2aed3fa343a8960ac8a29e3d9d15af6bcc3b78 Mon Sep 17 00:00:00 2001 From: Alessandro Ros Date: Wed, 24 Dec 2025 20:51:01 +0100 Subject: [PATCH 12/51] srt: fix broken connections in case of high latency (#3756) (#5282) When listening and accepting an incoming connection request, the response might be received by the peer with some delay due to latency. This causes the peer to send a second connection request, that is not detected as duplicate because the first connection request has already been removed from the map that is used to check for duplicates (connReqs), so it is treated as a brand new connection request, breaking the first connection. This patch fixes the issue by introducing another map (connByPeer) that is used to check whether a connection request is associated to an already-accepted connection. --- go.mod | 2 ++ go.sum | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 96176a64..86b994f9 100644 --- a/go.mod +++ b/go.mod @@ -101,3 +101,5 @@ require ( gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) + +replace github.com/datarhei/gosrt => github.com/aler9/gosrt v0.9.1-0.20251222193740-d7fe54d226e5 diff --git a/go.sum b/go.sum index b8b2d239..ca15d0af 100644 --- a/go.sum +++ b/go.sum @@ -23,6 +23,8 @@ github.com/alecthomas/kong v1.13.0 h1:5e/7XC3ugvhP1DQBmTS+WuHtCbcv44hsohMgcvVxSr github.com/alecthomas/kong v1.13.0/go.mod h1:wrlbXem1CWqUV5Vbmss5ISYhsVPkBb1Yo7YKJghju2I= github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/aler9/gosrt v0.9.1-0.20251222193740-d7fe54d226e5 h1:RJzCu1Srlz876mijSN8gqvVISh7vVpplje/zAT8o6Pk= +github.com/aler9/gosrt v0.9.1-0.20251222193740-d7fe54d226e5/go.mod h1:SuUdLtWsdOAdcDMMmhT20i5XJ5ErwmX1hDeLCIb+xBk= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= @@ -52,8 +54,6 @@ github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gE github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= -github.com/datarhei/gosrt v0.9.0 h1:FW8A+F8tBiv7eIa57EBHjtTJKFX+OjvLogF/tFXoOiA= -github.com/datarhei/gosrt v0.9.0/go.mod h1:rqTRK8sDZdN2YBgp1EEICSV4297mQk0oglwvpXhaWdk= 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= From a93f9a290fd21af90090e6dd7d519008b5cbcb55 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Dec 2025 20:51:34 +0100 Subject: [PATCH 13/51] build(deps): bump code.cloudfoundry.org/bytefmt from 0.58.0 to 0.59.0 (#5286) Bumps [code.cloudfoundry.org/bytefmt](https://github.com/cloudfoundry/bytefmt) from 0.58.0 to 0.59.0. - [Release notes](https://github.com/cloudfoundry/bytefmt/releases) - [Commits](https://github.com/cloudfoundry/bytefmt/compare/v0.58.0...v0.59.0) --- updated-dependencies: - dependency-name: code.cloudfoundry.org/bytefmt dependency-version: 0.59.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 28 ++++++++++++++-------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/go.mod b/go.mod index 86b994f9..0d11c3bf 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/bluenviron/mediamtx go 1.25.0 require ( - code.cloudfoundry.org/bytefmt v0.58.0 + code.cloudfoundry.org/bytefmt v0.59.0 github.com/Masterminds/semver/v3 v3.4.0 github.com/MicahParks/jwkset v0.11.0 github.com/MicahParks/keyfunc/v3 v3.7.0 @@ -94,7 +94,7 @@ require ( github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect golang.org/x/arch v0.20.0 // indirect - golang.org/x/net v0.47.0 // indirect + golang.org/x/net v0.48.0 // indirect golang.org/x/text v0.32.0 // indirect golang.org/x/time v0.12.0 // indirect google.golang.org/protobuf v1.36.9 // indirect diff --git a/go.sum b/go.sum index ca15d0af..87befc0c 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ aead.dev/minisign v0.2.0 h1:kAWrq/hBRu4AARY6AlciO83xhNnW9UaC8YipS2uhLPk= aead.dev/minisign v0.2.0/go.mod h1:zdq6LdSd9TbuSxchxwhpA9zEb9YXcVGoE8JakuiGaIQ= -code.cloudfoundry.org/bytefmt v0.58.0 h1:pj/1gobEDZh6PIlNnDmOJMAGnv9hb2NHbw7/PSUY4wY= -code.cloudfoundry.org/bytefmt v0.58.0/go.mod h1:koEpk4JCe4CXNcULPrdoTcMbkmG87+ZIT+vHqoNMyL0= +code.cloudfoundry.org/bytefmt v0.59.0 h1:3MwVif5yl7whqaqe6HUE0scI8DjuQFj0/lHuVvP8T8c= +code.cloudfoundry.org/bytefmt v0.59.0/go.mod h1:xPSZ5kgjzozlhfoFVY+rl6t08B2EjomemkMjZmQBjd4= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= @@ -104,8 +104,8 @@ github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUv github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20251114195745-4902fdda35c8 h1:3DsUAV+VNEQa2CUVLxCY3f87278uWfIDhJnbdvDjvmE= -github.com/google/pprof v0.0.0-20251114195745-4902fdda35c8/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= +github.com/google/pprof v0.0.0-20251213031049-b05bdaca462f h1:HU1RgM6NALf/KW9HEY6zry3ADbDKcmpQ+hJedoNGQYQ= +github.com/google/pprof v0.0.0-20251213031049-b05bdaca462f/go.mod h1:67FPmZWbr+KDT/VlpWtw6sO9XSjpJmLuHpoLmWiTGgY= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -149,10 +149,10 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns= -github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= -github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A= -github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= +github.com/onsi/ginkgo/v2 v2.27.3 h1:ICsZJ8JoYafeXFFlFAG75a7CxMsJHwgKwtO+82SE9L8= +github.com/onsi/ginkgo/v2 v2.27.3/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= +github.com/onsi/gomega v1.38.3 h1:eTX+W6dobAYfFeGC2PV6RwXRu/MyT+cQguijutvkpSM= +github.com/onsi/gomega v1.38.3/go.mod h1:ZCU1pkQcXDO5Sl9/VVEGlDyp+zm0m1cmeG5TOzLgdh4= github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e h1:s2RNOM/IGdY0Y6qfTeUKhDawdHDpK9RGBdx80qN4Ttw= github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e/go.mod h1:nBdnFKj15wFbf94Rwfq4m30eAcyY9V/IyKAGQFtqkW0= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= @@ -243,12 +243,12 @@ golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= -golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= -golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= +golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI= +golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -275,8 +275,8 @@ golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= -golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= +golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA= +golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 64077218078cf82ef3c98ca3204b4641021db4c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Dec 2025 21:01:16 +0100 Subject: [PATCH 14/51] build(deps): bump github.com/pion/sdp/v3 from 3.0.16 to 3.0.17 (#5287) Bumps [github.com/pion/sdp/v3](https://github.com/pion/sdp) from 3.0.16 to 3.0.17. - [Release notes](https://github.com/pion/sdp/releases) - [Commits](https://github.com/pion/sdp/compare/v3.0.16...v3.0.17) --- updated-dependencies: - dependency-name: github.com/pion/sdp/v3 dependency-version: 3.0.17 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0d11c3bf..8762117f 100644 --- a/go.mod +++ b/go.mod @@ -32,7 +32,7 @@ require ( github.com/pion/logging v0.2.4 github.com/pion/rtcp v1.2.16 github.com/pion/rtp v1.8.27 - github.com/pion/sdp/v3 v3.0.16 + github.com/pion/sdp/v3 v3.0.17 github.com/pion/transport/v3 v3.1.1 github.com/pion/webrtc/v4 v4.1.8 github.com/stretchr/testify v1.11.1 diff --git a/go.sum b/go.sum index 87befc0c..242c87bb 100644 --- a/go.sum +++ b/go.sum @@ -177,8 +177,8 @@ github.com/pion/rtp v1.8.27 h1:kbWTdZr62RDlYjatVAW4qFwrAu9XcGnwMsofCfAHlOU= github.com/pion/rtp v1.8.27/go.mod h1:rF5nS1GqbR7H/TCpKwylzeq6yDM+MM6k+On5EgeThEM= github.com/pion/sctp v1.8.41 h1:20R4OHAno4Vky3/iE4xccInAScAa83X6nWUfyc65MIs= github.com/pion/sctp v1.8.41/go.mod h1:2wO6HBycUH7iCssuGyc2e9+0giXVW0pyCv3ZuL8LiyY= -github.com/pion/sdp/v3 v3.0.16 h1:0dKzYO6gTAvuLaAKQkC02eCPjMIi4NuAr/ibAwrGDCo= -github.com/pion/sdp/v3 v3.0.16/go.mod h1:9tyKzznud3qiweZcD86kS0ff1pGYB3VX+Bcsmkx6IXo= +github.com/pion/sdp/v3 v3.0.17 h1:9SfLAW/fF1XC8yRqQ3iWGzxkySxup4k4V7yN8Fs8nuo= +github.com/pion/sdp/v3 v3.0.17/go.mod h1:9tyKzznud3qiweZcD86kS0ff1pGYB3VX+Bcsmkx6IXo= github.com/pion/srtp/v3 v3.0.9 h1:lRGF4G61xxj+m/YluB3ZnBpiALSri2lTzba0kGZMrQY= github.com/pion/srtp/v3 v3.0.9/go.mod h1:E+AuWd7Ug2Fp5u38MKnhduvpVkveXJX6J4Lq4rxUYt8= github.com/pion/stun/v3 v3.0.2 h1:BJuGEN2oLrJisiNEJtUTJC4BGbzbfp37LizfqswblFU= From 20e7f1db75ea9f63396848bad60c717cae841531 Mon Sep 17 00:00:00 2001 From: Alessandro Ros Date: Sat, 27 Dec 2025 13:55:13 +0100 Subject: [PATCH 15/51] docs: improve (#5277) --- docs/1-kickoff/1-introduction.md | 2 +- docs/1-kickoff/2-install.md | 2 +- docs/1-kickoff/3-upgrade.md | 4 ++-- docs/2-usage/01-basic-usage.md | 2 +- docs/2-usage/02-publish.md | 6 +++--- docs/2-usage/04-configuration.md | 12 ++++++++++++ docs/2-usage/05-authentication.md | 4 ++-- docs/2-usage/06-encrypt-the-configuration.md | 9 --------- ...sion.md => 06-remuxing-reencoding-compression.md} | 0 docs/2-usage/{08-record.md => 07-record.md} | 0 docs/2-usage/{09-playback.md => 08-playback.md} | 0 docs/2-usage/{10-forward.md => 09-forward.md} | 0 docs/2-usage/{11-proxy.md => 10-proxy.md} | 0 ...-extract-snapshots.md => 11-extract-snapshots.md} | 0 ...mand-publishing.md => 12-on-demand-publishing.md} | 0 ...timestamps.md => 13-route-absolute-timestamps.md} | 0 ...der.md => 14-expose-the-server-in-a-subfolder.md} | 2 +- ...a-website.md => 15-embed-streams-in-a-website.md} | 4 ++-- .../{17-start-on-boot.md => 16-start-on-boot.md} | 0 .../{18-log-management.md => 17-log-management.md} | 0 docs/2-usage/{19-hooks.md => 18-hooks.md} | 0 .../2-usage/{20-control-api.md => 19-control-api.md} | 0 docs/2-usage/{21-metrics.md => 20-metrics.md} | 2 +- .../2-usage/{22-performance.md => 21-performance.md} | 0 ...cific-features.md => 22-srt-specific-features.md} | 0 ...ic-features.md => 23-webrtc-specific-features.md} | 2 +- ...ific-features.md => 24-rtsp-specific-features.md} | 0 ...ific-features.md => 25-rtmp-specific-features.md} | 2 +- ...ase-packet-loss.md => 26-decrease-packet-loss.md} | 6 +++--- docs/3-references/1-configuration-file.md | 2 +- docs/3-references/2-control-api.md | 2 +- docs/4-other/2-license.md | 2 +- 32 files changed, 34 insertions(+), 31 deletions(-) delete mode 100644 docs/2-usage/06-encrypt-the-configuration.md rename docs/2-usage/{07-remuxing-reencoding-compression.md => 06-remuxing-reencoding-compression.md} (100%) rename docs/2-usage/{08-record.md => 07-record.md} (100%) rename docs/2-usage/{09-playback.md => 08-playback.md} (100%) rename docs/2-usage/{10-forward.md => 09-forward.md} (100%) rename docs/2-usage/{11-proxy.md => 10-proxy.md} (100%) rename docs/2-usage/{12-extract-snapshots.md => 11-extract-snapshots.md} (100%) rename docs/2-usage/{13-on-demand-publishing.md => 12-on-demand-publishing.md} (100%) rename docs/2-usage/{14-route-absolute-timestamps.md => 13-route-absolute-timestamps.md} (100%) rename docs/2-usage/{15-expose-the-server-in-a-subfolder.md => 14-expose-the-server-in-a-subfolder.md} (93%) rename docs/2-usage/{16-embed-streams-in-a-website.md => 15-embed-streams-in-a-website.md} (97%) rename docs/2-usage/{17-start-on-boot.md => 16-start-on-boot.md} (100%) rename docs/2-usage/{18-log-management.md => 17-log-management.md} (100%) rename docs/2-usage/{19-hooks.md => 18-hooks.md} (100%) rename docs/2-usage/{20-control-api.md => 19-control-api.md} (100%) rename docs/2-usage/{21-metrics.md => 20-metrics.md} (98%) rename docs/2-usage/{22-performance.md => 21-performance.md} (100%) rename docs/2-usage/{23-srt-specific-features.md => 22-srt-specific-features.md} (100%) rename docs/2-usage/{24-webrtc-specific-features.md => 23-webrtc-specific-features.md} (95%) rename docs/2-usage/{25-rtsp-specific-features.md => 24-rtsp-specific-features.md} (100%) rename docs/2-usage/{26-rtmp-specific-features.md => 25-rtmp-specific-features.md} (93%) rename docs/2-usage/{27-decrease-packet-loss.md => 26-decrease-packet-loss.md} (72%) diff --git a/docs/1-kickoff/1-introduction.md b/docs/1-kickoff/1-introduction.md index 5b610f8d..623ff2c7 100644 --- a/docs/1-kickoff/1-introduction.md +++ b/docs/1-kickoff/1-introduction.md @@ -2,7 +2,7 @@ Welcome to the MediaMTX documentation! -MediaMTX is a ready-to-use and zero-dependency live media server and media proxy. It has been conceived as a "media router" that routes media streams from one end to the other. +_MediaMTX_ is a ready-to-use and zero-dependency live media server and media proxy. It has been conceived as a "media router" that routes media streams from one end to the other. Main features: diff --git a/docs/1-kickoff/2-install.md b/docs/1-kickoff/2-install.md index 0e0bc48c..b13618ba 100644 --- a/docs/1-kickoff/2-install.md +++ b/docs/1-kickoff/2-install.md @@ -6,7 +6,7 @@ There are several installation methods available: standalone binary, Docker imag 1. Visit the [Releases page](https://github.com/bluenviron/mediamtx/releases) on GitHub, download and extract a standalone binary that corresponds to your operating system and architecture (example: `mediamtx_{version_tag}_linux_amd64.tar.gz`). -2. Start the server: +2. Start the server by double clicking on `mediamtx` (`mediamtx.exe` on Windows) or writing in the terminal: ```sh ./mediamtx diff --git a/docs/1-kickoff/3-upgrade.md b/docs/1-kickoff/3-upgrade.md index 092e421e..73eeaa66 100644 --- a/docs/1-kickoff/3-upgrade.md +++ b/docs/1-kickoff/3-upgrade.md @@ -1,6 +1,6 @@ # Upgrade -If you have an existing MediaMTX installation, you can upgrade it to the latest version. The procedure depends on how MediaMTX was installed. +If you have an existing _MediaMTX_ installation, you can upgrade it to the latest version. The procedure depends on how _MediaMTX_ was installed. ## Standalone binary @@ -10,7 +10,7 @@ The standalone binary comes with a upgrade utility that can be launched with: ./mediamtx --upgrade ``` -This will replace the MediaMTX executable with its latest version. Privileges to write to the executable location are required. +This will replace the _MediaMTX_ executable with its latest version. Privileges to write to the executable location are required. ## Docker image diff --git a/docs/2-usage/01-basic-usage.md b/docs/2-usage/01-basic-usage.md index c3bb156a..dd064520 100644 --- a/docs/2-usage/01-basic-usage.md +++ b/docs/2-usage/01-basic-usage.md @@ -13,7 +13,7 @@ ! qtdemux name=d d.video_0 ! queue ! s.sink_0 d.audio_0 ! queue ! s.sink_1 ``` -2. Open the stream. For instance, you can open the stream with _VLC_: +2. Read the stream. For instance, you can read the stream with _VLC_: ```sh vlc --network-caching=50 rtsp://localhost:8554/mystream diff --git a/docs/2-usage/02-publish.md b/docs/2-usage/02-publish.md index af9ea177..c949edad 100644 --- a/docs/2-usage/02-publish.md +++ b/docs/2-usage/02-publish.md @@ -94,7 +94,7 @@ paths: source: wheps://host:port/path ``` -If the remote server is a MediaMTX instance, remember to add a `/whep` suffix after the stream name, since in MediaMTX [it's part of the WHEP URL](read#webrtc): +If the remote server is a _MediaMTX_ instance, remember to add a `/whep` suffix after the stream name, since in _MediaMTX_ [it's part of the WHEP URL](read#webrtc): ```yml paths: @@ -452,7 +452,7 @@ ffmpeg -re -stream_loop -1 -i file.ts -c copy -f flv rtmp://localhost:1935/mystr #### FFmpeg and MPEG-TS over UDP -In MediaMTX configuration, add a path with `source: udp+mpegts://238.0.0.1:1234`. Then: +In _MediaMTX_ configuration, add a path with `source: udp+mpegts://238.0.0.1:1234`. Then: ```sh ffmpeg -re -stream_loop -1 -i file.ts -c copy -f mpegts 'udp://127.0.0.1:3356?pkt_size=1316' @@ -468,7 +468,7 @@ ffmpeg -re -f lavfi -i testsrc=size=1280x720:rate=30 \ #### FFmpeg and RTP over UDP -In MediaMTX configuration, add a path with `source: udp+rtp://238.0.0.1:1234` and a valid `rtpSDP` (see [RTP](#rtp)). Then: +In _MediaMTX_ configuration, add a path with `source: udp+rtp://238.0.0.1:1234` and a valid `rtpSDP` (see [RTP](#rtp)). Then: ```sh ffmpeg -re -f lavfi -i testsrc=size=1280x720:rate=30 \ diff --git a/docs/2-usage/04-configuration.md b/docs/2-usage/04-configuration.md index 083ac566..f9c104e0 100644 --- a/docs/2-usage/04-configuration.md +++ b/docs/2-usage/04-configuration.md @@ -2,6 +2,8 @@ All the configuration parameters are listed and commented in the [configuration file](/docs/references/configuration-file) (`mediamtx.yml`). +## Change the configuration + There are several ways to change the configuration: 1. By editing the configuration file, that is @@ -46,3 +48,13 @@ There are several ways to change the configuration: ``` 3. By using the [Control API](control-api). + +## Encrypt the configuration + +The configuration file can be entirely encrypted for security purposes by using the `crypto_secretbox` function of the NaCL function. An online tool for performing this operation is [available here](https://play.golang.org/p/rX29jwObNe4). + +After performing the encryption, put the base64-encoded result into the configuration file, and launch the server with the `MTX_CONFKEY` variable: + +``` +MTX_CONFKEY=mykey ./mediamtx +``` diff --git a/docs/2-usage/05-authentication.md b/docs/2-usage/05-authentication.md index 2beac485..d9d860b8 100644 --- a/docs/2-usage/05-authentication.md +++ b/docs/2-usage/05-authentication.md @@ -2,7 +2,7 @@ ## Overview -MediaMTX can be configured to ask clients for credentials, either in the form of username/password or a string-based token. These credentials are then validated through a chosen method. +_MediaMTX_ can be configured to ask clients for credentials, either in the form of username/password or a string-based token. These credentials are then validated through a chosen method. ## Credential validation @@ -306,6 +306,6 @@ Authorization: Bearer MY_JWT In OBS Studio, this is the "Bearer Token" field. -If the `Authorization: Bearer` token cannot be directly provided (for instance, with web browsers that directly access MediaMTX and show a credential dialog), you can pass the token as password, using an arbitrary user. +If the `Authorization: Bearer` token cannot be directly provided (for instance, with web browsers that directly access _MediaMTX_ and show a credential dialog), you can pass the token as password, using an arbitrary user. In web browsers, if you need to automatically fill credentials from a parent web page, see [Embed streams in a website](embed-streams-in-a-website). diff --git a/docs/2-usage/06-encrypt-the-configuration.md b/docs/2-usage/06-encrypt-the-configuration.md deleted file mode 100644 index 6be4e630..00000000 --- a/docs/2-usage/06-encrypt-the-configuration.md +++ /dev/null @@ -1,9 +0,0 @@ -# Encrypt the configuration - -The configuration file can be entirely encrypted for security purposes by using the `crypto_secretbox` function of the NaCL function. An online tool for performing this operation is [available here](https://play.golang.org/p/rX29jwObNe4). - -After performing the encryption, put the base64-encoded result into the configuration file, and launch the server with the `MTX_CONFKEY` variable: - -``` -MTX_CONFKEY=mykey ./mediamtx -``` diff --git a/docs/2-usage/07-remuxing-reencoding-compression.md b/docs/2-usage/06-remuxing-reencoding-compression.md similarity index 100% rename from docs/2-usage/07-remuxing-reencoding-compression.md rename to docs/2-usage/06-remuxing-reencoding-compression.md diff --git a/docs/2-usage/08-record.md b/docs/2-usage/07-record.md similarity index 100% rename from docs/2-usage/08-record.md rename to docs/2-usage/07-record.md diff --git a/docs/2-usage/09-playback.md b/docs/2-usage/08-playback.md similarity index 100% rename from docs/2-usage/09-playback.md rename to docs/2-usage/08-playback.md diff --git a/docs/2-usage/10-forward.md b/docs/2-usage/09-forward.md similarity index 100% rename from docs/2-usage/10-forward.md rename to docs/2-usage/09-forward.md diff --git a/docs/2-usage/11-proxy.md b/docs/2-usage/10-proxy.md similarity index 100% rename from docs/2-usage/11-proxy.md rename to docs/2-usage/10-proxy.md diff --git a/docs/2-usage/12-extract-snapshots.md b/docs/2-usage/11-extract-snapshots.md similarity index 100% rename from docs/2-usage/12-extract-snapshots.md rename to docs/2-usage/11-extract-snapshots.md diff --git a/docs/2-usage/13-on-demand-publishing.md b/docs/2-usage/12-on-demand-publishing.md similarity index 100% rename from docs/2-usage/13-on-demand-publishing.md rename to docs/2-usage/12-on-demand-publishing.md diff --git a/docs/2-usage/14-route-absolute-timestamps.md b/docs/2-usage/13-route-absolute-timestamps.md similarity index 100% rename from docs/2-usage/14-route-absolute-timestamps.md rename to docs/2-usage/13-route-absolute-timestamps.md diff --git a/docs/2-usage/15-expose-the-server-in-a-subfolder.md b/docs/2-usage/14-expose-the-server-in-a-subfolder.md similarity index 93% rename from docs/2-usage/15-expose-the-server-in-a-subfolder.md rename to docs/2-usage/14-expose-the-server-in-a-subfolder.md index f8d5ad4e..06ceb8d1 100644 --- a/docs/2-usage/15-expose-the-server-in-a-subfolder.md +++ b/docs/2-usage/14-expose-the-server-in-a-subfolder.md @@ -1,6 +1,6 @@ # Expose the server in a subfolder -HTTP-based services (WebRTC, HLS, Control API, Playback Server, Metrics, pprof) can be exposed in a subfolder of an existing HTTP server or reverse proxy. The reverse proxy must be able to intercept HTTP requests addressed to MediaMTX and corresponding responses, and perform the following changes: +HTTP-based services (WebRTC, HLS, Control API, Playback Server, Metrics, pprof) can be exposed in a subfolder of an existing HTTP server or reverse proxy. The reverse proxy must be able to intercept HTTP requests addressed to _MediaMTX_ and corresponding responses, and perform the following changes: - The subfolder path must be stripped from request paths. For instance, if the server is exposed behind `/subpath` and the reverse proxy receives a request with path `/subpath/mystream/index.m3u8`, this has to be changed into `/mystream/index.m3u8`. diff --git a/docs/2-usage/16-embed-streams-in-a-website.md b/docs/2-usage/15-embed-streams-in-a-website.md similarity index 97% rename from docs/2-usage/16-embed-streams-in-a-website.md rename to docs/2-usage/15-embed-streams-in-a-website.md index 58517eb5..c8ee2656 100644 --- a/docs/2-usage/16-embed-streams-in-a-website.md +++ b/docs/2-usage/15-embed-streams-in-a-website.md @@ -20,7 +20,7 @@ The iframe can be controlled by adding query parameters to the URL (example: `ht The iframe method is fit for most use cases, but it has some limitations: -- it doesn't allow to pass credentials (username, password or token) from the website to MediaMTX; credentials are asked directly to users. +- it doesn't allow to pass credentials (username, password or token) from the website to _MediaMTX_; credentials are asked directly to users. - it doesn't allow to directly access the video tag, to extract data from it, or to perform dynamic actions. In order to overcome these limitations, it is possible to load the stream directly inside a `