Уредот репродуцира само една или дел од кампањите
Вовед и основни насоки
Екранот репродуцира само една или неколку кампањи, иако во деталите за уредот во Објавени кампањи се прикажуваат повеќе. Рестартирањето не помогнало. Овој водич Ве води низ проверка на поставките, споредување на листите за репродукција и препознавање медиуми што можеби го блокираат ажурирањето на содржината.
Листа за репродукција е списокот на кампањи и нивните правила за репродукција. Ако плеерот не може да подготви медиумска датотека потребна за нова листа, може да продолжи да ја користи претходната. Други можни причини се распоредот, целните уреди на кампањата, поврзаноста и достапниот простор за складирање.
Проверки и решавање проблеми
Постапка за дијагностика и поправка
Проверете ги кампањите во порталот.
Отворете ги деталите за засегнатиот уред и табот Објавени кампањи. За кампањите што недостигаат проверете дали се наменети за овој уред, дали се активни и дали имаат важечки почетни и крајни датуми и услови за репродукција, вклучувајќи денови и часови. Споредете ги со вистинското време на уредот во чекор 3.
Кампања што не е планирана за репродукција во овој момент не мора да биде неисправна. Ако треба да се репродуцира, а рестартирањето не помогнало, продолжете. Видете ги и водичите за Кампањи и Уреди.
Отворете Далечинска конзола.
Уредот мора да биде поврзан и да комуницира со серверот. За Далечинска конзола е потребна улогата Server Administrator или повисока. Отворете ја како што е опишано во водичот Далечинска конзола. Залепете ја командата во полето за внесување и испратете ја со ✓. Секој повеќереден блок залепете го целосно, вклучувајќи го последниот ред
PY.Далечинскиот преглед на екранот не обезбедува пристап до конзола. Ако уредот е без врска, прво следете го водичот за Проверка на поврзаноста на уредот. Ако Вашата улога не обезбедува пристап, побарајте овластен администратор да ги изврши овие чекори. Видете Корисници и дозволи.
Командите подолу се за плеери засновани на Linux со услугатаdevice-runtime.serviceи работниот директориум/storage. За Python-блоковите е потребен Python 3; за тестот на URL-адресата е потребен curl. Ако конзолата пријави дека команда, услуга или патека не постои, не продолжувајте со промени на датотеки. Обратете се до поддршката.Проверете ги времето, просторот на дискот и услугата на плеерот.
Команда за копирање:
date df -h / /storage systemctl is-active device-runtime.service ls -lh --time-style=long-iso /storage/playlist /storage/playlist_newШто гледате Што значи и што да направите понатаму Датум и време Споредете ги со тековното локално време и временската зона. Неточно време може да влијае врз изборот на кампањи и поврзаноста. Слободен простор во колоната Avail Ако просторот е полн, следете го водичот Недоволен простор на дискот. Проверете ја и партицијата монтирана на /storage. activeУслугата работи. Ова сѐ уште не потврдува правилна репродукција или успешно ажурирање. inactive,failedили датотеки што недостигаатПроверете ги дневниците во чекор 5. Не ја користете привремената поправка додека не ги проверите инсталацијата и причината. /storage/playlistја содржи листата за репродукција што плеерот ја има прифатено во моментот./storage/playlist_newја содржи новопримената листа, чии медиуми плеерот ги подготвува пред активирањето. Поновата временска ознака или различната големина е корисна трага, но сама по себе не докажува дефект. Датотеките може привремено да се разликуваат при нормално преземање.Споредете ги кампањите во двете листи за репродукција.
Следниот блок ги чита двете датотеки и ги наведува нумеричкото ID на уредот, бројот на кампањи, нивните ID, имиња и датуми на важност. Не менува ништо. Забележете го нумеричкото ID на уредот: заглавието на конзолата може да прикажува друг идентификатор, кој не смее подоцна да се користи во полето DEVICE_ID.
Команда за копирање:
python3 - <<'PY' import json for path in ['/storage/playlist', '/storage/playlist_new']: print('\nДАТОТЕКА:', path) try: with open(path) as f: data = json.load(f) print('Уред:', data.get('deviceId')) campaigns = data.get('campaigns', []) print('Број на кампањи:', len(campaigns)) for c in campaigns: print(c.get('campaignId'), c.get('nameCampaign'), 'од:', c.get('start'), 'до:', c.get('end')) except Exception as e: print('ГРЕШКА:', e) PYАко новата листа ги содржи очекуваните кампањи, а тековната содржи само постар избор, побарајте грешка при подготовката во следниот чекор. Ако кампањите недостигаат и во новата датотека, проверете ги поставките и доставувањето ажурирања од порталот. Грешка при парсирање JSON може да укажува на нецелосна или оштетена датотека; не ја презапишувајте рачно без дополнителни проверки.
Пронајдете ја грешката при преземањето и проверете го одговорот од серверот.
Прикажете ги последните 120 записи од дневникот на услугата во изминатите 20 минути. Барајте повторливи грешки, URL-адреса на медиумот и неговото ID. Ако го гледате само крајот на грешката, зголемете
-n 120или проширете го временскиот опсег.Команда за копирање:
sudo journalctl -u device-runtime.service --since "20 minutes ago" --no-pager -n 120 -o catПримерен излез — не го лепете во конзолата. Пример на грешка решена со оваа постапка:
https://files.screensoft.org/api/video/H265/1790935600695 java.lang.IllegalStateException: Received 0 bytes ... /storage/video/1790935600695.mp4Received 0 bytes значи дека плеерот не примил употреблива содржина на датотеката. Самата порака не објаснува зошто. Во овој пример, ID на медиумот е
1790935600695; за Вашиот случај, забележете ги ID и точната URL-адреса од Вашите дневници.Залепете ја точната адреса од Вашите дневници во означеното поле подолу; таа автоматски ќе се вметне во командата. Задржете ги наводниците. Тестот ги отфрла преземените податоци и не менува медиуми или листи за репродукција. Не ја користете автоматски примерната адреса за друг уред.
Залепете ја точната адреса што започнува со https:// или http://. Не ја лепете целата порака за грешка или патека /storage/video/….
URL-адресата недостига. Копирањето на командата засега е оневозможено.
2. Проверете ја адресата во командата, а потоа копирајте го целиот блок. Адресата се вметнува автоматски.
Команда за уредување и копирање:
curl -sS -L --connect-timeout 10 --max-time 30 \ --range 0-1023 --max-filesize 1048576 \ -D - -o /dev/null \ -w '\nHTTP: %{http_code}\nПреземени: %{size_download} бајти\n' \ 'PASTE_MEDIA_URL_HERE'Што гледате Што значи и што да направите понатаму HTTP 404 Серверот не го обезбедува медиумот на бараната адреса. Пронајдете ја неговата кампања во чекор 6 и поправете ја во чекор 7. HTTP 401 / 403 Серверот го одби пристапот. Проверете ги дозволите и конфигурацијата на услугата со поддршката. HTTP 5xx Серверска грешка. Истражете ја услугата за датотеки; бришењето на листата за репродукција нема да го поправи серверот. Грешка со DNS, врска, временско ограничување или TLS Следете ја конкретната грешка: проверете ги мрежата, разрешувањето имиња, достапноста на серверот, времето или сертификатот. Не ја исклучувајте проверката на сертификатите. HTTP 200 / 206 и податоци што не се празни Тестот примил податоци. Не потврдува дека целото видео е комплетно или може да се репродуцира; проверете ги дневниците за дополнителни грешки. Ограничување на големината во curl Серверот можеби го занемарил барањето за првите 1.024 бајти. Тестот е ограничен на 1 MiB и 30 секунди; достигнувањето ограничување само по себе не значи дека медиумот е неисправен. Пронајдете ја кампањата според ID на медиумот.
Прво внесете го ID на медиумот. Црвеното
000е само заменска вредност. Блокот ја пребарува точната вредност на полетоresourceId, вклучувајќи ги алтернативните визуели, и ги наведува соодветните кампањи. Забележете ги нивните имиња и ID. Непроменет блок со вредноста 000 безбедно завршува без да менува ништо.Користете го бројот по последната коса црта во URL-адресата на медиумот од чекор 5. Тоа не е ID на кампањата или на уредот. Внесете го без наставката .mp4.
ID недостига. Сѐ уште не ја копирајте командата.
2. Проверете го редот означен со црвено, а потоа копирајте ја целата команда. Откако ќе внесете важечко ID, тоа автоматски се вметнува во командата и се овозможува копчето Копирај.
Команда за уредување и копирање:
python3 - <<'PY' import json RESOURCE_ID = 000 # ТУКА МОРА ДА ГО ВНЕСЕТЕ ID НА ВАШИОТ МЕДИУМ if RESOURCE_ID <= 0: raise SystemExit('Прво внесете го ID на медиумот во 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('Кампања:', c.get('nameCampaign')) print('ID на кампањата:', c.get('campaignId')) print('Основен визуел:', c.get('primary')) print('Алтернативни визуели:', c.get('alternative')) if not found: print('Медиумот не е најден во новата листа за репродукција. Проверете ги најновите дневници и ID.') PYАко медиумот не е најден, датотеката можеби во меѓувреме се променила. Повторно проверете ги најновите дневници и новата листа за репродукција. Ако повеќе кампањи го користат медиумот, поправката на само една можеби нема да биде доволна; проверете го секое совпаѓање.
Поправете ја кампањата во порталот.
Отворете ја кампањата што ја препознавте по име и ID. Заменете го недостапниот медиум со новоприкачена датотека или привремено паузирајте ја кампањата и зачувајте ја промената. Видете ги водичите за Медиуми и Кампањи.
Почекајте да пристигне ажурираната листа за репродукција и да се преземат нејзините медиуми. Потребното време зависи од поврзаноста и големината на датотеките. Повторете ги проверките во чекорите 3 и 4: новата листа не смее повеќе да упатува на неисправната датотека ако сте ја паузирале кампањата или сте го замениле медиумот.
Ако датотеката е непроменета и сѐ уште го содржи првичното упатување, ажурираната листа не пристигнала. Проверете ги поврзаноста и дали промената во порталот е зачувана. Самото рестартирање не може да обнови датотека за која серверот и понатаму враќа HTTP 404. Ако треба привремено да ги обновите другите реклами, продолжете со чекор 8; во спротивно проверете го резултатот во чекор 9.
Привремена локална поправка со резервна копија.
Сервисна постапка — накратко ја прекинува репродукцијата. Користете ја само откако ќе ги потврдите конкретниот недостапен медиум и неговата кампања. Скриптата отстранува цела една кампања од новата листа за репродукција, а не само нејзиното видео. Извршете ја на правилниот уред во време кога е прифатлив краток прекин на репродукцијата.Скриптата ги проверува сите ID, ја запира само услугата
device-runtime.service, прави резервни копии на двете датотеки во/storage/playlist-backup-DATUM-CAS, ја отстранува наведената кампања одplaylist_newи повторно ја стартува услугата. Не ја презапишува директно тековната листа за репродукција и не брише медиуми. Пред запишувањето се прави резервна копија; ако уредувањето не успее, скриптата се обидува да ја врати првичната нова листа. Се обидува и да ја рестартира услугата ако во овој блок се појави грешка, под услов скриптата да може да заврши; прекин на напојување или присилно прекинување не може да се обработи на овој начин.Пред извршувањето пополнете ги сите три полиња подолу:
DEVICE_ID: нумеричкото ID на уредот од чекор 4.CAMPAIGN_ID: ID на кампањата од чекор 6.RESOURCE_ID: ID на недостапниот медиум од дневниците.
Не ги користете примерните ID освен ако не работите токму на тој случај. Црвените вредности 000 се заштита: копирањето останува оневозможено додека не се пополнат сите ID, а непроменетата скрипта не менува ништо. На уредот мора да остане најмалку уште една кампања.
1. Внесете ги сите три ID пред копирањетоСекој број идентификува различна ставка. Проверете ги според чекорите 4 и 6; не ги користете автоматски примерните вредности.
Од чекор 4; не е идентификаторот во заглавието на конзолата.
Од чекор 6; ова не е ID на медиумот.
Истото ID на медиумот што го проверивте во чекор 6.
Внесете ги сите три ID. Копирањето на командата засега е оневозможено.
2. Проверете ги трите вредности означени со црвено, а потоа копирајте го целиот блок. Извршувањето накратко ја прекинува репродукцијата. Скриптата проверува и дали ID на уредот, кампањата и медиумот се совпаѓаат со содржината на листата за репродукција.
Команда за уредување и копирање:
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('Прво внесете ги сите три ID. Ништо не е променето.') 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('ID на уредот не се совпаѓа.') 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('Кампањата или медиумот не се совпаѓаат со наведените ID.') data['campaigns'] = [c for c in data['campaigns'] if c.get('campaignId') != CAMPAIGN_ID] if not data['campaigns']: raise RuntimeError('По исклучувањето не би останала ниту една кампања.') 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) print('Задржани кампањи:', len(data['campaigns'])) except Exception: if saved: shutil.copy2(backup / 'playlist_new', path) raise finally: subprocess.run(['systemctl', 'start', service], check=True) PYУспешниот излез ги содржи патеката на резервната копија и бројот на задржани кампањи. Зачувајте ја патеката за поддршката. Ако скриптата пријави несовпаѓање на ID, не ги отстранувајте проверките: вратете се на чекор 4 или 6. Ако запишувањето, обновувањето или стартувањето на услугата не успее, испратете го целиот излез до поддршката; не ја преместувајте рачно новата листа врз тековната.
Оваа привремена поправка влијае само врз овој уред. Не ги менува поставките на серверот. Подоцнежно ажурирање може повторно да ја достави неисправната кампања. Завршете ја и поправката во порталот во чекор 7. Друг медиум што недостига и понатаму може да го блокира активирањето.Проверете ги активирањето на листата и вистинската репродукција.
По околу една минута проверете ги услугата и дневниците; оставете повеќе време за преземање големи медиумски датотеки. Овој блок не менува ништо.
Команда за копирање:
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 -50Повторно наведете ги кампањите со командата од чекор 4. Тековната листа треба да го содржи очекуваниот нов избор, услугата треба да биде активна, а тековните дневници повеќе да не ја повторуваат истата грешка при преземањето. Самото совпаѓање на големините на датотеките не е доволен доказ.
На крајот набљудувајте го физичкиот екран или неговиот далечински преглед доволно долго за целосен рекламен циклус. Проверете дали се прикажуваат сите кампањи што треба да се репродуцираат според тековните услови. За закажани кампањи или кампањи со интервали меѓу репродукциите, соодветно приспособете го периодот на набљудување.
Ако проблемот продолжи.
- Се појавува друго ID на медиум: повторете ги чекорите 5 и 6 за новата датотека. Претходната блокада можеби прикривала друга.
- Новата листа за репродукција не пристигнала: проверете ги поврзаноста, целниот уред и зачуваната промена на кампањата. Локално уредување не докажува дека ажурирањата од серверот се доставуваат правилно.
- Листата е активна, но реклама сѐ уште недостига: проверете ги нејзините услови за распоред и дополнителните грешки при репродукцијата. Оваа постапка не ја поправа автоматски секоја грешка со видео или распоред.
- Услугата не работи: проверете го нејзиниот статус со следнава команда и испратете го резултатот до поддршката.
Команда за копирање:
sudo systemctl status device-runtime.service --no-pagerИспратете му на Вашиот добавувач на софтвер ID на уредот, локално време на проблемот со временската зона, имиња на очекуваните кампањи, двата списока на кампањи, соодветната грешка од дневникот и резултатот од тестот на URL-адресата. Ако сте ја извршиле локалната поправка, додајте ги нејзиниот излез и патеката на резервната копија. Не испраќајте лозинки или податоци за најава.
Поврзани теми и следни чекори
Контактирајте го давателот на софтверот.
