• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 0 Hlas(ů) - 0 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Streamlink a jeho použití v Tvheadend
#2
Výběr streamu

Někdy se při použití streamlink v konstrukci pro pipe:// v Tvheadend může hodit výběr konkrétní kvality/rozlišení video streamu. V takovém případě v typickém volání streamlink:
 
Kód:
streamlink --locale cs_CZ dash://${url} best --stdout --ffmpeg-ffmpeg "${ffmpeg}ffmpeg" --ffmpeg-fout "mpegts"

můžeme paramer best nahradit konkrétní identifikací rozlišení streamu nebo lépe, seznamem rozlišení. Seznam je třeba uzavřít do uvozovek, např. "180p, 360p, 540p, 720p, 1080p", a streamlik ho použije tak, že ho odleva porovnává s nabídkou kvality v program streamu a pokud tam najde uvedenou kvalitu, tak ji použije, pokud ne, tak v prohledávání pokračuje. Seznam je samozřejmě možné libovolně upravit, aby začal s prohledáváním od kvality, kterou jako nejnižší možnou chcete použít. Seznam nemusí být setříděný, tzn. kvality můžeme libovolně proházet. I v seznamu je možné použít metakódy worst a best, které mohou zaručit, že v případě, pokud konkrétní kvality v seznamu streamlink nenajde, použije tyto. Typicky:
  • "360p, 540p, best" - znamená, že streamlink použije 360p, pokud v program streamu není, tak 540p a pokud tam není ani tato kvalita, použije tu nejlepší dostupnou,
  • "360p, 540p, worst" - znamená, že streamlink použije 360p, pokud v program streamu není, tak 540p a pokud tam není ani tato kvalita, použije tu nejhorší dostupnou.
V případě, pokud v seznamu nepoužijeme jednu ze dvou možností, best a nebo worst, a streamlink žádný stream nevybere, skončí s chybou. Je vhodné, pokud volání streamlink používáme např. ve scriptu, doplnit jeho volání zápisem do nějakého logu. Já to při použití v Tvheadend dělám tak, že klíčové infomace ukládám do logu vždy. Je to vhodné jak pro ladění, tak zejména pro případy, kdy poskytovatel OTT služby něco změní ve svém api. Lépe a rychleji se pak problém identifikuje. Volání streamlink pak pro tyto účely doplňuji takto:
 
Kód:
streamlink --locale cs_CZ dash://${url} best --stdout --ffmpeg-ffmpeg "ffmpeg" --ffmpeg-fout "mpegts" 2>> ${log_file}

Výpis z logu scriptu streamer.sh, který je konstrukcí pipe:// volán z playlistu pro Tvheadend pak může, při spuštění přehrávání Live TV kanálu, vypadat takto: 
 
Kód:
2024-07-29 09:38:55.509417940 id: 2346807 service: ...
2024-07-29 09:38:55.991365470 Streamlink url: https://...
[cli][info] Found matching plugin dash for URL dash://https://....
[cli][info] Available streams: 180p (worst), 360p, 540p, 720p, 1080p (best)
[cli][info] Opening stream: 1080p (dash)
[utils.named_pipe][info] Creating pipe streamlinkpipe-1153057-1-6735
[utils.named_pipe][info] Creating pipe streamlinkpipe-1153057-2-927

kde řádky začínající 2024-07-29 jsou zápisem klíčových infromací ze scriptu a řádky začínající [cli][info] nebo [utils.named_pipe][info] do logu zapisuje právě streamlink díky 2>> ${log_file}.

V případě, pokud by streamlink odpovídající kvalitu zapsanou v parametrch volání nenašel, tedy pokud by ve volání bylo např. pouze "480p", v logu se to projeví následovně:
 
Kód:
error: The specified stream(s) '480p' could not be found.
       Available streams: 180p (worst), 360p, 540p, 720p, 1080p (best)
 
Citovat
  


Příspěvků v tématu
RE: Streamlink a jeho použití v Tvheadend - od JiRo - 29.7.2024, 10:20

Přejít na fórum:


Prochází: 1 host(ů)