Czyli jak oglądać stream w ulubionym odtwarzaczu wideo.
Aktualne problemy z flash'em pod Linuxem:
- nowe wersje pluginu Adobe mają wsparcie tylko dla Chrome Pepper - więc dla pozostałych przeglądarek zostają tylko starsze wersje plugina
- zamknięte źródło ™
- czasami nie można wyjść z trybu fullscreen
- czasami wiesza się zajmując 100% czasu procesora
- czasami po prostu się wywala
Istnieje jakaś alternatywa - shumway ale aktualnie nie wspiera takich rzeczy jak YouTube więc zapewne też Twitch. Dodatkowo SWFObject stwierdza że flash nie jest w ogóle obsługiwany więc zazwyczaj zobaczymy tylko "zainstaluj Adobe Flash".
Pobieranie
Listowanie plików flv dla zadanego linka z archiwum, archive.py:
#!/usr/bin/python3 from urllib.request import urlopen import json, sys, re decoder = json.decoder.JSONDecoder() for arg in sys.argv[1:]: m = re.match(r"^.*/([^/]+)/b/([0-9]+)$", arg) video_id = int(m.group(2)) with urlopen("http://api.justin.tv/api/broadcast/by_archive/%d.json" % video_id) as f: resp = decoder.decode(f.read().decode()) for i in resp: print(i["video_file_url"])
Przykład użycia:
$ ./archive.py http://www.twitch.tv/some_channel/b/4173086 http://store30.media30.justin.tv/archives/2013-6-15/live_user_some_channel_13713088.flv http://store38.media38.justin.tv/archives/2013-6-15/live_user_some_channel_13713106.flv http://store6.media6.justin.tv/archives/2013-6-15/live_user_some_channel_13713124.flv
Pozostaje jeszcze tylko pobrać wypisane pliki.
Oglądanie
Potrzebne nam są livestreamer i rtmpdump. Żeby nie zaśmiecać systemu użyłem python'owego virtualenv. Poniższe kroki zakładają że rtmpdump nie jest zainstalowany w systemie.
Więc:
cd /path/to/project git clone git://git.ffmpeg.org/rtmpdump virtualenv env make -C rtmpdump/ source env/bin/activate pip install livestreamer
Następnie warto złożyć wszystko w jeden skrypt:
#!/bin/bash d="$(dirname $0)" source "${d}"/l/bin/activate LD_LIBRARY_PATH="${d}"/rtmpdump/librtmp/ livestreamer -p /path/to/player -r "${d}"/rtmpdump/rtmpdump "${@}"
... i zaczynamy oglądać:
./run.sh http://www.twitch.tv/dreamhacksc2 720p
możemy także zapisywać stream do pliku:
./run.sh http://www.twitch.tv/dreamhacksc2 720p -o file.flv