diff --git a/README.md b/README.md index 3cf4aba7..d5338411 100644 --- a/README.md +++ b/README.md @@ -27,20 +27,20 @@ _MediaMTX_ is a ready-to-use and zero-dependency real-time media server and medi

Features

-- [Publish](https://mediamtx.org/docs/usage/publish) live streams to the server with SRT, WebRTC, RTSP, RTMP, HLS, MPEG-TS, RTP, using FFmpeg, GStreamer, OBS Studio, Python , Golang, Unity, web browsers, Raspberry Pi Cameras and more. -- [Read](https://mediamtx.org/docs/usage/read) live streams from the server with SRT, WebRTC, RTSP, RTMP, HLS, using FFmpeg, GStreamer, VLC, OBS Studio, Python , Golang, Unity, web browsers and more. +- [Publish](https://mediamtx.org/docs/features/publish) live streams to the server with SRT, WebRTC, RTSP, RTMP, HLS, MPEG-TS, RTP, using FFmpeg, GStreamer, OBS Studio, Python , Golang, Unity, web browsers, Raspberry Pi Cameras and more. +- [Read](https://mediamtx.org/docs/features/read) live streams from the server with SRT, WebRTC, RTSP, RTMP, HLS, using FFmpeg, GStreamer, VLC, OBS Studio, Python , Golang, Unity, web browsers and more. - Streams are automatically converted from a protocol to another - Serve several streams at once in separate paths - Reload the configuration without disconnecting existing clients (hot reloading) -- [Serve always-available streams](https://mediamtx.org/docs/usage/always-available) even when the publisher is offline -- [Record](https://mediamtx.org/docs/usage/record) streams to disk in fMP4 or MPEG-TS format -- [Playback](https://mediamtx.org/docs/usage/playback) recorded streams -- [Authenticate](https://mediamtx.org/docs/usage/authentication) users with internal, HTTP or JWT authentication -- [Forward](https://mediamtx.org/docs/usage/forward) streams to other servers -- [Proxy](https://mediamtx.org/docs/usage/proxy) requests to other servers -- [Control](https://mediamtx.org/docs/usage/control-api) the server through the Control API -- [Extract metrics](https://mediamtx.org/docs/usage/metrics) from the server in a Prometheus-compatible format -- [Monitor performance](https://mediamtx.org/docs/usage/performance) to investigate CPU and RAM consumption -- [Run hooks](https://mediamtx.org/docs/usage/hooks) (external commands) when clients connect, disconnect, read or publish streams +- [Serve always-available streams](https://mediamtx.org/docs/features/always-available) even when the publisher is offline +- [Record](https://mediamtx.org/docs/features/record) streams to disk in fMP4 or MPEG-TS format +- [Playback](https://mediamtx.org/docs/features/playback) recorded streams +- [Authenticate](https://mediamtx.org/docs/features/authentication) users with internal, HTTP or JWT authentication +- [Forward](https://mediamtx.org/docs/features/forward) streams to other servers +- [Proxy](https://mediamtx.org/docs/features/proxy) requests to other servers +- [Control](https://mediamtx.org/docs/features/control-api) the server through the Control API +- [Extract metrics](https://mediamtx.org/docs/features/metrics) from the server in a Prometheus-compatible format +- [Monitor performance](https://mediamtx.org/docs/features/performance) to investigate CPU and RAM consumption +- [Run hooks](https://mediamtx.org/docs/features/hooks) (external commands) when clients connect, disconnect, read or publish streams - Compatible with Linux, Windows and macOS, does not require any dependency or interpreter, it's a single executable - ...and many [others](https://mediamtx.org/docs/kickoff/introduction). diff --git a/docs/1-kickoff/1-introduction.md b/docs/1-kickoff/1-introduction.md index 6c1f207f..9ff78fb7 100644 --- a/docs/1-kickoff/1-introduction.md +++ b/docs/1-kickoff/1-introduction.md @@ -6,21 +6,21 @@ _MediaMTX_ is a ready-to-use and zero-dependency live media server and media pro Main features: -- [Publish](../2-publish/01-overview.md) live streams to the server with SRT, WebRTC, RTSP, RTMP, HLS, MPEG-TS, RTP, using FFmpeg, GStreamer, OBS Studio, Python , Golang, Unity, Web browsers, Raspberry Pi Cameras and more. -- [Read](../3-read/01-overview.md) live streams from the server with SRT, WebRTC, RTSP, RTMP, HLS, using FFmpeg, GStreamer, VLC, OBS Studio, Python , Golang, Unity, Web browsers and more. +- [Publish](../2-features/03-publish.md) live streams to the server with SRT, WebRTC, RTSP, RTMP, HLS, MPEG-TS, RTP, using FFmpeg, GStreamer, OBS Studio, Python , Golang, Unity, Web browsers, Raspberry Pi Cameras and more. +- [Read](../2-features/04-read.md) live streams from the server with SRT, WebRTC, RTSP, RTMP, HLS, using FFmpeg, GStreamer, VLC, OBS Studio, Python , Golang, Unity, Web browsers and more. - Streams are automatically converted from a protocol to another - Serve several streams at once in separate paths - Reload the configuration without disconnecting existing clients (hot reloading) -- [Serve always-available streams](../4-other/04-always-available.md) even when the publisher is offline -- [Record](../4-other/05-record.md) streams to disk in fMP4 or MPEG-TS format -- [Playback](../4-other/06-playback.md) recorded streams -- [Authenticate](../4-other/02-authentication.md) users with internal, HTTP or JWT authentication -- [Forward](../4-other/07-forward.md) streams to other servers -- [Proxy](../4-other/08-proxy.md) requests to other servers -- [Control](../4-other/17-control-api.md) the server through the Control API -- [Extract metrics](../4-other/18-metrics.md) from the server in a Prometheus-compatible format -- [Monitor performance](../4-other/19-performance.md) to investigate CPU and RAM consumption -- [Run hooks](../4-other/16-hooks.md) (external commands) when clients connect, disconnect, read or publish streams +- [Serve always-available streams](../2-features/08-always-available.md) even when the publisher is offline +- [Record](../2-features/09-record.md) streams to disk in fMP4 or MPEG-TS format +- [Playback](../2-features/10-playback.md) recorded streams +- [Authenticate](../2-features/06-authentication.md) users with internal, HTTP or JWT authentication +- [Forward](../2-features/11-forward.md) streams to other servers +- [Proxy](../2-features/12-proxy.md) requests to other servers +- [Control](../2-features/21-control-api.md) the server through the Control API +- [Extract metrics](../2-features/22-metrics.md) from the server in a Prometheus-compatible format +- [Monitor performance](../2-features/23-performance.md) to investigate CPU and RAM consumption +- [Run hooks](../2-features/20-hooks.md) (external commands) when clients connect, disconnect, read or publish streams - Compatible with Linux, Windows and macOS, does not require any dependency or interpreter, it's a single executable Use the menu to navigate through the documentation. diff --git a/docs/1-kickoff/4-basic-usage.md b/docs/2-features/01-basic-usage.md similarity index 84% rename from docs/1-kickoff/4-basic-usage.md rename to docs/2-features/01-basic-usage.md index 05399862..c0bf2562 100644 --- a/docs/1-kickoff/4-basic-usage.md +++ b/docs/2-features/01-basic-usage.md @@ -1,6 +1,6 @@ # Basic usage -1. [Publish](../2-publish/01-overview.md) a stream. For instance, you can publish a stream from a MP4 file with _FFmpeg_: +1. [Publish](../2-features/03-publish.md) a stream. For instance, you can publish a stream from a MP4 file with _FFmpeg_: ```sh ffmpeg -re -stream_loop -1 -i file.mp4 -c copy \ @@ -14,7 +14,7 @@ ! qtdemux name=d d.video_0 ! queue ! s.sink_0 d.audio_0 ! queue ! s.sink_1 ``` -2. [Read](../3-read/01-overview.md) the stream. For instance, you can read the stream with _VLC_: +2. [Read](../2-features/04-read.md) the stream. For instance, you can read the stream with _VLC_: ```sh vlc --network-caching=50 rtsp://localhost:8554/mystream diff --git a/docs/1-kickoff/5-architecture.md b/docs/2-features/02-architecture.md similarity index 89% rename from docs/1-kickoff/5-architecture.md rename to docs/2-features/02-architecture.md index f09b942a..a86ca5dd 100644 --- a/docs/1-kickoff/5-architecture.md +++ b/docs/2-features/02-architecture.md @@ -11,7 +11,7 @@ In order to provide its features, _MediaMTX_ performs the following network inte Internally, the service revolves around these components: -- A path manager, is in charge of managing paths, performing authentication and linking clients to paths. +- A path manager, that is in charge of managing paths, performing authentication and linking clients to paths. - Paths. Each path contains a stream, which is provided by a single publisher or by a single external source, and is then broadcasted to any reader. - A recorder, in charge of storing streams to disks. diff --git a/docs/2-features/03-publish.md b/docs/2-features/03-publish.md new file mode 100644 index 00000000..5d372332 --- /dev/null +++ b/docs/2-features/03-publish.md @@ -0,0 +1,32 @@ +# Publish a stream + +Live streams can be published to the server with the following protocols and codecs: + +| protocol | variants | codecs | +| ----------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [SRT clients](../3-publish/01-srt-clients.md) | | **Video**: H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3
**Other**: KLV | +| [SRT cameras and servers](../3-publish/02-srt-cameras-and-servers.md) | | **Video**: H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3
**Other**: KLV | +| [WebRTC clients](../3-publish/03-webrtc-clients.md) | WHIP | **Video**: AV1, VP9, VP8, H265, H264
**Audio**: Opus, G722, G711 (PCMA, PCMU) | +| [WebRTC servers](../3-publish/04-webrtc-servers.md) | WHEP | **Video**: AV1, VP9, VP8, H265, H264
**Audio**: Opus, G722, G711 (PCMA, PCMU) | +| [RTSP clients](../3-publish/05-rtsp-clients.md) | UDP, TCP, RTSPS | **Video**: AV1, VP9, VP8, H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video, MJPEG
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G726, G722, G711 (PCMA, PCMU), LPCM
**Other**: KLV, MPEG-TS, any RTP-compatible codec | +| [RTSP cameras and servers](../3-publish/06-rtsp-cameras-and-servers.md) | UDP, UDP-Multicast, TCP, RTSPS | **Video**: AV1, VP9, VP8, H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video, MJPEG
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G726, G722, G711 (PCMA, PCMU), LPCM
**Other**: KLV, MPEG-TS, any RTP-compatible codec | +| [RTMP clients](../3-publish/07-rtmp-clients.md) | RTMP, RTMPS, Enhanced RTMP | **Video**: AV1, VP9, H265, H264
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G711 (PCMA, PCMU), LPCM | +| [RTMP cameras and servers](../3-publish/08-rtmp-cameras-and-servers.md) | RTMP, RTMPS, Enhanced RTMP | **Video**: AV1, VP9, H265, H264
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G711 (PCMA, PCMU), LPCM | +| [HLS cameras and servers](../3-publish/09-hls-cameras-and-servers.md) | Low-Latency HLS, MP4-based HLS, legacy HLS | **Video**: AV1, VP9, H265, H264
**Audio**: Opus, MPEG-4 Audio (AAC) | +| [MPEG-TS](../3-publish/10-mpeg-ts.md) | MPEG-TS over UDP, MPEG-TS over Unix socket | **Video**: H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3
**Other**: KLV | +| [RTP](../3-publish/11-rtp.md) | RTP over UDP | **Video**: AV1, VP9, VP8, H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video, M-JPEG
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G726, G722, G711 (PCMA, PCMU), LPCM
**Other**: KLV, MPEG-TS, any RTP-compatible codec | + +We provide instructions for publishing with the following devices: + +- [Raspberry Pi Cameras](../3-publish/12-raspberry-pi-cameras.md) +- [Generic webcams](../3-publish/13-generic-webcams.md) + +We provide instructions for publishing with the following software: + +- [FFmpeg](../3-publish/14-ffmpeg.md) +- [GStreamer](../3-publish/15-gstreamer.md) +- [OBS Studio](../3-publish/16-obs-studio.md) +- [Python and OpenCV](../3-publish/17-python-opencv.md) +- [Golang](../3-publish/18-golang.md) +- [Unity](../3-publish/19-unity.md) +- [Web browsers](../3-publish/20-web-browsers.md) diff --git a/docs/2-features/04-read.md b/docs/2-features/04-read.md new file mode 100644 index 00000000..52371f30 --- /dev/null +++ b/docs/2-features/04-read.md @@ -0,0 +1,22 @@ +# Read a stream + +Live streams can be read from the server with the following protocols and codecs: + +| protocol | variants | codecs | +| ---------------------------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [SRT clients](../4-read/01-srt.md) | | **Video**: H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3
**Other**: KLV | +| [WebRTC clients](../4-read/02-webrtc.md) | WHEP | **Video**: AV1, VP9, VP8, H265, H264
**Audio**: Opus, G722, G711 (PCMA, PCMU)
**Other**: KLV | +| [RTSP clients](../4-read/03-rtsp.md) | UDP, UDP-Multicast, TCP, RTSPS | **Video**: AV1, VP9, VP8, H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video, M-JPEG
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G726, G722, G711 (PCMA, PCMU), LPCM
**Other**: KLV, MPEG-TS, any RTP-compatible codec | +| [RTMP clients](../4-read/04-rtmp.md) | RTMP, RTMPS, Enhanced RTMP | **Video**: AV1, VP9, H265, H264
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G711 (PCMA, PCMU), LPCM | +| [HLS](../4-read/05-hls.md) | Low-Latency HLS, MP4-based HLS, legacy HLS | **Video**: AV1, VP9, H265, H264
**Audio**: Opus, MPEG-4 Audio (AAC) | + +We provide instructions for reading with the following software: + +- [FFmpeg](../4-read/06-ffmpeg.md) +- [GStreamer](../4-read/07-gstreamer.md) +- [VLC](../4-read/08-vlc.md) +- [OBS Studio](../4-read/09-obs-studio.md) +- [Python and OpenCV](../4-read/10-python-opencv.md) +- [Golang](../4-read/11-golang.md) +- [Unity](../4-read/12-unity.md) +- [Web browsers](../4-read/13-web-browsers.md) diff --git a/docs/4-other/01-configuration.md b/docs/2-features/05-configuration.md similarity index 98% rename from docs/4-other/01-configuration.md rename to docs/2-features/05-configuration.md index 019eccfa..aa84ef19 100644 --- a/docs/4-other/01-configuration.md +++ b/docs/2-features/05-configuration.md @@ -47,7 +47,7 @@ There are several ways to change configuration parameters: docker run --rm -it --network=host -e MTX_PATHS_TEST_SOURCE=rtsp://myurl bluenviron/mediamtx:1 ``` -3. Use the [Control API](17-control-api.md). +3. Use the [Control API](21-control-api.md). ## Encrypt the configuration diff --git a/docs/4-other/02-authentication.md b/docs/2-features/06-authentication.md similarity index 99% rename from docs/4-other/02-authentication.md rename to docs/2-features/06-authentication.md index e09e5e69..8570f214 100644 --- a/docs/4-other/02-authentication.md +++ b/docs/2-features/06-authentication.md @@ -297,7 +297,7 @@ Username and password can be passed through the `Authorization: Basic` HTTP head Authorization: Basic base64(user:pass) ``` -When using a web browser, a dialog is first shown to users, asking for credentials, and then the header is automatically inserted into every request. If you need to automatically fill credentials from a parent web page, read [Embed streams in a website](13-embed-streams-in-a-website.md). +When using a web browser, a dialog is first shown to users, asking for credentials, and then the header is automatically inserted into every request. If you need to automatically fill credentials from a parent web page, read [Embed streams in a website](17-embed-streams-in-a-website.md). If the `Authorization: Basic` header cannot be used (for instance, in software like OBS Studio, which only allows to provide a "Bearer Token"), credentials can be passed through the `Authorization: Bearer` header (i.e. the "Bearer Token" in OBS), where the value is the concatenation of username and password, separated by a colon: @@ -349,4 +349,4 @@ 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. -In web browsers, if you need to automatically fill credentials from a parent web page, read [Embed streams in a website](13-embed-streams-in-a-website.md). +In web browsers, if you need to automatically fill credentials from a parent web page, read [Embed streams in a website](17-embed-streams-in-a-website.md). diff --git a/docs/4-other/03-remuxing-reencoding-compression.md b/docs/2-features/07-remuxing-reencoding-compression.md similarity index 100% rename from docs/4-other/03-remuxing-reencoding-compression.md rename to docs/2-features/07-remuxing-reencoding-compression.md diff --git a/docs/4-other/04-always-available.md b/docs/2-features/08-always-available.md similarity index 100% rename from docs/4-other/04-always-available.md rename to docs/2-features/08-always-available.md diff --git a/docs/4-other/05-record.md b/docs/2-features/09-record.md similarity index 100% rename from docs/4-other/05-record.md rename to docs/2-features/09-record.md diff --git a/docs/4-other/06-playback.md b/docs/2-features/10-playback.md similarity index 100% rename from docs/4-other/06-playback.md rename to docs/2-features/10-playback.md diff --git a/docs/4-other/07-forward.md b/docs/2-features/11-forward.md similarity index 100% rename from docs/4-other/07-forward.md rename to docs/2-features/11-forward.md diff --git a/docs/4-other/08-proxy.md b/docs/2-features/12-proxy.md similarity index 100% rename from docs/4-other/08-proxy.md rename to docs/2-features/12-proxy.md diff --git a/docs/4-other/09-extract-snapshots.md b/docs/2-features/13-extract-snapshots.md similarity index 100% rename from docs/4-other/09-extract-snapshots.md rename to docs/2-features/13-extract-snapshots.md diff --git a/docs/4-other/10-on-demand-publishing.md b/docs/2-features/14-on-demand-publishing.md similarity index 100% rename from docs/4-other/10-on-demand-publishing.md rename to docs/2-features/14-on-demand-publishing.md diff --git a/docs/4-other/11-absolute-timestamps.md b/docs/2-features/15-absolute-timestamps.md similarity index 100% rename from docs/4-other/11-absolute-timestamps.md rename to docs/2-features/15-absolute-timestamps.md diff --git a/docs/4-other/12-expose-the-server-in-a-subfolder.md b/docs/2-features/16-expose-the-server-in-a-subfolder.md similarity index 100% rename from docs/4-other/12-expose-the-server-in-a-subfolder.md rename to docs/2-features/16-expose-the-server-in-a-subfolder.md diff --git a/docs/4-other/13-embed-streams-in-a-website.md b/docs/2-features/17-embed-streams-in-a-website.md similarity index 99% rename from docs/4-other/13-embed-streams-in-a-website.md rename to docs/2-features/17-embed-streams-in-a-website.md index 36dab240..88b18b83 100644 --- a/docs/4-other/13-embed-streams-in-a-website.md +++ b/docs/2-features/17-embed-streams-in-a-website.md @@ -1,6 +1,6 @@ # Embed streams in a website -Live streams can be embedded into an external website by using the WebRTC or HLS protocol. Before embedding, check that the stream is ready and can be accessed with intended protocol by using URLs mentioned in [Read a stream](../3-read/01-overview.md). +Live streams can be embedded into an external website by using the WebRTC or HLS protocol. Before embedding, check that the stream is ready and can be accessed with intended protocol by using URLs mentioned in [Read a stream](../2-features/04-read.md). ## WebRTC in iframe diff --git a/docs/4-other/14-start-on-boot.md b/docs/2-features/18-start-on-boot.md similarity index 100% rename from docs/4-other/14-start-on-boot.md rename to docs/2-features/18-start-on-boot.md diff --git a/docs/4-other/15-logging.md b/docs/2-features/19-logging.md similarity index 97% rename from docs/4-other/15-logging.md rename to docs/2-features/19-logging.md index 5fd30fdc..9db110c5 100644 --- a/docs/4-other/15-logging.md +++ b/docs/2-features/19-logging.md @@ -37,7 +37,7 @@ Log entries can be queried by using: journalctl SYSLOG_IDENTIFIER=mediamtx ``` -If _MediaMTX_ is also running as a [system service](14-start-on-boot.md), log entries can be queried by using: +If _MediaMTX_ is also running as a [system service](18-start-on-boot.md), log entries can be queried by using: ```sh journalctl -u mediamtx diff --git a/docs/4-other/16-hooks.md b/docs/2-features/20-hooks.md similarity index 100% rename from docs/4-other/16-hooks.md rename to docs/2-features/20-hooks.md diff --git a/docs/4-other/17-control-api.md b/docs/2-features/21-control-api.md similarity index 93% rename from docs/4-other/17-control-api.md rename to docs/2-features/21-control-api.md index 56715f1c..ccf08b79 100644 --- a/docs/4-other/17-control-api.md +++ b/docs/2-features/21-control-api.md @@ -14,4 +14,4 @@ curl http://127.0.0.1:9997/v3/paths/list The control API is documented in the [Control API Reference page](../5-references/2-control-api.md) and in the [OpenAPI / Swagger file](https://github.com/bluenviron/mediamtx/blob/{version_tag}/api/openapi.yaml). -Be aware that by default the Control API is accessible by localhost only; to increase visibility or enforce authentication, check [Authentication](02-authentication.md). +Be aware that by default the Control API is accessible by localhost only; to increase visibility or enforce authentication, check [Authentication](06-authentication.md). diff --git a/docs/4-other/18-metrics.md b/docs/2-features/22-metrics.md similarity index 100% rename from docs/4-other/18-metrics.md rename to docs/2-features/22-metrics.md diff --git a/docs/4-other/19-performance.md b/docs/2-features/23-performance.md similarity index 100% rename from docs/4-other/19-performance.md rename to docs/2-features/23-performance.md diff --git a/docs/4-other/20-srt-specific-features.md b/docs/2-features/24-srt-specific-features.md similarity index 88% rename from docs/4-other/20-srt-specific-features.md rename to docs/2-features/24-srt-specific-features.md index 27fa3ee6..db5badd6 100644 --- a/docs/4-other/20-srt-specific-features.md +++ b/docs/2-features/24-srt-specific-features.md @@ -1,6 +1,6 @@ # SRT-specific features -SRT is a protocol that can be used for publishing and reading streams. Regarding specific tasks, check out [Publish](../2-publish/02-srt-clients.md) and [Read](../3-read/02-srt.md). Features in this page are shared among both tasks. +SRT is a protocol that can be used for publishing and reading streams. Regarding specific tasks, check out [Publish](../3-publish/01-srt-clients.md) and [Read](../4-read/01-srt.md). Features in this page are shared among both tasks. ## Standard stream ID syntax diff --git a/docs/4-other/21-webrtc-specific-features.md b/docs/2-features/25-webrtc-specific-features.md similarity index 96% rename from docs/4-other/21-webrtc-specific-features.md rename to docs/2-features/25-webrtc-specific-features.md index 384fb26b..af85e0fd 100644 --- a/docs/4-other/21-webrtc-specific-features.md +++ b/docs/2-features/25-webrtc-specific-features.md @@ -1,10 +1,10 @@ # WebRTC-specific features -WebRTC is a protocol that can be used for publishing and reading streams. Regarding specific tasks, check out [Publish](../2-publish/04-webrtc-clients.md) and [Read](../3-read/03-webrtc.md). Features in this page are shared among both tasks. +WebRTC is a protocol that can be used for publishing and reading streams. Regarding specific tasks, check out [Publish](../3-publish/03-webrtc-clients.md) and [Read](../4-read/02-webrtc.md). Features in this page are shared among both tasks. ## Codec support in browsers -WebRTC can be used to publish and read streams encoded with a wide variety of video and audio codecs, that are listed in [Publish a stream](../2-publish/01-overview.md) and [Read a stream](../3-read/01-overview.md), but not every browser can publish and read streams with every codec due to internal limitations that cannot be overcome by this or any other server. +WebRTC can be used to publish and read streams encoded with a wide variety of video and audio codecs, that are listed in [Publish a stream](../2-features/03-publish.md) and [Read a stream](../2-features/04-read.md), but not every browser can publish and read streams with every codec due to internal limitations that cannot be overcome by this or any other server. You can check what codecs your browser supports by [using this tool](https://jsfiddle.net/v24s8q1f/). diff --git a/docs/4-other/22-rtsp-specific-features.md b/docs/2-features/26-rtsp-specific-features.md similarity index 95% rename from docs/4-other/22-rtsp-specific-features.md rename to docs/2-features/26-rtsp-specific-features.md index 79273c95..76c22dc9 100644 --- a/docs/4-other/22-rtsp-specific-features.md +++ b/docs/2-features/26-rtsp-specific-features.md @@ -1,6 +1,6 @@ # RTSP-specific features -RTSP is a protocol that can be used for publishing and reading streams. Regarding specific tasks, check out [Publish](../2-publish/06-rtsp-clients.md) and [Read](../3-read/04-rtsp.md). Features in this page are shared among both tasks. +RTSP is a protocol that can be used for publishing and reading streams. Regarding specific tasks, check out [Publish](../3-publish/05-rtsp-clients.md) and [Read](../4-read/03-rtsp.md). Features in this page are shared among both tasks. ## Transport protocols @@ -107,4 +107,4 @@ There are also the `rtsps+http`, `rtsp+ws`, `rtsps+ws` schemas to handle any var ## MPEG-TS inside RTSP -read [MPEG-TS inside RTSP](../2-publish/06-rtsp-clients.md#mpeg-ts-inside-rtsp) in the "Publish with RTSP clients" page. +read [MPEG-TS inside RTSP](../3-publish/05-rtsp-clients.md#mpeg-ts-inside-rtsp) in the "Publish with RTSP clients" page. diff --git a/docs/4-other/23-rtmp-specific-features.md b/docs/2-features/27-rtmp-specific-features.md similarity index 90% rename from docs/4-other/23-rtmp-specific-features.md rename to docs/2-features/27-rtmp-specific-features.md index c0157227..49aa19b6 100644 --- a/docs/4-other/23-rtmp-specific-features.md +++ b/docs/2-features/27-rtmp-specific-features.md @@ -1,6 +1,6 @@ # RTMP-specific features -RTMP is a protocol that can be used for publishing and reading streams. Regarding specific tasks, check out [Publish](../2-publish/08-rtmp-clients.md) and [Read](../3-read/05-rtmp.md). Features in this page are shared among both tasks. +RTMP is a protocol that can be used for publishing and reading streams. Regarding specific tasks, check out [Publish](../3-publish/07-rtmp-clients.md) and [Read](../4-read/04-rtmp.md). Features in this page are shared among both tasks. ## Encryption diff --git a/docs/4-other/24-decrease-packet-loss.md b/docs/2-features/28-decrease-packet-loss.md similarity index 100% rename from docs/4-other/24-decrease-packet-loss.md rename to docs/2-features/28-decrease-packet-loss.md diff --git a/docs/1-kickoff/architecture.svg b/docs/2-features/architecture.svg similarity index 100% rename from docs/1-kickoff/architecture.svg rename to docs/2-features/architecture.svg diff --git a/docs/2-features/index.md b/docs/2-features/index.md new file mode 100644 index 00000000..ead02231 --- /dev/null +++ b/docs/2-features/index.md @@ -0,0 +1 @@ +# Features diff --git a/docs/2-publish/01-overview.md b/docs/2-publish/01-overview.md deleted file mode 100644 index 1982e07b..00000000 --- a/docs/2-publish/01-overview.md +++ /dev/null @@ -1,32 +0,0 @@ -# Publish a stream - -Live streams can be published to the server with the following protocols and codecs: - -| protocol | variants | codecs | -| ---------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [SRT clients](02-srt-clients.md) | | **Video**: H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3
**Other**: KLV | -| [SRT cameras and servers](03-srt-cameras-and-servers.md) | | **Video**: H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3
**Other**: KLV | -| [WebRTC clients](04-webrtc-clients.md) | WHIP | **Video**: AV1, VP9, VP8, H265, H264
**Audio**: Opus, G722, G711 (PCMA, PCMU) | -| [WebRTC servers](05-webrtc-servers.md) | WHEP | **Video**: AV1, VP9, VP8, H265, H264
**Audio**: Opus, G722, G711 (PCMA, PCMU) | -| [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
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G726, G722, G711 (PCMA, PCMU), LPCM
**Other**: KLV, MPEG-TS, any RTP-compatible codec | -| [RTSP cameras and servers](07-rtsp-cameras-and-servers.md) | UDP, UDP-Multicast, TCP, RTSPS | **Video**: AV1, VP9, VP8, H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video, MJPEG
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G726, G722, G711 (PCMA, PCMU), LPCM
**Other**: KLV, MPEG-TS, any RTP-compatible codec | -| [RTMP clients](08-rtmp-clients.md) | RTMP, RTMPS, Enhanced RTMP | **Video**: AV1, VP9, H265, H264
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G711 (PCMA, PCMU), LPCM | -| [RTMP cameras and servers](09-rtmp-cameras-and-servers.md) | RTMP, RTMPS, Enhanced RTMP | **Video**: AV1, VP9, H265, H264
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G711 (PCMA, PCMU), LPCM | -| [HLS cameras and servers](10-hls-cameras-and-servers.md) | Low-Latency HLS, MP4-based HLS, legacy HLS | **Video**: AV1, VP9, H265, H264
**Audio**: Opus, MPEG-4 Audio (AAC) | -| [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
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3
**Other**: KLV | -| [RTP](12-rtp.md) | RTP over UDP | **Video**: AV1, VP9, VP8, H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video, M-JPEG
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G726, G722, G711 (PCMA, PCMU), LPCM
**Other**: KLV, MPEG-TS, any RTP-compatible codec | - -We provide instructions for publishing with the following devices: - -- [Raspberry Pi Cameras](13-raspberry-pi-cameras.md) -- [Generic webcams](14-generic-webcams.md) - -We provide instructions for publishing with the following software: - -- [FFmpeg](15-ffmpeg.md) -- [GStreamer](16-gstreamer.md) -- [OBS Studio](17-obs-studio.md) -- [Python and OpenCV](18-python-opencv.md) -- [Golang](19-golang.md) -- [Unity](20-unity.md) -- [Web browsers](21-web-browsers.md) diff --git a/docs/2-publish/08-rtmp-clients.md b/docs/2-publish/08-rtmp-clients.md deleted file mode 100644 index f9ed3455..00000000 --- a/docs/2-publish/08-rtmp-clients.md +++ /dev/null @@ -1,11 +0,0 @@ -# RTMP clients - -RTMP is a protocol that allows to read and publish streams. It supports encryption, read [RTMP-specific features](../4-other/23-rtmp-specific-features.md). Streams can be published to the server by using the URL: - -``` -rtmp://localhost/mystream -``` - -The resulting stream will be available on path `/mystream`. - -Some clients that can publish with RTMP are [FFmpeg](15-ffmpeg.md), [GStreamer](16-gstreamer.md), [OBS Studio](17-obs-studio.md). diff --git a/docs/2-publish/02-srt-clients.md b/docs/3-publish/01-srt-clients.md similarity index 78% rename from docs/2-publish/02-srt-clients.md rename to docs/3-publish/01-srt-clients.md index d9fb46bc..d335b974 100644 --- a/docs/2-publish/02-srt-clients.md +++ b/docs/3-publish/01-srt-clients.md @@ -8,8 +8,8 @@ srt://localhost:8890?streamid=publish:mystream&pkt_size=1316 Replace `mystream` with any name you want. The resulting stream will be available on path `/mystream`. -If you need to use the standard stream ID syntax instead of the custom one in use by this server, read [Standard stream ID syntax](../4-other/20-srt-specific-features.md#standard-stream-id-syntax). +If you need to use the standard stream ID syntax instead of the custom one in use by this server, read [Standard stream ID syntax](../2-features/24-srt-specific-features.md#standard-stream-id-syntax). If you want to publish a stream by using a client in listening mode (i.e. with `mode=listener` appended to the URL), read the next section. -Some clients that can publish with SRT are [FFmpeg](15-ffmpeg.md), [GStreamer](16-gstreamer.md), [OBS Studio](17-obs-studio.md). +Some clients that can publish with SRT are [FFmpeg](14-ffmpeg.md), [GStreamer](15-gstreamer.md), [OBS Studio](16-obs-studio.md). diff --git a/docs/2-publish/03-srt-cameras-and-servers.md b/docs/3-publish/02-srt-cameras-and-servers.md similarity index 100% rename from docs/2-publish/03-srt-cameras-and-servers.md rename to docs/3-publish/02-srt-cameras-and-servers.md diff --git a/docs/2-publish/04-webrtc-clients.md b/docs/3-publish/03-webrtc-clients.md similarity index 75% rename from docs/2-publish/04-webrtc-clients.md rename to docs/3-publish/03-webrtc-clients.md index 2992f240..ead7971e 100644 --- a/docs/2-publish/04-webrtc-clients.md +++ b/docs/3-publish/03-webrtc-clients.md @@ -14,8 +14,8 @@ WHIP is a WebRTC extension that allows to publish streams by using a URL, withou http://localhost:8889/mystream/whip ``` -Be aware that not all browsers can read any codec, check [Codec support in browsers](../4-other/21-webrtc-specific-features.md#codec-support-in-browsers). +Be aware that not all browsers can read any codec, check [Codec support in browsers](../2-features/25-webrtc-specific-features.md#codec-support-in-browsers). -Depending on the network it might be difficult to establish a connection between server and clients, read [Solving WebRTC connectivity issues](../4-other/21-webrtc-specific-features.md#solving-webrtc-connectivity-issues). +Depending on the network it might be difficult to establish a connection between server and clients, read [Solving WebRTC connectivity issues](../2-features/25-webrtc-specific-features.md#solving-webrtc-connectivity-issues). -Some clients that can publish with WebRTC and WHIP are [FFmpeg](15-ffmpeg.md), [GStreamer](16-gstreamer.md), [OBS Studio](17-obs-studio.md), [Unity](20-unity.md) and [Web browsers](21-web-browsers.md). +Some clients that can publish with WebRTC and WHIP are [FFmpeg](14-ffmpeg.md), [GStreamer](15-gstreamer.md), [OBS Studio](16-obs-studio.md), [Unity](19-unity.md) and [Web browsers](20-web-browsers.md). diff --git a/docs/2-publish/05-webrtc-servers.md b/docs/3-publish/04-webrtc-servers.md similarity index 91% rename from docs/2-publish/05-webrtc-servers.md rename to docs/3-publish/04-webrtc-servers.md index a90dec91..f0cd447b 100644 --- a/docs/2-publish/05-webrtc-servers.md +++ b/docs/3-publish/04-webrtc-servers.md @@ -9,7 +9,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](../3-read/03-webrtc.md): +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](../4-read/02-webrtc.md): ```yml paths: diff --git a/docs/2-publish/06-rtsp-clients.md b/docs/3-publish/05-rtsp-clients.md similarity index 82% rename from docs/2-publish/06-rtsp-clients.md rename to docs/3-publish/05-rtsp-clients.md index e2ddcf4e..cd128fcf 100644 --- a/docs/2-publish/06-rtsp-clients.md +++ b/docs/3-publish/05-rtsp-clients.md @@ -8,9 +8,9 @@ rtsp://localhost:8554/mystream The resulting stream will be available on path `/mystream`. -Some clients that can publish with RTSP are [FFmpeg](15-ffmpeg.md), [GStreamer](16-gstreamer.md), [OBS Studio](17-obs-studio.md), [Python and OpenCV](18-python-opencv.md). +Some clients that can publish with RTSP are [FFmpeg](14-ffmpeg.md), [GStreamer](15-gstreamer.md), [OBS Studio](16-obs-studio.md), [Python and OpenCV](17-python-opencv.md). -Advanced RTSP features and settings are described in [RTSP-specific features](../4-other/22-rtsp-specific-features.md). +Advanced RTSP features and settings are described in [RTSP-specific features](../2-features/26-rtsp-specific-features.md). ## MPEG-TS inside RTSP diff --git a/docs/2-publish/07-rtsp-cameras-and-servers.md b/docs/3-publish/06-rtsp-cameras-and-servers.md similarity index 97% rename from docs/2-publish/07-rtsp-cameras-and-servers.md rename to docs/3-publish/06-rtsp-cameras-and-servers.md index 641a7fd7..ba6a1d69 100644 --- a/docs/2-publish/07-rtsp-cameras-and-servers.md +++ b/docs/3-publish/06-rtsp-cameras-and-servers.md @@ -44,4 +44,4 @@ paths: All available parameters are listed in the [configuration file](../5-references/1-configuration-file.md). -Advanced RTSP features and settings are described in [RTSP-specific features](../4-other/22-rtsp-specific-features.md). +Advanced RTSP features and settings are described in [RTSP-specific features](../2-features/26-rtsp-specific-features.md). diff --git a/docs/3-publish/07-rtmp-clients.md b/docs/3-publish/07-rtmp-clients.md new file mode 100644 index 00000000..c0cf18f4 --- /dev/null +++ b/docs/3-publish/07-rtmp-clients.md @@ -0,0 +1,11 @@ +# RTMP clients + +RTMP is a protocol that allows to read and publish streams. It supports encryption, read [RTMP-specific features](../2-features/27-rtmp-specific-features.md). Streams can be published to the server by using the URL: + +``` +rtmp://localhost/mystream +``` + +The resulting stream will be available on path `/mystream`. + +Some clients that can publish with RTMP are [FFmpeg](14-ffmpeg.md), [GStreamer](15-gstreamer.md), [OBS Studio](16-obs-studio.md). diff --git a/docs/2-publish/09-rtmp-cameras-and-servers.md b/docs/3-publish/08-rtmp-cameras-and-servers.md similarity index 100% rename from docs/2-publish/09-rtmp-cameras-and-servers.md rename to docs/3-publish/08-rtmp-cameras-and-servers.md diff --git a/docs/2-publish/10-hls-cameras-and-servers.md b/docs/3-publish/09-hls-cameras-and-servers.md similarity index 100% rename from docs/2-publish/10-hls-cameras-and-servers.md rename to docs/3-publish/09-hls-cameras-and-servers.md diff --git a/docs/2-publish/11-mpeg-ts.md b/docs/3-publish/10-mpeg-ts.md similarity index 95% rename from docs/2-publish/11-mpeg-ts.md rename to docs/3-publish/10-mpeg-ts.md index d62bbeb1..6ec77a65 100644 --- a/docs/2-publish/11-mpeg-ts.md +++ b/docs/3-publish/10-mpeg-ts.md @@ -28,7 +28,7 @@ paths: source: udp+mpegts://0.0.0.0:1234?source=192.168.3.5 ``` -Some clients that can publish with UDP and MPEG-TS are [FFmpeg](15-ffmpeg.md) and [GStreamer](16-gstreamer.md). +Some clients that can publish with UDP and MPEG-TS are [FFmpeg](14-ffmpeg.md) and [GStreamer](15-gstreamer.md). Unix sockets are more efficient than UDP packets and can be used as transport by specifying the `unix+mpegts` scheme: diff --git a/docs/2-publish/12-rtp.md b/docs/3-publish/11-rtp.md similarity index 93% rename from docs/2-publish/12-rtp.md rename to docs/3-publish/11-rtp.md index cb3c2a4c..f14bb7b9 100644 --- a/docs/2-publish/12-rtp.md +++ b/docs/3-publish/11-rtp.md @@ -21,4 +21,4 @@ paths: `rtpSDP` must contain a valid SDP, that is a description of the RTP session. -Some clients that can publish with UDP and MPEG-TS are [FFmpeg](15-ffmpeg.md) and [GStreamer](16-gstreamer.md). +Some clients that can publish with UDP and MPEG-TS are [FFmpeg](14-ffmpeg.md) and [GStreamer](15-gstreamer.md). diff --git a/docs/2-publish/13-raspberry-pi-cameras.md b/docs/3-publish/12-raspberry-pi-cameras.md similarity index 100% rename from docs/2-publish/13-raspberry-pi-cameras.md rename to docs/3-publish/12-raspberry-pi-cameras.md diff --git a/docs/2-publish/14-generic-webcams.md b/docs/3-publish/13-generic-webcams.md similarity index 100% rename from docs/2-publish/14-generic-webcams.md rename to docs/3-publish/13-generic-webcams.md diff --git a/docs/2-publish/15-ffmpeg.md b/docs/3-publish/14-ffmpeg.md similarity index 96% rename from docs/2-publish/15-ffmpeg.md rename to docs/3-publish/14-ffmpeg.md index 0ceefc4e..ba712311 100644 --- a/docs/2-publish/15-ffmpeg.md +++ b/docs/3-publish/14-ffmpeg.md @@ -36,7 +36,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` (read [RTP](12-rtp.md)). Then: +In _MediaMTX_ configuration, add a path with `source: udp+rtp://238.0.0.1:1234` and a valid `rtpSDP` (read [RTP](11-rtp.md)). Then: ```sh ffmpeg -re -f lavfi -i testsrc=size=1280x720:rate=30 \ diff --git a/docs/2-publish/16-gstreamer.md b/docs/3-publish/15-gstreamer.md similarity index 89% rename from docs/2-publish/16-gstreamer.md rename to docs/3-publish/15-gstreamer.md index ee7eb205..793a3527 100644 --- a/docs/2-publish/16-gstreamer.md +++ b/docs/3-publish/15-gstreamer.md @@ -20,7 +20,7 @@ d.video_0 ! rtspclientsink location=rtsp://localhost:8554/mystream The resulting stream will be available on path `/mystream`. -For advanced options, read [RTSP-specific features](../4-other/22-rtsp-specific-features.md). +For advanced options, read [RTSP-specific features](../2-features/26-rtsp-specific-features.md). ## GStreamer and RTMP @@ -38,7 +38,7 @@ videotestsrc ! video/x-raw,width=1280,height=720,format=I420 ! x264enc speed-pre audiotestsrc ! audioconvert ! avenc_aac ! mux. ``` -For advanced options, read [RTSP-specific features](../4-other/22-rtsp-specific-features.md). +For advanced options, read [RTSP-specific features](../2-features/26-rtsp-specific-features.md). ## GStreamer and WebRTC diff --git a/docs/2-publish/17-obs-studio.md b/docs/3-publish/16-obs-studio.md similarity index 99% rename from docs/2-publish/17-obs-studio.md rename to docs/3-publish/16-obs-studio.md index 1a778b1e..5d76f955 100644 --- a/docs/2-publish/17-obs-studio.md +++ b/docs/3-publish/16-obs-studio.md @@ -177,7 +177,7 @@ OBS Studio requires _MediaMTX_ to use a TLS certificate signed by a public certi ### Standard -Recent versions of OBS Studio can also publish streams to the server with the [WebRTC / WHIP protocol](04-webrtc-clients.md) Use the following parameters: +Recent versions of OBS Studio can also publish streams to the server with the [WebRTC / WHIP protocol](03-webrtc-clients.md) Use the following parameters: - Service: `WHIP` - Server: `http://localhost:8889/mystream/whip` diff --git a/docs/2-publish/18-python-opencv.md b/docs/3-publish/17-python-opencv.md similarity index 96% rename from docs/2-publish/18-python-opencv.md rename to docs/3-publish/17-python-opencv.md index bb5f2b5e..cb7dbfc8 100644 --- a/docs/2-publish/18-python-opencv.md +++ b/docs/3-publish/17-python-opencv.md @@ -1,6 +1,6 @@ # Python and OpenCV -Python-based software can publish streams to the server with the OpenCV library and its GStreamer plugin, acting as a [RTSP client](06-rtsp-clients.md). OpenCV must be compiled with support for GStreamer, by following this procedure: +Python-based software can publish streams to the server with the OpenCV library and its GStreamer plugin, acting as a [RTSP client](05-rtsp-clients.md). OpenCV must be compiled with support for GStreamer, by following this procedure: ```sh sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-ugly gstreamer1.0-rtsp python3-dev python3-numpy diff --git a/docs/2-publish/19-golang.md b/docs/3-publish/18-golang.md similarity index 100% rename from docs/2-publish/19-golang.md rename to docs/3-publish/18-golang.md diff --git a/docs/2-publish/20-unity.md b/docs/3-publish/19-unity.md similarity index 98% rename from docs/2-publish/20-unity.md rename to docs/3-publish/19-unity.md index 02c36571..c730b370 100644 --- a/docs/2-publish/20-unity.md +++ b/docs/3-publish/19-unity.md @@ -1,6 +1,6 @@ # Unity -Software written with the Unity Engine can publish a stream to the server by using the [WebRTC protocol](04-webrtc-clients.md). +Software written with the Unity Engine can publish a stream to the server by using the [WebRTC protocol](03-webrtc-clients.md). Create a new Unity project or open an existing one. diff --git a/docs/2-publish/21-web-browsers.md b/docs/3-publish/20-web-browsers.md similarity index 92% rename from docs/2-publish/21-web-browsers.md rename to docs/3-publish/20-web-browsers.md index 272e3ad7..a33a5d59 100644 --- a/docs/2-publish/21-web-browsers.md +++ b/docs/3-publish/20-web-browsers.md @@ -1,6 +1,6 @@ # Web browsers -Web browsers can publish a stream to the server by using the [WebRTC protocol](04-webrtc-clients.md). Start the server and open the web page: +Web browsers can publish a stream to the server by using the [WebRTC protocol](03-webrtc-clients.md). Start the server and open the web page: ``` http://localhost:8889/mystream/publish diff --git a/docs/2-publish/index.md b/docs/3-publish/index.md similarity index 100% rename from docs/2-publish/index.md rename to docs/3-publish/index.md diff --git a/docs/3-read/01-overview.md b/docs/3-read/01-overview.md deleted file mode 100644 index 30563fce..00000000 --- a/docs/3-read/01-overview.md +++ /dev/null @@ -1,22 +0,0 @@ -# Read a stream - -Live streams can be read from the server with the following protocols and codecs: - -| protocol | variants | codecs | -| ------------------------------ | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [SRT clients](02-srt.md) | | **Video**: H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3
**Other**: KLV | -| [WebRTC clients](03-webrtc.md) | WHEP | **Video**: AV1, VP9, VP8, H265, H264
**Audio**: Opus, G722, G711 (PCMA, PCMU)
**Other**: KLV | -| [RTSP clients](04-rtsp.md) | UDP, UDP-Multicast, TCP, RTSPS | **Video**: AV1, VP9, VP8, H265, H264, MPEG-4 Video (H263, Xvid), MPEG-1/2 Video, M-JPEG
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G726, G722, G711 (PCMA, PCMU), LPCM
**Other**: KLV, MPEG-TS, any RTP-compatible codec | -| [RTMP clients](05-rtmp.md) | RTMP, RTMPS, Enhanced RTMP | **Video**: AV1, VP9, H265, H264
**Audio**: Opus, MPEG-4 Audio (AAC), MPEG-1/2 Audio (MP3), AC-3, G711 (PCMA, PCMU), LPCM | -| [HLS](06-hls.md) | Low-Latency HLS, MP4-based HLS, legacy HLS | **Video**: AV1, VP9, H265, H264
**Audio**: Opus, MPEG-4 Audio (AAC) | - -We provide instructions for reading with the following software: - -- [FFmpeg](07-ffmpeg.md) -- [GStreamer](08-gstreamer.md) -- [VLC](09-vlc.md) -- [OBS Studio](10-obs-studio.md) -- [Python and OpenCV](11-python-opencv.md) -- [Golang](12-golang.md) -- [Unity](13-unity.md) -- [Web browsers](14-web-browsers.md) diff --git a/docs/3-read/04-rtsp.md b/docs/3-read/04-rtsp.md deleted file mode 100644 index c1309019..00000000 --- a/docs/3-read/04-rtsp.md +++ /dev/null @@ -1,9 +0,0 @@ -# RTSP clients - -RTSP is a protocol that allows to publish and read streams. It supports several underlying transport protocols and encryption (read [RTSP-specific features](../4-other/22-rtsp-specific-features.md)). In order to read a stream with the RTSP protocol, use this URL: - -``` -rtsp://localhost:8554/mystream -``` - -Some clients that can read with RTSP are [FFmpeg](07-ffmpeg.md), [GStreamer](08-gstreamer.md) and [VLC](09-vlc.md). diff --git a/docs/3-read/05-rtmp.md b/docs/3-read/05-rtmp.md deleted file mode 100644 index 6bff1dad..00000000 --- a/docs/3-read/05-rtmp.md +++ /dev/null @@ -1,9 +0,0 @@ -# RTMP clients - -RTMP is a protocol that allows to read and publish streams. It supports encryption, read [RTMP-specific features](../4-other/23-rtmp-specific-features.md). Streams can be read from the server by using the URL: - -``` -rtmp://localhost/mystream -``` - -Some clients that can read with RTMP are [FFmpeg](07-ffmpeg.md), [GStreamer](08-gstreamer.md) and [VLC](09-vlc.md). diff --git a/docs/4-other/index.md b/docs/4-other/index.md deleted file mode 100644 index 3d6b41be..00000000 --- a/docs/4-other/index.md +++ /dev/null @@ -1 +0,0 @@ -# Other features diff --git a/docs/3-read/02-srt.md b/docs/4-read/01-srt.md similarity index 73% rename from docs/3-read/02-srt.md rename to docs/4-read/01-srt.md index 2b972234..9c3b5982 100644 --- a/docs/3-read/02-srt.md +++ b/docs/4-read/01-srt.md @@ -8,6 +8,6 @@ srt://localhost:8890?streamid=read:mystream Replace `mystream` with the path name. -If you need to use the standard stream ID syntax instead of the custom one in use by this server, read [Standard stream ID syntax](../4-other/20-srt-specific-features.md#standard-stream-id-syntax). +If you need to use the standard stream ID syntax instead of the custom one in use by this server, read [Standard stream ID syntax](../2-features/24-srt-specific-features.md#standard-stream-id-syntax). -Some clients that can read with SRT are [FFmpeg](07-ffmpeg.md), [GStreamer](08-gstreamer.md) and [VLC](09-vlc.md). +Some clients that can read with SRT are [FFmpeg](06-ffmpeg.md), [GStreamer](07-gstreamer.md) and [VLC](08-vlc.md). diff --git a/docs/3-read/03-webrtc.md b/docs/4-read/02-webrtc.md similarity index 69% rename from docs/3-read/03-webrtc.md rename to docs/4-read/02-webrtc.md index 4d292b47..a0e64bd6 100644 --- a/docs/3-read/03-webrtc.md +++ b/docs/4-read/02-webrtc.md @@ -12,8 +12,8 @@ WHEP is a WebRTC extension that allows to read streams by using a URL, without p http://localhost:8889/mystream/whep ``` -Be aware that not all browsers can read any codec, check [Codec support in browsers](../4-other/21-webrtc-specific-features.md#codec-support-in-browsers). +Be aware that not all browsers can read any codec, check [Codec support in browsers](../2-features/25-webrtc-specific-features.md#codec-support-in-browsers). -Depending on the network it may be difficult to establish a connection between server and clients, read [Solving WebRTC connectivity issues](../4-other/21-webrtc-specific-features.md#solving-webrtc-connectivity-issues). +Depending on the network it may be difficult to establish a connection between server and clients, read [Solving WebRTC connectivity issues](../2-features/25-webrtc-specific-features.md#solving-webrtc-connectivity-issues). -Some clients that can read with WebRTC and WHEP are [FFmpeg](07-ffmpeg.md), [GStreamer](08-gstreamer.md), [Unity](13-unity.md) and [web browsers](14-web-browsers.md). +Some clients that can read with WebRTC and WHEP are [FFmpeg](06-ffmpeg.md), [GStreamer](07-gstreamer.md), [Unity](12-unity.md) and [web browsers](13-web-browsers.md). diff --git a/docs/4-read/03-rtsp.md b/docs/4-read/03-rtsp.md new file mode 100644 index 00000000..42978afb --- /dev/null +++ b/docs/4-read/03-rtsp.md @@ -0,0 +1,9 @@ +# RTSP clients + +RTSP is a protocol that allows to publish and read streams. It supports several underlying transport protocols and encryption (read [RTSP-specific features](../2-features/26-rtsp-specific-features.md)). In order to read a stream with the RTSP protocol, use this URL: + +``` +rtsp://localhost:8554/mystream +``` + +Some clients that can read with RTSP are [FFmpeg](06-ffmpeg.md), [GStreamer](07-gstreamer.md) and [VLC](08-vlc.md). diff --git a/docs/4-read/04-rtmp.md b/docs/4-read/04-rtmp.md new file mode 100644 index 00000000..67cce64c --- /dev/null +++ b/docs/4-read/04-rtmp.md @@ -0,0 +1,9 @@ +# RTMP clients + +RTMP is a protocol that allows to read and publish streams. It supports encryption, read [RTMP-specific features](../2-features/27-rtmp-specific-features.md). Streams can be read from the server by using the URL: + +``` +rtmp://localhost/mystream +``` + +Some clients that can read with RTMP are [FFmpeg](06-ffmpeg.md), [GStreamer](07-gstreamer.md) and [VLC](08-vlc.md). diff --git a/docs/3-read/06-hls.md b/docs/4-read/05-hls.md similarity index 75% rename from docs/3-read/06-hls.md rename to docs/4-read/05-hls.md index e07a8daf..228795a4 100644 --- a/docs/3-read/06-hls.md +++ b/docs/4-read/05-hls.md @@ -12,4 +12,4 @@ and can also be accessed without using the browsers, by software that supports t http://localhost:8888/mystream/index.m3u8 ``` -Some clients that can read with HLS are [FFmpeg](07-ffmpeg.md), [GStreamer](08-gstreamer.md), [VLC](09-vlc.md) and [web browsers](14-web-browsers.md). +Some clients that can read with HLS are [FFmpeg](06-ffmpeg.md), [GStreamer](07-gstreamer.md), [VLC](08-vlc.md) and [web browsers](13-web-browsers.md). diff --git a/docs/3-read/07-ffmpeg.md b/docs/4-read/06-ffmpeg.md similarity index 100% rename from docs/3-read/07-ffmpeg.md rename to docs/4-read/06-ffmpeg.md diff --git a/docs/3-read/08-gstreamer.md b/docs/4-read/07-gstreamer.md similarity index 94% rename from docs/3-read/08-gstreamer.md rename to docs/4-read/07-gstreamer.md index 93496688..a9c8ef79 100644 --- a/docs/3-read/08-gstreamer.md +++ b/docs/4-read/07-gstreamer.md @@ -8,7 +8,7 @@ GStreamer can read a stream from the server in several ways. The recommended one gst-launch-1.0 rtspsrc location=rtsp://127.0.0.1:8554/mystream latency=0 ! decodebin ! autovideosink ``` -For advanced options, read [RTSP-specific features](../4-other/22-rtsp-specific-features.md). +For advanced options, read [RTSP-specific features](../2-features/26-rtsp-specific-features.md). ## GStreamer and WebRTC diff --git a/docs/3-read/09-vlc.md b/docs/4-read/08-vlc.md similarity index 100% rename from docs/3-read/09-vlc.md rename to docs/4-read/08-vlc.md diff --git a/docs/3-read/10-obs-studio.md b/docs/4-read/09-obs-studio.md similarity index 91% rename from docs/3-read/10-obs-studio.md rename to docs/4-read/09-obs-studio.md index 86f33bb6..9713a783 100644 --- a/docs/3-read/10-obs-studio.md +++ b/docs/4-read/09-obs-studio.md @@ -1,6 +1,6 @@ # OBS Studio -OBS Studio can read streams from the server by using the [RTSP protocol](04-rtsp.md). +OBS Studio can read streams from the server by using the [RTSP protocol](03-rtsp.md). Open OBS, click on _Add Source_, _Media source_, _OK_, uncheck _Local file_, insert in _Input_: diff --git a/docs/3-read/11-python-opencv.md b/docs/4-read/10-python-opencv.md similarity index 89% rename from docs/3-read/11-python-opencv.md rename to docs/4-read/10-python-opencv.md index e397efd3..1135eaf0 100644 --- a/docs/3-read/11-python-opencv.md +++ b/docs/4-read/10-python-opencv.md @@ -1,6 +1,6 @@ # Python and OpenCV -Python-based software can read streams from the server with the OpenCV library, acting as a [RTSP client](04-rtsp.md). +Python-based software can read streams from the server with the OpenCV library, acting as a [RTSP client](03-rtsp.md). ```python import cv2 diff --git a/docs/3-read/12-golang.md b/docs/4-read/11-golang.md similarity index 100% rename from docs/3-read/12-golang.md rename to docs/4-read/11-golang.md diff --git a/docs/3-read/13-unity.md b/docs/4-read/12-unity.md similarity index 98% rename from docs/3-read/13-unity.md rename to docs/4-read/12-unity.md index bccda7e7..41b26637 100644 --- a/docs/3-read/13-unity.md +++ b/docs/4-read/12-unity.md @@ -1,6 +1,6 @@ # Unity -Software written with the Unity Engine can read a stream from the server by using the [WebRTC protocol](03-webrtc.md). +Software written with the Unity Engine can read a stream from the server by using the [WebRTC protocol](02-webrtc.md). Create a new Unity project or open an existing one. diff --git a/docs/3-read/14-web-browsers.md b/docs/4-read/13-web-browsers.md similarity index 55% rename from docs/3-read/14-web-browsers.md rename to docs/4-read/13-web-browsers.md index 88797473..b7d5e10a 100644 --- a/docs/3-read/14-web-browsers.md +++ b/docs/4-read/13-web-browsers.md @@ -4,20 +4,20 @@ Web browsers can read a stream from the server in several ways. ## Web browsers and WebRTC -You can read a stream by using the [WebRTC protocol](03-webrtc.md) by visiting the web page: +You can read a stream by using the [WebRTC protocol](02-webrtc.md) by visiting the web page: ``` http://localhost:8889/mystream ``` -See [Embed streams in a website](../4-other/13-embed-streams-in-a-website.md) for instructions on how to embed the stream into an external website. +See [Embed streams in a website](../2-features/17-embed-streams-in-a-website.md) for instructions on how to embed the stream into an external website. ## Web browsers and HLS -Web browsers can also read a stream with the [HLS protocol](06-hls.md). Latency is higher but there are fewer problems related to connectivity between server and clients, furthermore the server load can be balanced by using a common HTTP CDN (like Cloudflare or CloudFront), and this allows to handle an unlimited amount of readers. Visit the web page: +Web browsers can also read a stream with the [HLS protocol](05-hls.md). Latency is higher but there are fewer problems related to connectivity between server and clients, furthermore the server load can be balanced by using a common HTTP CDN (like Cloudflare or CloudFront), and this allows to handle an unlimited amount of readers. Visit the web page: ``` http://localhost:8888/mystream ``` -See [Embed streams in a website](../4-other/13-embed-streams-in-a-website.md) for instructions on how to embed the stream into an external website. +See [Embed streams in a website](../2-features/17-embed-streams-in-a-website.md) for instructions on how to embed the stream into an external website. diff --git a/docs/3-read/index.md b/docs/4-read/index.md similarity index 100% rename from docs/3-read/index.md rename to docs/4-read/index.md diff --git a/docs/5-references/1-configuration-file.md b/docs/5-references/1-configuration-file.md index b6cde01d..add71d26 100644 --- a/docs/5-references/1-configuration-file.md +++ b/docs/5-references/1-configuration-file.md @@ -1,3 +1,3 @@ # Configuration file reference -This is a copy of the configuration file (`mediamtx.yml`) of the latest _MediaMTX_ release ({version_tag}), that contains all available parameters. Check the [Configuration usage page](../4-other/01-configuration.md) for instructions on how to change it. +This is a copy of the configuration file (`mediamtx.yml`) of the latest _MediaMTX_ release ({version_tag}), that contains all available parameters. Check the [Configuration usage page](../2-features/05-configuration.md) for instructions on how to change it. diff --git a/docs/5-references/2-control-api.md b/docs/5-references/2-control-api.md index c22f1356..d8b64690 100644 --- a/docs/5-references/2-control-api.md +++ b/docs/5-references/2-control-api.md @@ -1,3 +1,3 @@ # Control API reference -This is the reference of the Control API of the latest _MediaMTX_ release ({version_tag}), generated automatically from the [OpenAPI / Swagger file](https://github.com/bluenviron/mediamtx/blob/{version_tag}/api/openapi.yaml) available in the repository. Check the [Control API usage page](../4-other/17-control-api.md) for instructions on how to use the API. +This is the reference of the Control API of the latest _MediaMTX_ release ({version_tag}), generated automatically from the [OpenAPI / Swagger file](https://github.com/bluenviron/mediamtx/blob/{version_tag}/api/openapi.yaml) available in the repository. Check the [Control API usage page](../2-features/21-control-api.md) for instructions on how to use the API. diff --git a/docs/redirects.yaml b/docs/redirects.yaml index 4149b57d..dfc275db 100644 --- a/docs/redirects.yaml +++ b/docs/redirects.yaml @@ -1,4 +1,6 @@ kickoff/installation: kickoff/install +kickoff/basic-usage: features/basic-usage +kickoff/architecture: features/architecture usage/publish: publish/overview usage/read: read/overview @@ -29,9 +31,38 @@ usage/rtsp-specific-features: other/rtsp-specific-features usage/rtmp-specific-features: other/rtmp-specific-features usage/decrease-packet-loss: other/decrease-packet-loss +other/configuration: features/configuration +other/authentication: features/authentication +other/remuxing-reencoding-compression: features/remuxing-reencoding-compression +other/always-available: features/always-available +other/record: features/record +other/playback: features/playback +other/forward: features/forward +other/proxy: features/proxy +other/extract-snapshots: features/extract-snapshots +other/on-demand-publishing: features/on-demand-publishing +other/absolute-timestamps: features/absolute-timestamps +other/expose-the-server-in-a-subfolder: features/expose-the-server-in-a-subfolder +other/embed-streams-in-a-website: features/embed-streams-in-a-website +other/start-on-boot: features/start-on-boot +other/logging: features/logging +other/hooks: features/hooks +other/control-api: features/control-api +other/metrics: features/metrics +other/performance: features/performance +other/srt-specific-features: features/srt-specific-features +other/webrtc-specific-features: features/webrtc-specific-features +other/rtsp-specific-features: features/rtsp-specific-features +other/rtmp-specific-features: features/rtmp-specific-features +other/decrease-packet-loss: features/decrease-packet-loss +other/index: features/index other/compile: misc/compile other/license: misc/license other/security: misc/security other/specifications: misc/specifications other/related-projects: misc/related-projects other/route-absolute-timestamps: other/absolute-timestamps + +publish/overview: features/publish + +read/overview: features/read