Předem musím poznamenat, že ke zprovoznění je potřeba buď server a nebo VPS, aby mi někdo za chvíli nepsal, že mu to na webhostingu nefunguje.
Celí proces je poměrně náročný, ale 2GB RAM a 1 CPU by měl bohatě dostačovat. Co tedy budeme potřebovat? Neobejdeme se bez ffmpeg, který potřebujeme k vytvoření toku videa z animovaného souboru GIF, obrázku a nebo MP4, sloučený s vaším tokem zvuku z IceCastu (případně SHOUTcastu, ale nezkoušel jsem) a předání obou na YouTube.
Chcete-li nainstalovat FFmpeg, zadejte toto do svého terminálu:
sudo apt install ffmpeg
Nebo navštivte oficiální stránku: http://ffmpeg.org/download.html
Některé popisy použitých proměnných kódu níže:
YOUTUBE_URL - adresa URL streamovací služby YouTube.
KEY - jedinečný klíč pro ovládání vašeho toku. Své najdete hned po vytvoření nového online streamu youtube (Youtube vám ho dá). Udržujte v bezpečí!
VIDEO_SOURCE - cesta k souboru s obrázkem, který je umístěn na vašem serveru.
AUDIO_SOURCE - URL vašeho zvukového toku. Nahraďte IP.
Script:
VBR="1500k"
FPS="24"
QUAL="superfast"
YOUTUBE_URL="rtmp://a.rtmp.youtube.com/live2"
KEY="xxx"
VIDEO_SOURCE="/var/www/beatzone.cz/web/images/logo.png"
AUDIO_SOURCE="http://localhost:8020/radio.mp3"
ffmpeg \
-re -f lavfi -i "movie=filename=$VIDEO_SOURCE:loop=0, setpts=N/(FRAME_RATE*TB)" \
-thread_queue_size 512 -i "$AUDIO_SOURCE" \
-map 0:v:0 -map 1:a:0 \
-map_metadata:g 1:g \
-vcodec libx264 -pix_fmt yuv420p -preset $QUAL -r $FPS -g $(($FPS * 2)) -b:v $VBR \
-acodec libmp3lame -ar 44100 -threads 6 -qscale:v 3 -b:a 320000 -bufsize 512k \
-f flv "$YOUTUBE_URL/$KEY"
Pravděpodobně budete muset zabalit tento bash script (pomocí FFmpeg) do systémové služby, pro případ, že někdy selže (a někdy to bude), aby script znovu spustil.
Pomocí ffmpeg můžeme do výsledného videa přidat i titulky. Budeme k tomu potřebovat soubor s textem, pokud chceme zobrazovat aktuálně hranou skladbu, stačí vytvořit script, kde ji budeme načítat. V případě SHOUTcast, by šlo použít currentsong, což je textový soubor. (příklad: http://89.221.210.76:7000/current song?sid=1 )
Výsledný script pak bude vypadat následovně:
VBR="1500k"
FPS="24"
QUAL="superfast"
YOUTUBE_URL="rtmp://a.rtmp.youtube.com/live2"
KEY="xxx"
VIDEO_SOURCE="/var/www/beatzone.cz/web/images/logo.png"
AUDIO_SOURCE="http://89.221.210.76:8020/radio.mp3"
NP_SOURCE="http://89.221.210.76:7000/currentsong?sid=1
FONT="/home/root/VinMonoPro-Light.ttf"
ffmpeg \
-re -f lavfi -i "movie=filename=$VIDEO_SOURCE:loop=0, setpts=N/(FRAME_RATE*TB)" \
-thread_queue_size 512 -i "$AUDIO_SOURCE" \
-map 0:v:0 -map 1:a:0 \
-map_metadata:g 1:g \
-vf drawtext="fontsize=20: fontfile=$FONT: \
box=0: boxcolor=black@0.5: boxborderw=20: \
textfile=$NP_SOURCE: reload=1: fontcolor=white@0.8: x=50: y=th" \
-vcodec libx264 -pix_fmt yuv420p -preset $QUAL -r $FPS -g $(($FPS * 2)) -b:v $VBR \
-acodec libmp3lame -ar 44100 -threads 6 -qscale:v 3 -b:a 320000 -bufsize 512k \
-f flv "$YOUTUBE_URL/$KEY"
Všimněte si, že musíme na server nahrát soubor s fontem.
Tak jak vidíte, opravdu to není žádná věda. V případě nějakých dotazů, použijte komentáře a nebo podporu BeatZone.
Rádio Vambi 4 Jahre
Ještě existuje alternativa streamovat na Youtube, nebo FB přes https://hearthis.at Služba akorát nepodporuje zobrazování právě harné skladby. Ale funguje, Jen je třeba odškrtnout automatický záznam streamu, protože limit každého uživatele je 500 minut týdně.