Il dispositivo riproduce soltanto una o alcune campagne
Introduzione e orientamento
Lo schermo riproduce soltanto una o poche campagne, anche se nei dettagli del dispositivo in Campagne pubblicate ne compaiono altre. Il riavvio non è servito. Questa guida La accompagna nella verifica delle impostazioni, nel confronto delle playlist e nell'individuazione dei contenuti multimediali che potrebbero bloccare un aggiornamento.
Playlist è l'elenco delle campagne e delle relative regole di riproduzione. Se il player non riesce a preparare un file multimediale richiesto da una nuova playlist, può continuare a utilizzare quella precedente. Altre possibili cause sono programmazione, destinazioni della campagna, connettività e spazio disponibile.
Controlli e risoluzione dei problemi
Procedura diagnostica e di riparazione
Controlli le campagne nel portale.
Apra i dettagli del dispositivo interessato e la scheda Campagne pubblicate . Per le campagne mancanti verifichi che siano destinate a questo dispositivo, attive e con date e condizioni di riproduzione valide, compresi giorni e orari. Le confronti con l'ora effettiva del dispositivo al passaggio 3.
Una campagna non pianificata per l'orario corrente non è necessariamente difettosa. Se dovrebbe essere in riproduzione e il riavvio non è servito, prosegua. Consulti anche le guide a Campagne e Dispositivi.
Apra Console remota.
Il dispositivo deve essere online e comunicare con il server. Console remota richiede il ruolo Amministratore del server o superiore. La apra come descritto nella guida Console remota . Incolli il comando nel campo di inserimento e lo invii con ✓. Incolli per intero ogni blocco multilinea, compresa l'ultima riga
PY.L'anteprima remota dello schermo non fornisce accesso alla console. Se il dispositivo è offline, segua prima la guida alla verifica della connettività del dispositivo. Se il Suo ruolo non consente l'accesso, chieda a un amministratore autorizzato di eseguire questi passaggi. Consulti Utenti e autorizzazioni.
I comandi seguenti sono destinati ai player Linux condevice-runtime.serviceservice and the working directory/storage. The Python blocks require Python 3; the URL test requires curl. If the console reports that a command, service or path does not exist, do not proceed with file changes. Contact support.Controlli ora, spazio su disco e servizio del player.
Comando da copiare:
date df -h / /storage systemctl is-active device-runtime.service ls -lh --time-style=long-iso /storage/playlist /storage/playlist_newChe cosa vede Che cosa significa e come procedere Data e ora Le confronti con ora locale e fuso orario correnti. Un orario errato può influire sulla selezione delle campagne e sulla connettività. Spazio libero nella colonna Avail Se l'archiviazione è piena, segua la guida a Spazio su disco insufficiente. Controlli anche la partizione montata in /storage. activeIl servizio è in esecuzione. Questo non conferma ancora una riproduzione corretta o un aggiornamento riuscito. inactive,failedor missing filesControlli i log al passaggio 5. Non utilizzi la riparazione temporanea prima di aver verificato l'installazione e la causa. /storage/playlistcontains the playlist currently accepted by the player./storage/playlist_newcontains the newly received playlist, whose media the player prepares before activation. A newer timestamp or a different size is a useful clue, ma non dimostra da sola un guasto. I file possono differire temporaneamente durante un normale download.Confronti le campagne nelle due playlist.
Il blocco seguente legge entrambi i file ed elenca ID numerico del dispositivo, numero di campagne, ID, nomi e date di validità delle campagne. Non modifica nulla. Annoti l'ID numerico del dispositivo: l'intestazione della console può mostrare un identificatore diverso, che non deve essere utilizzato successivamente nel campo DEVICE_ID.
Comando da copiare:
python3 - <<'PY' import json for path in ['/storage/playlist', '/storage/playlist_new']: print('\nFILE:', path) try: with open(path) as f: data = json.load(f) print('Device:', data.get('deviceId')) campaigns = data.get('campaigns', []) print('Campaign count:', len(campaigns)) for c in campaigns: print(c.get('campaignId'), c.get('nameCampaign'), 'from:', c.get('start'), 'to:', c.get('end')) except Exception as e: print('ERROR:', e) PYSe la nuova playlist contiene le campagne previste ma quella corrente soltanto una selezione precedente, cerchi un errore di preparazione nel passaggio successivo. Se le campagne mancano anche nel nuovo file, controlli impostazioni e ricezione degli aggiornamenti dal portale. Un errore di analisi JSON può indicare un file incompleto o danneggiato; non lo sovrascriva manualmente senza ulteriori verifiche.
Individui l'errore di download e controlli la risposta del server.
Visualizzi le ultime 120 voci del log del servizio degli ultimi 20 minuti. Cerchi errori ricorrenti, URL e ID del contenuto multimediale. Se vede soltanto la parte finale di un errore, aumenti
-n 120or extend the time range.Comando da copiare:
sudo journalctl -u device-runtime.service --since "20 minutes ago" --no-pager -n 120 -o catOutput di esempio — non lo incolli nella console. Un esempio di errore risolto con questa procedura:
https://files.screensoft.org/api/video/H265/1790935600695 java.lang.IllegalStateException: Received 0 bytes ... /storage/video/1790935600695.mp4Received 0 bytes significa che il player non ha ricevuto contenuti utilizzabili del file. Questo messaggio da solo non ne spiega la causa. Nell'esempio, l'ID del contenuto multimediale è
1790935600695; for your own case, note the ID and exact URL from your logs.Incolli l'indirizzo esatto dei Suoi log nel campo evidenziato qui sotto; verrà inserito automaticamente nel comando. Mantenga le virgolette. La prova scarta i dati scaricati e non modifica contenuti multimediali o playlist. Non utilizzi automaticamente l'indirizzo di esempio per un altro dispositivo.
Incolli l'indirizzo esatto che inizia con https:// o http://. Non incolli l'intero messaggio di errore o un percorso /storage/video/….
URL mancante. Per il momento la copia del comando è disattivata.
2. Controlli l'indirizzo nel comando, quindi copi l'intero blocco. L'indirizzo viene inserito automaticamente.
Comando da modificare e copiare:
curl -sS -L --connect-timeout 10 --max-time 30 \ --range 0-1023 --max-filesize 1048576 \ -D - -o /dev/null \ -w '\nHTTP: %{http_code}\nDownloaded: %{size_download} bytes\n' \ 'PASTE_MEDIA_URL_HERE'Che cosa vede Che cosa significa e come procedere HTTP 404 Il server non fornisce il contenuto multimediale all'indirizzo richiesto. Ne identifichi la campagna al passaggio 6 e la corregga al passaggio 7. HTTP 401 / 403 Il server ha negato l'accesso. Verifichi autorizzazioni e configurazione del servizio con l'assistenza. HTTP 5xx Un errore del server. Indaghi il servizio file; eliminare la playlist non ripara il server. Errore DNS, di connessione, timeout o TLS Segua l'errore specifico: controlli rete, risoluzione dei nomi, disponibilità del server, ora o certificato. Non disattivi la verifica dei certificati. HTTP 200 / 206 e dati non vuoti La prova ha ricevuto dati. Non conferma che il video completo sia integro o riproducibile; controlli i log per altri errori. Limite di dimensione di curl Il server potrebbe aver ignorato la richiesta dei primi 1.024 byte. La prova è limitata a 1 MiB e 30 secondi; il raggiungimento di un limite non significa di per sé che il contenuto sia difettoso. Trovi la campagna tramite l'ID del contenuto multimediale.
Inserisca prima l'ID del contenuto multimediale. Il valore rosso
000is only a placeholder. Il blocco cerca il valore esatto delresourceIdfield, including alternative visuals, and lists matching campaigns. Note their names and IDs. An unchanged block with the value 000 exits safely without changing anything.Utilizzi il numero dopo l'ultima barra nell'URL del contenuto multimediale del passaggio 5. Non è l'ID della campagna né quello del dispositivo. Lo inserisca senza estensione .mp4.
ID mancante. Non copi ancora il comando.
2. Controlli la riga evidenziata in rosso, quindi copi l'intero comando. Dopo l'inserimento di un ID valido, questo viene inserito automaticamente nel comando e il pulsante Copia viene attivato.
Comando da modificare e copiare:
python3 - <<'PY' import json RESOURCE_ID = 000 # YOUR MEDIA ID MUST GO HERE if RESOURCE_ID <= 0: raise SystemExit('Enter the media ID in RESOURCE_ID first.') 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('Campaign:', c.get('nameCampaign')) print('Campaign ID:', c.get('campaignId')) print('Primary visual:', c.get('primary')) print('Alternative visuals:', c.get('alternative')) if not found: print('Media not found in the new playlist. Check the latest logs and ID.') PYSe il contenuto non viene trovato, il file potrebbe essere cambiato nel frattempo. Controlli di nuovo gli ultimi log e la nuova playlist. Se più campagne utilizzano questo contenuto, correggerne una sola potrebbe non bastare; controlli ogni corrispondenza.
Corregga la campagna nel portale.
Apra la campagna identificata tramite nome e ID. Sostituisca il contenuto multimediale non disponibile con un nuovo file caricato oppure metta temporaneamente in pausa la campagna e salvi la modifica. Consulti le guide a Contenuti multimediali e Campagne.
Attenda l'arrivo della playlist aggiornata e il download dei relativi contenuti. Il tempo dipende da connettività e dimensioni dei file. Ripeta i controlli dei passaggi 3 e 4: se ha sospeso la campagna o sostituito il contenuto, la nuova playlist non deve più fare riferimento al file difettoso.
Se il file è invariato e contiene ancora il riferimento originale, la playlist aggiornata non è ancora arrivata. Controlli lo stato online e che la modifica nel portale sia stata salvata. Il solo riavvio non può ripristinare un file per cui il server restituisce ancora HTTP 404. Se deve ripristinare temporaneamente gli altri annunci, prosegua al passaggio 8; altrimenti verifichi il risultato al passaggio 9.
Riparazione locale temporanea con backup.
Procedura di assistenza — interrompe brevemente la riproduzione. La utilizzi soltanto dopo aver confermato il contenuto multimediale non disponibile e la relativa campagna. Lo script rimuove un'intera campagna dalla nuova playlist, non soltanto il video. Lo esegua sul dispositivo corretto in un momento in cui una breve interruzione della riproduzione sia accettabile.Lo script verifica tutti gli ID e arresta soltanto
device-runtime.service, backs up both files to/storage/playlist-backup-DATUM-CAS, removes the specified campaign fromplaylist_newand starts the service again. It does not directly overwrite the current playlist or delete media. A backup is made before writing; if the edit fails, the script attempts to restore the original new playlist. It also attempts to restart the service if an error occurs within this block, provided the script can finish; a power outage or forced termination cannot be handled this way.Prima di eseguirlo, completi tutti e tre i campi seguenti:
DEVICE_ID: the numeric device ID from step 4.CAMPAIGN_ID: the campaign ID from step 6.RESOURCE_ID: the unavailable media ID from the logs.
Non utilizzi gli ID di esempio, salvo che si tratti esattamente di quel caso. I valori rossi 000 sono una protezione: la copia rimane disattivata finché non sono compilati tutti gli ID e lo script invariato non effettua modifiche. Sul dispositivo deve rimanere almeno un'altra campagna.
1. Inserisca tutti e tre gli ID prima di copiareOgni numero identifica un elemento diverso. Li controlli con i passaggi 4 e 6; non utilizzi automaticamente i valori di esempio.
Dal passaggio 4; non è l'identificatore nell'intestazione della console.
Dal passaggio 6; non è l'ID del contenuto multimediale.
Lo stesso ID del contenuto multimediale verificato al passaggio 6.
Inserisca tutti e tre gli ID. Per il momento la copia del comando è disattivata.
2. Controlli i tre valori evidenziati in rosso, quindi copi l'intero blocco. L'esecuzione interrompe brevemente la riproduzione. Lo script verifica inoltre che gli ID di dispositivo, campagna e contenuto multimediale corrispondano al contenuto della playlist.
Comando da modificare e copiare:
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('Enter all three IDs first. Nothing has changed.') 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('Device ID does not match.') 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('Campaign or media does not match the specified IDs.') data['campaigns'] = [c for c in data['campaigns'] if c.get('campaignId') != CAMPAIGN_ID] if not data['campaigns']: raise RuntimeError('No campaigns would remain after exclusion.') 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('Backup:', backup) print('Campaigns retained:', len(data['campaigns'])) except Exception: if saved: shutil.copy2(backup / 'playlist_new', path) raise finally: subprocess.run(['systemctl', 'start', service], check=True) PYL'output riuscito comprende il percorso del backup e il numero di campagne mantenute. Conservi il percorso per l'assistenza. Se lo script segnala ID non corrispondenti, non rimuova i controlli: torni al passaggio 4 o 6. Se scrittura, ripristino o avvio del servizio non riescono, invii l'output completo all'assistenza; non sposti manualmente la nuova playlist sopra quella corrente.
Questa riparazione temporanea riguarda soltanto questo dispositivo. Non modifica le impostazioni del server. Un aggiornamento successivo potrebbe inviare di nuovo la campagna difettosa. Completi anche la correzione nel portale al passaggio 7. Un altro contenuto multimediale mancante potrebbe ancora bloccare l'attivazione.Verifichi l'attivazione della playlist e la riproduzione effettiva.
Dopo circa un minuto controlli servizio e log; attenda di più per i download multimediali grandi. Questo blocco non modifica nulla.
Comando da copiare:
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 -50Elenchi di nuovo le campagne con il comando del passaggio 4. La playlist corrente deve contenere la nuova selezione prevista, il servizio deve essere attivo e i log correnti non devono ripetere lo stesso errore di download. Le sole dimensioni uguali dei file non sono una prova sufficiente.
Infine osservi lo schermo fisico o la sua anteprima remota abbastanza a lungo da coprire un intero ciclo pubblicitario. Verifichi che compaiano tutte le campagne previste dalle condizioni correnti. Per campagne pianificate o con intervalli tra le riproduzioni, adatti di conseguenza il periodo di osservazione.
Se il problema persiste.
- Compare un ID multimediale diverso: ripeta i passaggi 5 e 6 per il nuovo file. Il blocco precedente potrebbe averne nascosto un altro.
- La nuova playlist non è arrivata: controlli stato online, dispositivo di destinazione e modifica salvata della campagna. Una modifica locale non dimostra la corretta ricezione degli aggiornamenti del server.
- La playlist è attiva ma manca ancora un annuncio: controlli le condizioni di programmazione e gli ulteriori errori di riproduzione. Questa procedura non risolve automaticamente ogni problema di video o pianificazione.
- Il servizio non è in esecuzione: ne controlli lo stato con il comando seguente e invii il risultato all'assistenza.
Comando da copiare:
sudo systemctl status device-runtime.service --no-pagerInvii al fornitore del software l'ID del dispositivo, l'ora locale del problema con il fuso orario, i nomi delle campagne previste, entrambi gli elenchi di campagne, l'errore pertinente del log e il risultato della prova dell'URL. Se ha effettuato la riparazione locale, includa output e percorso del backup. Non invii password o credenziali di accesso.
Argomenti correlati e passi successivi
← Torna a Risoluzione dei problemi
Contatti il Suo fornitore del software.
