Перейти до основного вмісту

Типові робочі процеси

Імпортуйте стандартні тестові відеофайли.​

Використовуйте стандартні набори відеоматеріалів, коли вам потрібні повторювані медіафайли для демонстрацій, тестування або перевірки багатопотоковості:

https://artifacts.sima-neat.com/assets/videos/720p16/video01.mp4
...
https://artifacts.sima-neat.com/assets/videos/720p16/video16.mp4

https://artifacts.sima-neat.com/assets/videos/480p30/video01.mp4
...
https://artifacts.sima-neat.com/assets/videos/480p30/video16.mp4

Для ручного використання завантажте необхідні файли та завантажте їх із джерела медіа.

Для налаштування через API перевірте, чи вже є в Insight файли медіа:

curl -k https://127.0.0.1:9900/api/media-files

Якщо медіатека порожня, завантажте та додайте стандартне відео:

tmpdir="$(mktemp -d)"
curl -fL "https://artifacts.sima-neat.com/assets/videos/480p30/video01.mp4" \
-o "${tmpdir}/video01.mp4"
curl -k -F "file=@${tmpdir}/video01.mp4" \
https://127.0.0.1:9900/api/upload/media

Повторіть цю процедуру для інших файлів або завантажте архів, якщо ви хочете додати велику кількість медіафайлів.

Перевірте роботу застосунку, який обробляє відеопотік з однієї камери.​

  1. Відкрийте Insight.
  2. Перейдіть до розділу «Джерела медіа» та завантажте короткий тестовий відеофайл.
  3. Перейдіть до розділу «Джерела потокового відео» та призначте відео для src1.
  4. Почніть src1.
  5. Запустіть свою програму, використовуючи правильне RTSP URL-адресу:
    • Усередині контейнера SDK: rtsp://127.0.0.1:8554/src1
    • На пристрої DevKit або на зовнішньому комп’ютері: rtsp://<sdk-host-ip>:<rtsp.tcp hostPortStart>/src1
  6. Відкрийте програму для перегляду відео та перегляньте канал 0.
  7. Якщо ваш додаток надсилає метадані, переконайтеся, що відповідні елементи відображаються на відео.
  8. Використовуйте заповнювач «Статистика», щоб дізнатися, де в наступній версії відображатимуться дані системної діагностики навантаження.

Перевірка застосунку з живою вебкамерою​

Використовуйте цю процедуру, щоб тестувати застосунок із реальною камерою замість записаного файлу. Вебкамеру підключено до комп’ютера з вашим браузером, а не до плати: браузер публікує її в Insight, який надає її як звичайне джерело RTSP, що застосунок споживає так само, як файл.

  1. Відкрийте Insight через HTTPS і підтвердьте, що браузер довіряє його сертифікату.
  2. Перейдіть до Streaming Sources, виберіть поле файлу src1 і перемкніть діалогове вікно Джерело для src1 на вкладку Камера.
  3. Виберіть Увімкнути доступ до камери й дозвольте доступ на запит браузера, потім виберіть камеру й натисніть Призначити. Після призначення камери рядок показує позначку [CAM].
  4. Запустіть src1 і підтвердьте, що слот повідомляє Live, а попередній перегляд показує камеру.
  5. Запустіть застосунок із тим самим URL RTSP, що й для файлового джерела. Insight нормалізує вебкамеру до такого самого базового профілю H.264 із регулярними ключовими кадрами, який створює файлове джерело, тож апаратний декодер плати та GStreamer rtspsrc споживають його без додаткових дій — без ручного ffmpeg чи окремого шляху:
    • Усередині контейнера SDK: rtsp://127.0.0.1:8554/src1
    • На DevKit або зовнішньому комп’ютері: rtsp://<sdk-host-ip>:<rtsp.tcp hostPortStart>/src1
  6. Відкрийте Video Viewer і перегляньте канал 0.

Під час публікації вебкамери тримайте вкладку браузера видимою та на передньому плані: вона надсилає відео до Insight, а браузери обмежують приховані або фонові вкладки, що перериває потік. Закриття вкладки, відключення камери або вибір Зупинити завершує потік.

Коли Insight працює всередині SDK, браузер також має отримувати доступ до порту хоста webrtcWhip з neat --json, крім порту RTSP, який використовує застосунок. Див. Порти та поведінка мережі.

Перевіряйте декілька потоків вхідних даних.​

  1. Завантажте або підготуйте кілька відео у розділі «Джерела медіа».
  2. Використовуйте потокові джерела. Auto Assign щоб зіставити відео з відповідними слотами джерела.
  3. Використовуйте Bulk Start, щоб вказати кількість джерел, які очікує ваш додаток.
  4. Запустіть програму, використовуючи відповідні URL-адреси потоків srcN.
  5. Відкрийте програму для перегляду відео, налаштувавши потрібний канал.
  6. Використовуйте інструменти діагностики для перегляду, щоб виявити вузькі місця в потоці даних. У цій версії розділ «Статистика» є лише тимчасовим, і в наступній версії планується додати інструменти діагностики вузьких місць у середовищі виконання.

Коли програма запускається поза контейнером SDK, перед запуском тесту визначте та налаштуйте хост-порти для RTSP, відеопотоку UDP та метаданих UDP, використовуючи дані з neat --json.

Трансляція із зовнішнього інструмента​

  1. Відкрийте «Джерела потокового відео» та виберіть слот зі станом Idle.
  2. Опублікуйте в нього потік із хоста, наприклад ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset veryfast -tune zerolatency -g 30 -pix_fmt yuv420p -f rtsp -rtsp_transport tcp rtsp://<insight-host>:8554/src2.
  3. Слот переходить у стан «Зовнішній». Виберіть його й увімкніть попередній перегляд, щоб перевірити зображення; перший кадр з’являється на наступному ключовому кадрі відправника, тому тримайте інтервал ключових кадрів коротким (-g 30 вище).
  4. Запустіть застосунок з RTSP URL-адресою слота, як і з будь-яким іншим джерелом.
  5. Щоб знову використати слот для файлу, зупиніть зовнішній інструмент або натисніть «Перехопити».

sima-ai/tool-mediasources (mediasrc.sh) запускає власний MediaMTX на тому самому порту RTSP і нумерує потоки з src0; запускайте його на іншому порту або використовуйте слоти Insight замість того, щоб запускати обидва.

Підтягування IP-камери в слот​

  1. Відкрийте «Джерела потокового відео» та натисніть кнопку файлу слота зі станом Idle.
  2. Перемкніть діалогове вікно на URL потоку, введіть RTSP URL-адресу камери (наприклад, rtsp://192.168.1.10:554/h264Preview_01_main), її ім’я користувача та пароль, а потім натисніть Підтягнути.
  3. Слот показує «Підключення…», а потім «Підтягнуто» з кодеком, роздільною здатністю та частотою кадрів. «Недоступно» означає, що камера не відповіла (Insight продовжує повторні спроби). Якщо камера відхиляє ім’я користувача або пароль, коли ви натискаєте «Підтягнути», діалогове вікно показує повідомлення, а слот не змінюється; «Помилка автентифікації» в рядку означає, що камера почала відхиляти облікові дані пізніше (наприклад, після того як спочатку була недоступна): натисніть «Зупинити» й підтягніть потік знову.
  4. Запустіть застосунок з RTSP URL-адресою слота, як і з будь-яким іншим джерелом. Конвеєри Neat можуть декодувати лише камери H.264, H.265 і MJPEG; інакше комірка кодека стає бурштиновою.
  5. Натисніть «Зупинити» в рядку, щоб звільнити слот.

Налаштуйте кінцеві точки застосунку на основі відображення портів SDK.​

Використовуйте цей процес, коли програма працює на DevKit, а Insight працює всередині SDK:

  1. В SDK перевірте, чи запущено Insight:

    insight-admin status
  2. Отримайте карту портів SDK:

    neat --json
  3. Знайдіть IP-адресу хоста SDK за посиланням insight.webUiUrl, або скористайтеся IP-адресою хоста, яка відображається під час процесу налаштування SDK.

  4. Знайдіть rtsp.tcp.hostPortStart, videoUDP.hostPortStart та metadataUDP.hostPortStart у exposedPorts.

  5. Налаштуйте потоки вхідних даних програми за допомогою:

    rtsp://<sdk-host-ip>:<rtsp.tcp hostPortStart>/src1
    rtsp://<sdk-host-ip>:<rtsp.tcp hostPortStart>/src2
  6. Налаштуйте вихідні порти програми для кожного каналу:

    video channel N: <sdk-host-ip>:<videoUDP hostPortStart + N>
    metadata channel N: <sdk-host-ip>:<metadataUDP hostPortStart + N>
  7. Запустіть програму та відкрийте переглядач відео.

  8. Використовуйте /api/ingest/stats, якщо у користувача не відображається відео. Ця функція повідомляє, чи надходять дані RTP і метадані до Insight перед тим, як ви почнете налагоджувати роботу браузера або WebRTC.

Виправлення проблем із відсутнім відео або накладками.​

Використовуйте цю послідовність дій, щоб визначити причину проблеми:

  1. Переконайтеся, що програма запущена та націлена на правильний хост Insight.
  2. Підтвердіть, чи запущено програму всередині контейнера SDK, чи на зовнішньому пристрої.
  3. Якщо це зовнішній ресурс, переконайтеся, що він використовує відображені хост-порти videoUDP і metadataUDP з neat --json.
  4. Якщо він знаходиться всередині контейнера SDK, переконайтеся, що вихідний відеопорт знаходиться в 9000-9079.
  5. Переконайтеся, що метадані-порт, якщо він використовується, відповідає каналу в діапазоні метаданих UDP.
  6. Відкрийте програму для перегляду відео та перевірте, чи відображається потрібний канал.
  7. Використовуйте системну інформацію, щоб перевірити, чи використовує Insight стандартні порти чи порти, визначені в SDK.
  8. Використовуйте «Системну інформацію» та журнали для перевірки стану пристрою. Наразі розділ «Статистика» є лише тимчасовим і в наступній версії планується доповнити його інформацією про завантаження пристрою та стан його роботи в середовищі виконання.

Якщо відео відображається, але відсутні накладені елементи, зверніть увагу на шлях до метаданих. Якщо накладені елементи відображаються із затримкою або не синхронізовані, відрегулюйте налаштування затримки метаданих у програмі перегляду.

Для потоку JPEG (тип корисного навантаження RTP 26) також перевірте:

  • Кожен RTP-пакет має розмір не більше 4096 байтів. Установіть rtpjpegpay mtu= не більше 4096, наприклад 1400.
  • Пакетувальник працює з timestamp-offset=0, тож його мітки часу RTP із частотою 90 кГц збігаються з PTS, який передають метадані. Інакше накладки ніколи не зіставляться зі своїми кадрами.
  • JPEG має базовий профіль (baseline), формат 4:2:0 або 4:2:2 і не більше 2040 пікселів з кожного боку. /api/ingest/stats?verbose=1 підраховує кадри, які переглядач не може використати, у forwarding.frames_dropped_incomplete, а причину наводить у diagnostics.recent_errors.
  • У /api/egress/stats значення jpeg.frames_dropped_backpressure для кожного переглядача підраховує кадри, пропущені через те, що цей браузер відстав; переглядач завжди показує найновіший кадр.

Поради​

  • Використовуйте короткі відео- та аудіофрагменти під час створення нового циклу в застосунку. Це прискорить налаштування вихідних даних і повторну перевірку.
  • Використовуйте джерела HTTP MJPEG, коли вам потрібно імітувати камеру, яка передає багатокомпонентний MJPEG через HTTP.
  • Забезпечте послідовність нумерації каналів: якщо відео надходить на канал N, надсилайте метадані до порту метаданих для того ж N.
  • Використовуйте перегляд «Робочий простір», щоб переглянути створену модель і артефакти профілювання перед копіюванням файлів із середовища.
  • Використовуйте функцію «Швидкий огляд», розташовану у верхньому правому куті інтерфейсу Insight, коли ви знайомите нового розробника з інструментом.
  • Перш ніж припускати, що вказано неправильний номер порту, перевірте системну інформацію. У разі розгортання SDK, номер порту, який використовується для взаємодії з браузером, може відрізнятися від внутрішнього номера порту служби.