mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-02-18 22:12:40 +00:00
add stream.sh example
This commit is contained in:
parent
302faf47b4
commit
03f26a1934
1 changed files with 24 additions and 2 deletions
|
|
@ -34,6 +34,22 @@ ffmpeg -i "https://eqtv.live:8083/eqtvua/eqtvua_hd_ukr/chunks_dvr.m3u8?nimbleses
|
||||||
|
|
||||||
Як видно на прикладах вище, я додав до URL джерела аргумент `?nimblesessionid=xxx` - він потрібен для того, щоб ffmpeg не плодив нові сесії в процесі читання. Тут я ще не знаю, як довго протримається поточна сесія, але якщо будуть проблеми - напишу скрипт, що витягає актуальний її номер та доповню цей матеріал.
|
Як видно на прикладах вище, я додав до URL джерела аргумент `?nimblesessionid=xxx` - він потрібен для того, щоб ffmpeg не плодив нові сесії в процесі читання. Тут я ще не знаю, як довго протримається поточна сесія, але якщо будуть проблеми - напишу скрипт, що витягає актуальний її номер та доповню цей матеріал.
|
||||||
|
|
||||||
|
UPD. очікувано, сесія прожила менше доби, тому створив такий скрипт, будемо пускати його в `ExecStart` сервісу systemd, замість сирої команди `ffmpeg`:
|
||||||
|
|
||||||
|
``` /home/eqtv/stream.sh
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# завантажуємо актуальний файл m3u8, що містить активний номер сесії
|
||||||
|
# та витягаємо перше знайдене значення в змінну SESSION_ID
|
||||||
|
CHUNKS_DVR="/home/eqtv/chunks_dvr.m3u8"
|
||||||
|
wget -O $CHUNKS_DVR https://eqtv.live:8083/eqtvua/eqtvua_hd_ukr/chunks_dvr.m3u8
|
||||||
|
SESSION_ID=$(grep -oP '(?<=sessionid=)\d+' $CHUNKS_DVR -m 1)
|
||||||
|
|
||||||
|
# запускаємо стрім з актуальним значенням SESSION_ID
|
||||||
|
ffmpeg -i "https://eqtv.live:8083/eqtvua/eqtvua_hd_ukr/chunks_dvr.m3u8?nimblesessionid=$SESSION_ID" -b:a 32k icecast://user:password@127.0.0.1:8000/eQtv.mp3
|
||||||
|
```
|
||||||
|
* цей скрипт передбачає роботу з systemd: під час помилки процесу, буде виконано `Restart=on-failure`, таким чином ключ сесії буде актуалізовано
|
||||||
|
|
||||||
## Icecast
|
## Icecast
|
||||||
|
|
||||||
Декілька слів про налаштування сервера Icecast. Раніше, для локальних колекцій, мета-інформація про стрім в мене обслуговувалась сервером ezstream. Тут його немає, тому я додав такий набір до конфігурації точки монтування Icecast:
|
Декілька слів про налаштування сервера Icecast. Раніше, для локальних колекцій, мета-інформація про стрім в мене обслуговувалась сервером ezstream. Тут його немає, тому я додав такий набір до конфігурації точки монтування Icecast:
|
||||||
|
|
@ -67,7 +83,9 @@ Group=eqtv
|
||||||
|
|
||||||
# Затримка потрібна у моєму випадку через залежність від Icecast
|
# Затримка потрібна у моєму випадку через залежність від Icecast
|
||||||
# ExecStartPre=/bin/sleep 5s
|
# ExecStartPre=/bin/sleep 5s
|
||||||
ExecStart=/usr/bin/ffmpeg -i ...
|
|
||||||
|
# ExecStart=/usr/bin/ffmpeg -i ...
|
||||||
|
ExecStart=/path/to/script.sh
|
||||||
|
|
||||||
# Журнали я вимкнув, але можна продебажити наступним чином
|
# Журнали я вимкнув, але можна продебажити наступним чином
|
||||||
StandardOutput=null
|
StandardOutput=null
|
||||||
|
|
@ -75,10 +93,14 @@ StandardOutput=null
|
||||||
StandardError=null
|
StandardError=null
|
||||||
# file:///home/eqtv/eqtv-mp3-error.log
|
# file:///home/eqtv/eqtv-mp3-error.log
|
||||||
|
|
||||||
|
# Бажано увімкнути, якщо замість команди ffmpeg в ExecStart
|
||||||
|
# використовується скрипт оновлення номеру сесії
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
```
|
```
|
||||||
* в `ExecStart` треба вказати відповідний набір атрибутів `ffmpeg`
|
* в `ExecStart` треба вказати відповідний набір атрибутів `ffmpeg` або шлях до скрипта (вище)
|
||||||
|
|
||||||
## Nginx
|
## Nginx
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue