YouTube Live stream rögzítése FFMPEG segítségével

URL-ben lévő élő videót FFMPEG-gel rögzíteni Ubuntu szerveren úgy, hogy 20 perces darabokban hoz létre fájlokat. A YouTube Live stream rögzítése FFMPEG segítségével megoldható, de mivel a YouTube nem támogatja közvetlenül az FFMPEG URL alapú stream-rögzítését, a folyamatnak két lépése van, Python könyvtár használatával.

  1. A stream URL beszerzése:
    Erre például a yt-dlp (Python – YouTube-DLP) használható, amely képes a YouTube élő adásának közvetlen HLS (HTTP Live Streaming) URL-jét lekérni.
  2. A stream rögzítése FFMPEG-gel
    A HLS URL-t FFMPEG-gel rögzítheted, miközben 20 perces szegmensekre osztod a fájlokat.

Az újabb Python verziók védik a rendszerszintű Python-környezetet a pip-el történő módosításoktól. Ezért a rendszer nem engedélyezi a pip-en keresztüli csomagtelepítést a rendszerszintű Pythonba.

Virtuális környezet létrehozásáról bővebben itt.

A YouTube-DLP önállóan is futtatható Windows és Linux környezetben is. A YouTube-DLP (röviden yt-dlp) egy fejlettebb, aktívan karbantartott, nyílt forráskódú eszköz, amelyet videók és audió fájlok letöltésére használnak különböző weboldalakról, köztük a YouTube-ról, Twitch-ről, Facebookról és sok más platformról. Az yt-dlp a youtube-dl egy továbbfejlesztett verziója, amely számos új funkcióval és fejlesztéssel bővült.

A YouTube-DLP (yt-dlp) leírása bővebben itt.

1. Használj virtuális környezetet, valamint pipxet a csomag telepítéséhez (Ajánlott)

Ez a legbiztonságosabb módszer, mivel elkülönített Python-környezetet hoz létre:

# Virtuális környezet létrehozása 
python3 -m venv yt-dlp-env 

# Aktiváld a virtuális környezetet 
source yt-dlp-env/bin/activate 

# Telepítsd a yt-dlp-t
pipx install yt-dlp

# A `yt-dlp` használata
yt-dlp --version

A virtuális környezet (venv) vagy a pipx használata jobb megoldás, mivel ezek nem módosítják a rendszerszintű Python-környezetet, és könnyebben kezelhetők

2. Szerezd meg a HLS URL-t

Használd a következő parancsot a YouTube élő adás stream URL-jének lekéréséhez:

yt-dlp -g "https://www.youtube.com/live/SpTcIBfDvg4?si=kc1YfCGIg5Zq4hZ7"

A parancs a stream közvetlen HLS URL-jét adja vissza, például:

https://manifest.googlevideo.com/api/manifest/hls_playlist/... (hosszú URL)

HLS URL használata bash scriptben:

#!/bin/bash

# HLS URL lekérése 
HLS_URL=$(yt-dlp -g "https://www.youtube.com/live/SpTcIBfDvg4?si=kc1YfCGIg5Zq4hZ7")

# Csak az audio stream  rögzítése - 20 perces darabokban
ffmpeg -i "$HLS_URL" - -vn -acodec libmp3lame -b:a 192k -f segment -segment_time 1200 -reset_timestamps 1 output_%03d.mp3

Megjegyzés: az FFMPEG megszakadhat, ha a hálózati kapcsolat instabil, ezért érdemes a folyamatot monitorozni vagy újraindítási logikát hozzáadni.