Zariadenie prehráva iba jednu alebo niektoré kampane
Úvod a orientácia
Na obrazovke sa prehráva iba jedna alebo niekoľko kampaní, hoci v detaile zariadenia na karte Zverejnené kampane vidíte aj ďalšie. Nepomohol ani reštart. Tento návod vás prevedie kontrolou nastavení, porovnaním playlistov a hľadaním média, ktoré môže blokovať aktualizáciu obsahu.
Playlist je zoznam kampaní a pravidiel ich prehrávania. Ak sa nepodarí pripraviť niektoré médium nového playlistu, prehrávač môže ďalej používať pôvodnú zostavu. Nie je to však jediná možná príčina: úlohu zohráva aj časový plán, priradenie kampaní, pripojenie či voľné miesto.
Postup kontroly a riešenia
Postup diagnostiky a opravy
Skontrolujte kampane v portáli.
Otvorte detail dotknutého zariadenia a kartu Zverejnené kampane. Pri chýbajúcich kampaniach overte priradenie k tomuto zariadeniu, aktívny stav, dátum začiatku a konca aj podmienky prehrávania vrátane dní a času. Porovnajte ich so skutočným časom zariadenia v kroku 3.
Ak kampaň podľa plánu práve nemá bežať, samo osebe nejde o poruchu. Ak bežať má a reštart nepomohol, pokračujte. Pomôžu aj návody Kampane a Zariadenia.
Otvorte Vzdialenú konzolu.
Zariadenie musí byť online a komunikovať so serverom. Vzdialená konzola vyžaduje oprávnenie Server Administrator alebo vyššie. Otvorte ju podľa návodu k vzdialenej konzole. Príkaz vložte do vstupného poľa a odošlite tlačidlom ✓. Viacriadkový blok vložte celý vrátane posledného riadka
PY.Samotný vzdialený náhľad obrazovky nenahrádza prístup ku konzole. Ak je zariadenie offline, najprv použite návod Kontrola pripojenia zariadenia. Nemáte potrebnú rolu? Odovzdajte postup oprávnenému správcovi; prehľad nájdete v časti Používatelia a oprávnenia.
Príkazy nižšie sú určené pre linuxový prehrávač so služboudevice-runtime.servicea pracovným adresárom/storage. Pythonové bloky potrebujú Python 3; test URL potrebuje curl. Ak konzola hlási neexistujúci príkaz, službu alebo cestu, nepokračujte zmenou súborov a obráťte sa na podporu.Overte čas, miesto na disku a službu prehrávača.
Príkaz na skopírovanie:
date df -h / /storage systemctl is-active device-runtime.service ls -lh --time-style=long-iso /storage/playlist /storage/playlist_newČo vidíte Čo to znamená a ako pokračovať Dátum a čas Porovnajte ich s aktuálnym miestnym časom a časovým pásmom. Nesprávny čas môže ovplyvniť výber kampaní aj pripojenie. Voľné miesto v stĺpci Avail Ak je úložisko plné, postupujte podľa návodu Nedostatok miesta na disku. Skontrolujte aj oddiel pripojený ako /storage. activeSlužba beží. To ešte nepotvrdzuje správne prehrávanie ani úspešnú aktualizáciu. inactive,failedalebo chýbajúce súboryPokračujte kontrolou denníka v kroku 5. Núdzovú úpravu nepoužívajte, kým neoveríte správnu inštaláciu a príčinu. /storage/playlistobsahuje aktuálne prijatú zostavu./storage/playlist_newobsahuje novo doručenú zostavu, ktorej médiá prehrávač pripravuje pred aktiváciou. Novší čas a iná veľkosť druhého súboru sú dôležitou stopou, nie samostatným dôkazom poruchy. Pri bežnom sťahovaní sa môžu dočasne líšiť.Porovnajte kampane v oboch playlistoch.
Nasledujúci blok prečíta oba súbory a vypíše číselné ID zariadenia, počet kampaní, ich ID, názvy a platnosť. Nič nemení. Poznačte si číselné ID zariadenia; v záhlaví konzoly môže byť aj iný identifikátor, ktorý do neskoršieho poľa DEVICE_ID nepatrí.
Príkaz na skopírovanie:
python3 - <<'PY' import json for path in ['/storage/playlist', '/storage/playlist_new']: print('\nSÚBOR:', path) try: with open(path) as f: data = json.load(f) print('Zariadenie:', data.get('deviceId')) campaigns = data.get('campaigns', []) print('Počet kampaní:', len(campaigns)) for c in campaigns: print(c.get('campaignId'), c.get('nameCampaign'), 'od:', c.get('start'), 'do:', c.get('end')) except Exception as e: print('CHYBA:', e) PYAk nový playlist obsahuje očakávané kampane, ale aktuálny iba starší výber, v ďalšom kroku hľadajte chybu ich prípravy. Ak kampane chýbajú aj v novom súbore, vráťte sa k nastaveniam a doručovaniu zmien z portálu. Chyba čítania JSON môže znamenať neúplný alebo poškodený súbor; bez ďalšieho overenia ho ručne neprepisujte.
Nájdite chybu sťahovania a overte odpoveď servera.
Zobrazte posledných 120 záznamov služby za uplynulých 20 minút. Hľadajte opakované chyby, URL média a jeho ID. Ak vidíte iba koniec chyby, zvýšte hodnotu
-n 120alebo rozšírte časové obdobie.Príkaz na skopírovanie:
sudo journalctl -u device-runtime.service --since "20 minutes ago" --no-pager -n 120 -o catUkážka výpisu – nevkladajte ju do konzoly. Príklad chyby, ktorú sme týmto postupom skutočne vyriešili:
https://files.screensoft.org/api/video/H265/1790935600695 java.lang.IllegalStateException: Received 0 bytes ... /storage/video/1790935600695.mp4Received 0 bytes znamená, že prehrávač neprijal použiteľný obsah súboru. Samotná správa ešte neurčuje príčinu. V tomto príklade je ID média
1790935600695; pre vlastný prípad si poznačte ID a presnú URL zo svojho výpisu.Do zvýrazneného poľa nižšie vložte presnú adresu zo svojho denníka; do príkazu sa doplní automaticky. Úvodzovky ponechajte. Test zahodí stiahnuté dáta a nezmení médiá ani playlisty. Ukážkovú adresu nepoužívajte automaticky pre iné zariadenie.
Vložte presnú adresu začínajúcu https:// alebo http://. Nekopírujte celú chybovú správu ani cestu /storage/video/…
URL nie je vyplnená. Kopírovanie príkazu je zatiaľ vypnuté.
2. Skontrolujte adresu v príkaze a skopírujte celý blok. Adresa sa doplní automaticky.
Príkaz na úpravu a skopírovanie:
curl -sS -L --connect-timeout 10 --max-time 30 \ --range 0-1023 --max-filesize 1048576 \ -D - -o /dev/null \ -w '\nHTTP: %{http_code}\nStiahnuté: %{size_download} bajtov\n' \ 'SEM_VLOZTE_URL_MEDIA'Čo vidíte Čo to znamená a ako pokračovať HTTP 404 Server na požadovanej adrese médium neposkytuje. Nájdite jeho kampaň v kroku 6 a opravte ju v kroku 7. HTTP 401 / 403 Server odmietol prístup. Overte oprávnenia a konfiguráciu služby s podporou. HTTP 5xx Chyba servera. Riešte službu poskytujúcu súbory; vymazanie playlistu server neopraví. Chyba DNS, pripojenia, timeout alebo TLS Postupujte podľa konkrétnej chyby: sieť, preklad názvov, dostupnosť servera, čas alebo certifikát. Nevypínajte overovanie certifikátu. HTTP 200 / 206 a nenulové dáta Test získal dáta. Nepotvrdzuje úplnosť ani prehrateľnosť celého videa; skontrolujte ďalšie chyby v denníku. Limit veľkosti curl Server mohol ignorovať požiadavku na prvých 1 024 bajtov. Test je obmedzený na 1 MiB a 30 sekúnd; dosiahnutie limitu samo osebe neznamená chybné médium. Nájdite kampaň podľa ID média.
Najprv doplňte ID média. Červeno označené
000je iba zástupná hodnota. Blok hľadá presnú hodnotu poľaresourceIdvrátane alternatívnych vizuálov a vypíše zodpovedajúce kampane. Poznačte si ich názvy a ID. Neupravený blok s hodnotou 000 sa bezpečne ukončí a nič nezmení.Použite číslo za poslednou lomkou v URL média z kroku 5. Nejde o ID kampane ani zariadenia. Zadajte ho bez prípony .mp4.
ID nie je vyplnené. Príkaz zatiaľ nekopírujte.
2. Skontrolujte červeno zvýraznený riadok a potom skopírujte celý príkaz. Po zadaní platného ID sa hodnota automaticky doplní do príkazu a sprístupní sa tlačidlo Kopírovať.
Príkaz na úpravu a skopírovanie:
python3 - <<'PY' import json RESOURCE_ID = 000 # SEM PATRÍ VAŠE ID MÉDIA if RESOURCE_ID <= 0: raise SystemExit('Najprv doplňte ID média do RESOURCE_ID.') with open('/storage/playlist_new') as f: data = json.load(f) def contains_resource(value): if isinstance(value, dict): return value.get('resourceId') == RESOURCE_ID or any( contains_resource(v) for v in value.values()) if isinstance(value, list): return any(contains_resource(v) for v in value) return False found = False for c in data.get('campaigns', []): if contains_resource(c): found = True print('Kampaň:', c.get('nameCampaign')) print('ID kampane:', c.get('campaignId')) print('Hlavný vizuál:', c.get('primary')) print('Alternatívne vizuály:', c.get('alternative')) if not found: print('Médium sa v novom playliste nenašlo. Overte aktuálny denník a ID.') PYAk sa médium nenájde, súbor sa mohol medzitým zmeniť. Znova skontrolujte aktuálny denník a nový playlist. Ak médium používa viac kampaní, oprava jednej nemusí stačiť; overte všetky nájdené výskyty.
Opravte kampaň v portáli.
Otvorte nájdenú kampaň podľa názvu a ID. Nedostupné médium nahraďte novým nahraným súborom alebo kampaň dočasne pozastavte a zmenu uložte. Pomôžu návody Médiá a Kampane.
Počkajte na doručenie upraveného playlistu a stiahnutie jeho médií. Rýchlosť závisí od pripojenia a veľkosti súborov. Zopakujte kontroly z krokov 3 a 4: nový playlist už nesmie odkazovať na chybný súbor, ak ste kampaň pozastavili alebo médium nahradili.
Ak súbor zostáva rovnaký a stále obsahuje pôvodný odkaz, upravená zostava ešte nedorazila. Overte online stav a uloženie zmeny v portáli. Samotný reštart neobnoví súbor, pre ktorý server stále vracia HTTP 404. Ak potrebujete dočasne obnoviť ostatné reklamy, pokračujte krokom 8; inak overte výsledok v kroku 9.
Núdzová lokálna oprava so zálohou.
Servisný zásah – krátko preruší prehrávanie. Použite až po potvrdení konkrétneho nedostupného média a jeho kampane. Skript odstráni z nového playlistu celú jednu kampaň, nielen jej video. Spúšťajte ho na správnom zariadení a v čase, keď možno krátko prerušiť zobrazovanie.Skript overí všetky ID, zastaví iba
device-runtime.service, zazálohuje oba súbory do adresára/storage/playlist-backup-DATUM-CAS, vyradí určenú kampaň zplaylist_newa znova spustí službu. Aktuálny playlist priamo neprepisuje a médiá nemaže. Záloha vznikne pred zápisom; pri chybe úpravy sa pokúsi obnoviť pôvodný nový playlist. O opätovné spustenie služby sa pokúsi aj pri chybe v tomto bloku, ak samotný proces dobehne; výpadok napájania alebo násilné ukončenie skriptu sa týmto nedajú ošetriť.Pred spustením vyplňte všetky tri polia nižšie:
DEVICE_ID: číselné ID zariadenia z kroku 4.CAMPAIGN_ID: ID kampane z kroku 6.RESOURCE_ID: ID nedostupného média z denníka.
Nepreberajte ID z príkladu, ak neriešite presne tento prípad. Červené hodnoty 000 sú poistkou: bez doplnenia všetkých ID sa kopírovanie nesprístupní a neupravený skript nič nezmení. Na zariadení musí zostať aspoň jedna ďalšia kampaň.
1. Pred kopírovaním doplňte všetky tri IDKaždé číslo patrí inému údaju. Overte ich podľa krokov 4 a 6; nepoužívajte automaticky čísla z príkladu.
Z kroku 4; nie identifikátor v záhlaví konzoly.
Z výsledku kroku 6; nejde o ID média.
Rovnaké ID média, ktoré ste overili v kroku 6.
Doplňte všetky tri ID. Kopírovanie príkazu je zatiaľ vypnuté.
2. Skontrolujte tri červeno zvýraznené hodnoty a skopírujte celý blok. Po spustení sa prehrávanie krátko preruší. Skript ešte samostatne overí, či ID zariadenia, kampane a média zodpovedajú obsahu playlistu.
Príkaz na úpravu a skopírovanie:
sudo python3 - <<'PY' import json import shutil import subprocess from datetime import datetime from pathlib import Path DEVICE_ID = 000 CAMPAIGN_ID = 000 RESOURCE_ID = 000 if min(DEVICE_ID, CAMPAIGN_ID, RESOURCE_ID) <= 0: raise SystemExit('Najprv doplňte všetky tri ID. Nič sa nezmenilo.') root = Path('/storage') path = root / 'playlist_new' service = 'device-runtime.service' def contains_resource(value): if isinstance(value, dict): return value.get('resourceId') == RESOURCE_ID or any( contains_resource(v) for v in value.values()) if isinstance(value, list): return any(contains_resource(v) for v in value) return False def prepare(): data = json.loads(path.read_text()) if data.get('deviceId') != DEVICE_ID: raise RuntimeError('Nesúhlasí ID zariadenia.') matches = [c for c in data.get('campaigns', []) if c.get('campaignId') == CAMPAIGN_ID] if len(matches) != 1 or not contains_resource(matches[0]): raise RuntimeError('Kampaň alebo médium nezodpovedajú zadaným ID.') data['campaigns'] = [c for c in data['campaigns'] if c.get('campaignId') != CAMPAIGN_ID] if not data['campaigns']: raise RuntimeError('Po vyradení by nezostala žiadna kampaň.') return data prepare() backup = root / ('playlist-backup-' + datetime.now().strftime('%Y%m%d-%H%M%S-%f')) backup.mkdir() subprocess.run(['systemctl', 'stop', service], check=True) saved = False try: for name in ('playlist', 'playlist_new'): shutil.copy2(root / name, backup / name) saved = True data = prepare() path.write_text(json.dumps(data, ensure_ascii=False)) print('Záloha:', backup) print('Počet ponechaných kampaní:', len(data['campaigns'])) except Exception: if saved: shutil.copy2(backup / 'playlist_new', path) raise finally: subprocess.run(['systemctl', 'start', service], check=True) PYÚspešný výpis obsahuje cestu k zálohe a počet ponechaných kampaní. Cestu si uložte pre podporu. Ak skript ohlási nesúlad ID, neodstraňujte kontroly: vráťte sa ku kroku 4 alebo 6. Pri chybe zápisu, obnovy alebo spustenia služby pošlite celý výpis podpore a nový playlist ručne nepresúvajte na miesto aktuálneho.
Toto je dočasná oprava iba daného zariadenia. Nemení nastavenia na serveri. Ďalšia aktualizácia môže chybnú kampaň znova doručiť. Dokončite preto aj opravu v portáli podľa kroku 7. Aktiváciu môže naďalej blokovať iné chýbajúce médium.Overte aktiváciu playlistu a skutočné prehrávanie.
Približne po minúte skontrolujte službu a denník; väčším médiám doprajte na stiahnutie viac času. Tento blok už nič nemení.
Príkaz na skopírovanie:
systemctl is-active device-runtime.service ls -lh --time-style=long-iso /storage/playlist /storage/playlist_new sudo journalctl -u device-runtime.service --since "2 minutes ago" --no-pager -o cat | tail -50Znova vypíšte kampane príkazom z kroku 4. Aktuálny playlist má obsahovať očakávanú novú zostavu, služba má byť aktívna a aktuálny denník už nemá opakovať rovnakú chybu sťahovania. Samotná zhodná veľkosť súborov nie je dostatočný dôkaz.
Nakoniec sledujte fyzickú obrazovku alebo jej vzdialený náhľad dostatočne dlho, aby prebehol celý cyklus reklám. Overte striedanie všetkých kampaní, ktoré podľa aktuálnych podmienok majú bežať. Pri kampaniach s časovým plánom alebo rozostupmi prehrávania prispôsobte dĺžku kontroly ich nastaveniam.
Čo robiť, ak problém pretrváva.
- Objavilo sa iné ID média: zopakujte kroky 5 a 6 pre nový súbor. Predchádzajúca prekážka mohla zakrývať ďalšiu.
- Nový playlist nedorazil: overte online stav, správne cieľové zariadenie a uloženú zmenu kampane. Lokálna úprava nedokazuje funkčné doručovanie zmien zo servera.
- Playlist sa aktivoval, ale reklama stále chýba: skontrolujte jej časové podmienky a ďalšie chyby prehrávania. Tento postup automaticky nerieši všetky poruchy videa ani plánovania.
- Služba nebeží: skontrolujte jej stav nasledujúcim príkazom a výsledok pošlite podpore.
Príkaz na skopírovanie:
sudo systemctl status device-runtime.service --no-pagerSvojmu poskytovateľovi softvéru pošlite ID zariadenia, miestny čas problému vrátane časového pásma, názvy očakávaných kampaní, zoznam kampaní z oboch playlistov, relevantnú chybu z denníka a výsledok testu URL. Ak ste vykonali lokálnu opravu, priložte jej výpis a cestu k zálohe. Neposielajte heslá ani prihlasovacie údaje.
Súvisiace témy a ďalšie kroky
← Späť na prehľad riešenia problémov
Obráťte sa na svojho poskytovateľa softvéru.
