Skip to content

Commit 583328c

Browse files
committed
docs: restore live ingest examples
1 parent 163a9e2 commit 583328c

8 files changed

Lines changed: 837 additions & 14 deletions

File tree

README.es.md

Lines changed: 110 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,116 @@ La CLI expone una fuente en vivo a la vez:
7171
| SRT | `--live-source srt --srt-config FILE` | MPEG-TS sobre SRT | Requiere libsrt; los metadatos CENC no están disponibles en esta ruta |
7272
| CTE LL-DASH | `--live-source dash --dash-listen HOST:PORT` | Solicitudes CMAF chunked `POST` o `PUT` | El listener requiere actualmente una plataforma tipo Unix |
7373

74-
Consulte el [inicio rápido de la CLI](docs/quickstart.md), las [recetas de FFmpeg](docs/ffmpeg.md) y la [nota técnica de SRT](docs/srt-ingest-technical-note.md) para obtener configuraciones y comandos completos.
74+
### Ingest SRT
75+
76+
El publisher es un caller SRT. Cree `/tmp/srt_callers.json` con la dirección del listener SRT y la configuración MPEG-TS/CMAF:
77+
78+
```json
79+
{
80+
"srt_callers": [
81+
{
82+
"id": "cam1",
83+
"srt": {
84+
"mode": "caller",
85+
"host": "127.0.0.1",
86+
"port": 9000,
87+
"latency_ms": 120
88+
},
89+
"mpegts": {
90+
"auto_detect_program": true,
91+
"program_number": null,
92+
"video_pid": null,
93+
"audio_pid": null
94+
},
95+
"cmaf": {
96+
"fragment_on_keyframe": true,
97+
"empty_moov": true,
98+
"default_base_moof": true,
99+
"separate_moof_per_track": true,
100+
"target_fragment_duration_ms": 1000
101+
}
102+
}
103+
]
104+
}
105+
```
106+
107+
En la primera terminal, inicie un listener SRT de FFmpeg que envíe MPEG-TS cuando se conecte el publisher:
108+
109+
```bash
110+
ffmpeg -hide_banner -stream_loop -1 -re \
111+
-i input.mp4 \
112+
-map 0:v:0 -map 0:a:0 \
113+
-c:v libx264 -preset veryfast -r 30 -g 60 -keyint_min 60 -sc_threshold 0 -bf 0 \
114+
-c:a aac -b:a 160k -ar 48000 -ac 2 \
115+
-f mpegts "srt://0.0.0.0:9000?mode=listener&pkt_size=1316"
116+
```
117+
118+
En la segunda terminal, inicie el caller SRT y el publisher MoQ:
119+
120+
```bash
121+
./build/openmoq-publisher \
122+
--live-source srt \
123+
--srt-config /tmp/srt_callers.json \
124+
--endpoint 127.0.0.1:4443 \
125+
--transport raw \
126+
--namespace live \
127+
--draft 16 \
128+
--timeout 120 \
129+
--forward 0
130+
```
131+
132+
El único modo SRT compatible es `caller`; el host y el puerto configurados deben identificar un listener SRT existente. Use `--forward 1` para una prueba inmediata del relay o mantenga `--forward 0` para esperar el interés de un suscriptor.
133+
134+
### Ingest CTE LL-DASH
135+
136+
Inicie el publisher con un listener CMAF chunked de HTTP/1.1 y un relay MoQ de destino:
137+
138+
```bash
139+
./build/openmoq-publisher \
140+
--live-source dash \
141+
--dash-listen 0.0.0.0:8080 \
142+
--dash-path /ingest \
143+
--endpoint https://127.0.0.1:4433/moq \
144+
--transport webtransport \
145+
--namespace live \
146+
--draft 18 \
147+
--publish-catalog \
148+
--forward 1 \
149+
--insecure
150+
```
151+
152+
Envíe un stream CMAF/fMP4 existente con transferencia chunked de HTTP/1.1:
153+
154+
```bash
155+
curl -X PUT \
156+
-H 'Transfer-Encoding: chunked' \
157+
-H 'Content-Type: video/iso.segment' \
158+
--data-binary @live-video.cmaf \
159+
http://127.0.0.1:8080/ingest/video
160+
```
161+
162+
FFmpeg puede crear dos representaciones de video más audio y enviarlas directamente al prefijo de ingest:
163+
164+
```bash
165+
ffmpeg -re \
166+
-f lavfi -i "testsrc2=size=1280x720:rate=25" \
167+
-f lavfi -i "anullsrc=r=48000:cl=stereo" \
168+
-filter_complex "[0:v]split=2[v1][v2];[v1]scale=1280:720[v720];[v2]scale=640:360[v360]" \
169+
-map "[v720]" -c:v:0 libx264 -b:v:0 1500k -g 50 -keyint_min 50 -sc_threshold 0 \
170+
-map "[v360]" -c:v:1 libx264 -b:v:1 500k -g 50 -keyint_min 50 -sc_threshold 0 \
171+
-map 1:a -c:a aac -b:a 128k \
172+
-f dash -seg_duration 2 -use_template 1 -use_timeline 0 \
173+
-init_seg_name 'video$RepresentationID$' \
174+
-media_seg_name 'video$RepresentationID$' \
175+
-adaptation_sets "id=0,streams=v id=1,streams=a" \
176+
-multiple_requests 1 -streaming 1 -remove_at_exit 0 \
177+
-window_size 20 -extra_window_size 20 \
178+
http://127.0.0.1:8080/ingest/
179+
```
180+
181+
Cada ruta bajo `/ingest` mantiene un estado de parser independiente y produce nombres de tracks MoQ con el prefijo de la ruta. Use `--forward 1` para enviar objetos inmediatamente o `--forward 0` para esperar el interés de un suscriptor. El listener DASH requiere actualmente una plataforma tipo Unix.
182+
183+
Consulte el [inicio rápido de la CLI](docs/quickstart.md), las [recetas de FFmpeg](docs/ffmpeg.md) y la [nota técnica de SRT](docs/srt-ingest-technical-note.md) para obtener más detalles.
75184

76185
## Publicación mediante moq5
77186

README.fr.md

Lines changed: 110 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,116 @@ La CLI expose une seule source en direct à la fois :
7171
| SRT | `--live-source srt --srt-config FILE` | MPEG-TS sur SRT | Nécessite libsrt ; les métadonnées CENC ne sont pas disponibles sur ce chemin |
7272
| CTE LL-DASH | `--live-source dash --dash-listen HOST:PORT` | Requêtes CMAF chunked `POST` ou `PUT` | Le listener nécessite actuellement une plateforme de type Unix |
7373

74-
Consultez le [démarrage rapide de la CLI](docs/quickstart.md), les [recettes FFmpeg](docs/ffmpeg.md) et la [note technique SRT](docs/srt-ingest-technical-note.md) pour les configurations et commandes complètes.
74+
### Ingest SRT
75+
76+
Le publisher est un caller SRT. Créez `/tmp/srt_callers.json` avec l'adresse du listener SRT et les paramètres MPEG-TS/CMAF :
77+
78+
```json
79+
{
80+
"srt_callers": [
81+
{
82+
"id": "cam1",
83+
"srt": {
84+
"mode": "caller",
85+
"host": "127.0.0.1",
86+
"port": 9000,
87+
"latency_ms": 120
88+
},
89+
"mpegts": {
90+
"auto_detect_program": true,
91+
"program_number": null,
92+
"video_pid": null,
93+
"audio_pid": null
94+
},
95+
"cmaf": {
96+
"fragment_on_keyframe": true,
97+
"empty_moov": true,
98+
"default_base_moof": true,
99+
"separate_moof_per_track": true,
100+
"target_fragment_duration_ms": 1000
101+
}
102+
}
103+
]
104+
}
105+
```
106+
107+
Dans le premier terminal, démarrez un listener SRT FFmpeg qui envoie du MPEG-TS après la connexion du publisher :
108+
109+
```bash
110+
ffmpeg -hide_banner -stream_loop -1 -re \
111+
-i input.mp4 \
112+
-map 0:v:0 -map 0:a:0 \
113+
-c:v libx264 -preset veryfast -r 30 -g 60 -keyint_min 60 -sc_threshold 0 -bf 0 \
114+
-c:a aac -b:a 160k -ar 48000 -ac 2 \
115+
-f mpegts "srt://0.0.0.0:9000?mode=listener&pkt_size=1316"
116+
```
117+
118+
Dans le second terminal, démarrez le caller SRT et le publisher MoQ :
119+
120+
```bash
121+
./build/openmoq-publisher \
122+
--live-source srt \
123+
--srt-config /tmp/srt_callers.json \
124+
--endpoint 127.0.0.1:4443 \
125+
--transport raw \
126+
--namespace live \
127+
--draft 16 \
128+
--timeout 120 \
129+
--forward 0
130+
```
131+
132+
Le seul mode SRT pris en charge est `caller` ; l'hôte et le port configurés doivent désigner un listener SRT existant. Utilisez `--forward 1` pour un test immédiat du relay, ou conservez `--forward 0` pour attendre l'intérêt d'un abonné.
133+
134+
### Ingest CTE LL-DASH
135+
136+
Démarrez le publisher avec un listener CMAF chunked HTTP/1.1 et un relay MoQ cible :
137+
138+
```bash
139+
./build/openmoq-publisher \
140+
--live-source dash \
141+
--dash-listen 0.0.0.0:8080 \
142+
--dash-path /ingest \
143+
--endpoint https://127.0.0.1:4433/moq \
144+
--transport webtransport \
145+
--namespace live \
146+
--draft 18 \
147+
--publish-catalog \
148+
--forward 1 \
149+
--insecure
150+
```
151+
152+
Envoyez un stream CMAF/fMP4 existant avec le transfert chunked HTTP/1.1 :
153+
154+
```bash
155+
curl -X PUT \
156+
-H 'Transfer-Encoding: chunked' \
157+
-H 'Content-Type: video/iso.segment' \
158+
--data-binary @live-video.cmaf \
159+
http://127.0.0.1:8080/ingest/video
160+
```
161+
162+
FFmpeg peut à la place créer deux représentations vidéo plus l'audio et les envoyer directement au préfixe d'ingest :
163+
164+
```bash
165+
ffmpeg -re \
166+
-f lavfi -i "testsrc2=size=1280x720:rate=25" \
167+
-f lavfi -i "anullsrc=r=48000:cl=stereo" \
168+
-filter_complex "[0:v]split=2[v1][v2];[v1]scale=1280:720[v720];[v2]scale=640:360[v360]" \
169+
-map "[v720]" -c:v:0 libx264 -b:v:0 1500k -g 50 -keyint_min 50 -sc_threshold 0 \
170+
-map "[v360]" -c:v:1 libx264 -b:v:1 500k -g 50 -keyint_min 50 -sc_threshold 0 \
171+
-map 1:a -c:a aac -b:a 128k \
172+
-f dash -seg_duration 2 -use_template 1 -use_timeline 0 \
173+
-init_seg_name 'video$RepresentationID$' \
174+
-media_seg_name 'video$RepresentationID$' \
175+
-adaptation_sets "id=0,streams=v id=1,streams=a" \
176+
-multiple_requests 1 -streaming 1 -remove_at_exit 0 \
177+
-window_size 20 -extra_window_size 20 \
178+
http://127.0.0.1:8080/ingest/
179+
```
180+
181+
Chaque chemin sous `/ingest` conserve un état de parser indépendant et produit des noms de tracks MoQ préfixés par le chemin. Utilisez `--forward 1` pour envoyer les objets immédiatement, ou `--forward 0` pour attendre l'intérêt d'un abonné. Le listener DASH nécessite actuellement une plateforme de type Unix.
182+
183+
Consultez le [démarrage rapide de la CLI](docs/quickstart.md), les [recettes FFmpeg](docs/ffmpeg.md) et la [note technique SRT](docs/srt-ingest-technical-note.md) pour plus de détails.
75184

76185
## Publication via moq5
77186

README.it.md

Lines changed: 110 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,116 @@ La CLI espone una sola sorgente live alla volta:
7171
| SRT | `--live-source srt --srt-config FILE` | MPEG-TS su SRT | Richiede libsrt; i metadati CENC non sono disponibili in questo percorso |
7272
| CTE LL-DASH | `--live-source dash --dash-listen HOST:PORT` | Richieste CMAF chunked `POST` o `PUT` | Il listener richiede attualmente una piattaforma Unix-like |
7373

74-
Consultare l'[avvio rapido della CLI](docs/quickstart.md), le [ricette FFmpeg](docs/ffmpeg.md) e la [nota tecnica SRT](docs/srt-ingest-technical-note.md) per configurazioni e comandi completi.
74+
### Ingest SRT
75+
76+
Il publisher è un caller SRT. Creare `/tmp/srt_callers.json` con l'indirizzo del listener SRT e le impostazioni MPEG-TS/CMAF:
77+
78+
```json
79+
{
80+
"srt_callers": [
81+
{
82+
"id": "cam1",
83+
"srt": {
84+
"mode": "caller",
85+
"host": "127.0.0.1",
86+
"port": 9000,
87+
"latency_ms": 120
88+
},
89+
"mpegts": {
90+
"auto_detect_program": true,
91+
"program_number": null,
92+
"video_pid": null,
93+
"audio_pid": null
94+
},
95+
"cmaf": {
96+
"fragment_on_keyframe": true,
97+
"empty_moov": true,
98+
"default_base_moof": true,
99+
"separate_moof_per_track": true,
100+
"target_fragment_duration_ms": 1000
101+
}
102+
}
103+
]
104+
}
105+
```
106+
107+
Nel primo terminale, avviare un listener SRT FFmpeg che invia MPEG-TS dopo la connessione del publisher:
108+
109+
```bash
110+
ffmpeg -hide_banner -stream_loop -1 -re \
111+
-i input.mp4 \
112+
-map 0:v:0 -map 0:a:0 \
113+
-c:v libx264 -preset veryfast -r 30 -g 60 -keyint_min 60 -sc_threshold 0 -bf 0 \
114+
-c:a aac -b:a 160k -ar 48000 -ac 2 \
115+
-f mpegts "srt://0.0.0.0:9000?mode=listener&pkt_size=1316"
116+
```
117+
118+
Nel secondo terminale, avviare il caller SRT e il publisher MoQ:
119+
120+
```bash
121+
./build/openmoq-publisher \
122+
--live-source srt \
123+
--srt-config /tmp/srt_callers.json \
124+
--endpoint 127.0.0.1:4443 \
125+
--transport raw \
126+
--namespace live \
127+
--draft 16 \
128+
--timeout 120 \
129+
--forward 0
130+
```
131+
132+
L'unica modalità SRT supportata è `caller`; l'host e la porta configurati devono identificare un listener SRT esistente. Usare `--forward 1` per uno smoke test immediato del relay oppure mantenere `--forward 0` per attendere l'interesse di un subscriber.
133+
134+
### Ingest CTE LL-DASH
135+
136+
Avviare il publisher con un listener CMAF chunked HTTP/1.1 e un relay MoQ di destinazione:
137+
138+
```bash
139+
./build/openmoq-publisher \
140+
--live-source dash \
141+
--dash-listen 0.0.0.0:8080 \
142+
--dash-path /ingest \
143+
--endpoint https://127.0.0.1:4433/moq \
144+
--transport webtransport \
145+
--namespace live \
146+
--draft 18 \
147+
--publish-catalog \
148+
--forward 1 \
149+
--insecure
150+
```
151+
152+
Inviare uno stream CMAF/fMP4 esistente con trasferimento chunked HTTP/1.1:
153+
154+
```bash
155+
curl -X PUT \
156+
-H 'Transfer-Encoding: chunked' \
157+
-H 'Content-Type: video/iso.segment' \
158+
--data-binary @live-video.cmaf \
159+
http://127.0.0.1:8080/ingest/video
160+
```
161+
162+
In alternativa, FFmpeg può creare due rappresentazioni video più audio e inviarle direttamente al prefisso di ingest:
163+
164+
```bash
165+
ffmpeg -re \
166+
-f lavfi -i "testsrc2=size=1280x720:rate=25" \
167+
-f lavfi -i "anullsrc=r=48000:cl=stereo" \
168+
-filter_complex "[0:v]split=2[v1][v2];[v1]scale=1280:720[v720];[v2]scale=640:360[v360]" \
169+
-map "[v720]" -c:v:0 libx264 -b:v:0 1500k -g 50 -keyint_min 50 -sc_threshold 0 \
170+
-map "[v360]" -c:v:1 libx264 -b:v:1 500k -g 50 -keyint_min 50 -sc_threshold 0 \
171+
-map 1:a -c:a aac -b:a 128k \
172+
-f dash -seg_duration 2 -use_template 1 -use_timeline 0 \
173+
-init_seg_name 'video$RepresentationID$' \
174+
-media_seg_name 'video$RepresentationID$' \
175+
-adaptation_sets "id=0,streams=v id=1,streams=a" \
176+
-multiple_requests 1 -streaming 1 -remove_at_exit 0 \
177+
-window_size 20 -extra_window_size 20 \
178+
http://127.0.0.1:8080/ingest/
179+
```
180+
181+
Ogni percorso sotto `/ingest` mantiene uno stato del parser indipendente e produce nomi di track MoQ con prefisso del percorso. Usare `--forward 1` per inviare subito gli oggetti oppure `--forward 0` per attendere l'interesse di un subscriber. Il listener DASH richiede attualmente una piattaforma Unix-like.
182+
183+
Consultare l'[avvio rapido della CLI](docs/quickstart.md), le [ricette FFmpeg](docs/ffmpeg.md) e la [nota tecnica SRT](docs/srt-ingest-technical-note.md) per ulteriori dettagli.
75184

76185
## Pubblicazione tramite moq5
77186

0 commit comments

Comments
 (0)