@
meda V těch popisech to chápu jako možná rezidua minulých verzí Kodi a také to, že to v popise moc nerozlišují. Vždycky tomu říkají cache nebo buffer bez ohledu na to, o co se jedná. V minulosti byla cache organizována trochu jinak (viz jeden z mých předchzích postů a
history buffer,
current buffer a
lookahead buffer). Každopádně, ať se tomu říká jakkoliv, tak fakticky je ten buffer svázán právě s přehrávačem. Proto asi vzniklo ono pojmenování
buffer přehrávače, protože lépe vystihuje jeho podstatu a funkci na rozdíl od
video cache. Důležité je, že buffer přehrávače je k dispozici vždy. A to i tehdy, když je vlastní cache úplně vypnutá nebo když je zdroj videa takový, že se pro něj Kodi cache nepoužívá (live stream, adaptivní protokol, zdroj typu PVR).
Mimochodem, doplněk si nerozhoduje o tom, jestli video cache použije nebo ne. To je dáno tím, jakého typu je zdroj, který právě přehrává (a také, jak je cache nastavená, viz.
<buffremode>). V případě Primy jsou streamy (ať už live stream, VOD nebo archiv) přenášené protokolem HLS. Vidím v jejich zdrojových adresách zásadně jen adresy typu manifets HLS.
Kód:
2024-02-02 13:50:36.451 T:27773 info <general>: Skipped 8 duplicate messages..
2024-02-02 13:50:36.451 T:27773 info <general>: VideoPlayer::OpenFile: plugin://plugin.video.iprima/action/play/?videoId=p111013
2024-02-02 13:50:36.616 T:688 info <general>: Creating InputStream
2024-02-02 13:50:36.660 T:688 info <general>: Creating Demuxer
2024-02-02 13:50:36.691 T:14964 info <general>: [Scheduler] Played stream: http://prima-ott-live-sec.ssl.cdn.cra.cz/e64CwxLhP-hVdxhVEXiy2w==,1706964636/channels/prima_family/playlist-live_lq-live_mq.m3u8
2024-02-02 13:50:36.691 T:14964 info <general>: [Scheduler] Stream: http://prima-ott-live-sec.ssl.cdn.cra.cz/e64CwxLhP-hVdxhVEXiy2w==,1706964636/channels/prima_family/playlist-live_lq-live_mq.m3u8
2024-02-02 13:50:36.691 T:14964 info <general>: [Scheduler] Downloaded server all: ['http:', '', 'prima-ott-live-sec.ssl.cdn.cra.cz', 'e64CwxLhP-hVdxhVEXiy2w==,1706964636', 'channels', 'prima_family', 'playlist-live_lq-live_mq.m3u8']
2024-02-02 13:50:36.692 T:14964 info <general>: [Scheduler] Downloaded server: prima-ott-live-sec.ssl.cdn.cra.cz
2024-02-02 13:50:36.692 T:14964 info <general>: [Scheduler] addonId: plugin.video.iprima
Tady je např. obsah jednoho z pořadů v archivu:
Kód:
#EXTM3U
#EXT-X-VERSION:5
#EXT-X-STREAM-INF:BANDWIDTH=1155072,RESOLUTION=768x432
chunklist_b1155072.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=540672,RESOLUTION=512x288
chunklist_b540672.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=950272,RESOLUTION=640x360
chunklist_b950272.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1667072,RESOLUTION=1024x576
chunklist_b1667072.m3u8
A při přehrávání takového streamu se samozřejmě video cache nepoužije, takže jediné místo, kde se něco ukládá je právě ten buffer přehrávače.
Jak už jsem dříve psal, to zobrazení obsazení bufferu přehrávače (jsem tak zvyklý mu říkat, budu to tedy používat dál) se mi taky u posledních verzí Kodi nějak nepozdává. Jak to 1% o které jsi psal, tak např. to, že když si pustím video z doplňku Prima+ např. video z archivu a vytáhnu ethernet konektor, tak se přehrává chvíli dál (než se vyčerpá buffer přehrávače), ale % zaplnění bufferu přehrávače neklesá a drží se stále na 100%. Když totéž udělám u PVR (Tvheadend) tak se to chová podobně, jen s tím rozdílem, že buffer klesá postupně až k 0%, kdy se přehrávání zastaví. Možná, že bude problém v případě adaptivních protokolů. Z Tvheadend to jde HTSP protokolem (i když původní video z OTT služby je také HLS, ale ffmpeg na vstupu TVheadend to přeskládá), zatímco z doplňku Primy to jde až na přehrávače jako HLS.
A pokud je ve fóru napsáno "velikost mezipaměti v MB a % mezipaměti", tak je celkem jednoduché si ověřit, že to v praxi tak není, že mezi těmito dvěma hodnotami většinou (při běžném přehrávání) žádná jasná relace není. Když si pustíš video, vidíš, že MB obsazení dopředné paměti narůstají, až nakonec dosáhnou 75 % hodnoty <memorysize>, ale hodnota v % jsou většinou naplněná hned na 100 %. A naopak. Když si video cache úplně vypneš, hodnota dopředného bufferu v B je rovna 0.00, ale je vidět, jak ty % lítají mezi 100 % a nějakou hodně nízkou hodnotou, případně 0 %. To, že je něco s tím něcoo v nepořádku také vidíme v tom, jak málokdy dochází k tomu, že se na obrazovce objeví právě symbol načítání buferu přehrávače, případně hlášky o pomalém zdroji. Dříve se to chovalo celkem predikovatelně, teď to tak ale není.
Ještě jsme se zběžně podíval na Github xbmc a tam jsem definici cache a také jejího dopředného a zpětného bufferu , která přesně odpovídá získaným zkušenostem a tomu, jak jsme to tu popsal (strategie rozdělení a chování při jejm plnění). Ale nenašel jsem tam nic dalšího, co by odpovádali tomu, čemu já říkám buffer přehrávače. Naopak, v části core, kde je, kromě jiného i část týkající se videoplayer-u, obsahuje definice bufferu. Neříkám, že to něco dokazuje, ale poměrně přesně to odpovídá dosud zjištěným skutečnostem. Nechce se mi procházet celý kód, to je už na mne hodně náročné, ten způsob, jak je celé Kodi naprogramováno je bez diskuse nad mé praktické i teoretické schopnosti.