OpenCV: установка таймауту на очікування кадру в класі VideoCapture

Всім доброго часу доби! З'явилася тут якось завдання: відтворити RTSP-відеопотік з камери. Т. к. я в достатній мірі знайомий з API OpenCV, було прийнято рішення використовувати саме його. Для захоплення відеопотоку в OpenCV використовується клас VideoCapture. На жаль, мережа досить часто у нас обривається, і ця проблема на моєму рівні не вирішується, тому необхідною умовою для комфортної роботи стала досить швидка реакція на падіння відеопотоку — стандартний таймаут на підключення і очікування наступного кадру становить 30 секунд, причому всередині VideoCapture виклики open() і read() блокують, що змушує писати навколо простого насправді коду різні обгортки зразок виклику їх в окремому потоці і очікування отримання результату в асинхронному режимі. Природно, ніякої радості з цього приводу я не відчував — все це ресурси, які в програмі повинні були йти на інші цілі, не кажучи вже про ускладнення коду. Було прийнято рішення: змінити стандартний таймаут, або додати можливість його зовнішньої установки. Вийшов досить брудний хак, який, втім, може комусь стати в нагоді. Можливо, якщо є спосіб краще — якщо такий є — дуже б хотілося дізнатися його, так що прошу коментарів. В ідеалі — може бути, серед читачів Хабра знайдуться розробники OpenCV, які таки звернуть увагу на цю проблему. Метою було змусити код «працювати, як треба, під Windows x64».

Кому цікаво — прошу під кат.

Читати далі →

Рецепт розробки бота під Telegram



Добрий день, шановні читачі Хабрахабра!

В цьому топіку я хочу поділитися з вами досвідом розробки бота під Telegram за 4 дні. Цей бот переводить всі голосові повідомлення, які отримує, в текст. Намагався зробити швидко, але якісно — підучив пару-трійку технологій. Постараюся максимально детально описати свій процес подолання помилок і перешкод; довести, що, навіть не маючи потрібних навичок, запустити свій продукт не так-то й складно.

Стаття може бути цікава як новачкам у програмуванні — побачити, скільки перешкод стоять на шляху у готового продукту, так і більш просунутим фахівцям — десь посміятись, десь поплакати, десь написати коментар «життєво».

Преамбула
І так, що ж може зробити один програміст за 4 дні?

Читати далі →

Просто, потужно, назавжди. Элекард CodecWorks 990 — програмний лайв транскодер для AVC і HEVC



минулій статті ми розглянули, як працює апаратне прискорення кодування і декодування відео Quick Sync Video (QSV) в процесорах 6-го покоління Skylake. Маленький ділянку SoC спеціально виділили для розміщення спеціалізованих інтегральних схем, які займаються тільки обробкою відео. Відтворення відео з апаратною підтримкою стало набагато менше віднімати ресурсів у інших задач в ОС, менше нагрівати CPU і споживати менше електроенергії. Завдяки QSV, наприклад, ноутбук MacBook Air відтворює більше 10 годин відео на одному заряді акумулятора.

Читати далі →

EBU128: Пакетна нормалізація гучності аудіо/відео файлів

Всім привіт! Вирішив поділитися досвідом автоматизації контролю гучності мовлення свого ЗМІ. Думаю, у всіх профільних технарів давно болить голова, точно продовжує хворіти. Введена Мінкомзв'язку рекомендація в області нормування гучності звукових сигналів викликала хвилі обурення.

Не було надано ні засобів контролю, ні засобів виробництва. Крутіться як хочете.
Втім, вже давно, задовго до того знакової події існують різні плагіни до монтажних програмами, але як бути якщо вже накопичена огроменная медиабаза?

Читати далі →

Готуємо Open Build Service 2.6

image
1. Привіт.
На хабре підозріло мало інформації про Open Build Service (далі OBS) та інші платформи.
А про свіжість наявного і говорити не хочеться.
Нещодавно був реліз версії 2.7, прийшли довгоочікувані зміни.
Але, для історії, хочу трохи розповісти про одному варіанті використання 2.6 (реліз — лютий 2015 року).
Приклад для матеріалу навіяний недавньої потребою.
Отже, собирем php-ffmpeg на базі ffmpeg 3.0 для Centos (7 і навіть 6*!).
Читати далі →

Швидке кодування відео в Linux c Nvidia NVENC з SDK 7.5 і ffmpeg 3.0.2 на Nvidia GTX 960/970/980

image

Дана стаття була написана за мотивами статті Ефективне кодування відео в Linux c Nvidia NVENC: частина 1, загальна, проте має свої особливості і, на відміну від оригінальної статті, де чомусь упустили цей момент, я застосував перероблений патч Nvidia Acceleration до FFmpeg 3.0.2, отримавши крім енкодера nvenc ще й швидкий фільтр ресайза — nvresize.

Разом я отримав можливість апаратно кодувати відео в H. 264 і HEVC за допомогою відеокарти Nvidia GTX 960 на досить слабкому комп'ютері (Xeon L5420) зі швидкістю (для H. 264), що перевищує можливості даного процесора до 10 разів та у 3 рази щодо Core i7)! Причому на моєму улюбленому Debian 8 Jessie.

Отже, почнемо!

Читати далі →

Псевдостриминг mp4 в nginx з каналом 7Gbit/s

Передісторія:
Є майданчик з відео контентом, де відвідуваність близько 500 тисяч унікальних відвідувачів на добу. Відео у себе не зберігали, а люб'язно запозичили з сайтів «партнерів». Ну як запозичували: у реальному часі парсили з сайту посилання на відеопотоки і вставляли в свій плеєр.

У такій схемі було кілька ключових проблем:
  • Потрібно підтримувати працездатність парсерів в режимі 24/7 для всіх сайтів партнерів, а їх не один десяток;
  • Відео іноді видаляються;
  • Після певного навантаження, а іноді спонтанно, деякі відео починають вимагати ретрансляції.
У певний момент зрозуміли, що так жити більше не можна і треба роздавати відео зі своїх серверів. За приблизною оцінкою розмір відео був 4-5TB і максимальний порт в годину пік близько 5-7Gbit/s (після запуску цифри виявилися приблизно такими ж).

Читати далі →

Ефективне кодування відео в Linux c Nvidia NVENC: частина 1, загальна


Ця стаття містить практичні відомості, корисні для організації ефективного кодування відео на Linux з використанням останніх відеопроцесорів Nvidia.
Чим не є ця стаття:
  • Не є посібником з вибору технології апаратного кодування або агітацією на користь описуваної. Крім Nvidia NVENC є Intel QuickSync, є AMD VCE, напевно, є і ще щось. Всі ці технології мають різні характеристики, які важко навіть укласти на одну шкалу для порівняння. Тим не менш, я зробив свій вибір.
  • Не є претензією на найшвидший/якісний спосіб кодування. З причин, вказаних вище.

Читати далі →

Мовець панда або що можна зробити з FFmpeg і OpenCV на Android

Ця публікація про те, як можна в Windows скомпілювати бібліотеку для обробки відео і аудіо FFmpeg під Android в Eclipse з допомогою NDK. Ви дізнаєтеся, як пов'язати з бібліотекою FFmpeg для обробки зображень OpenCV і як це все можна використовувати в Java-коді Android програми. Все це буде розказано в контексті процесу створення Android програми, основний функціонал якого як раз і зав'язаний на використанні цих бібліотек та їх взаємодії. Отже, зацікавлених прошу під кат.

Читати далі →

Туторіал по Coub API

Днями ми випустили Coub API. Тепер можна робити програми, дивитися стрічку, лайкати, рекобить, тобто практично все, що можна зробити на сайті, можна робити через API. Але найголовніше — тепер можна з сторонніх додатків через API створювати коби.

У цьому туториале я покажу, як можна зробити найпростіший клієнт коба на Ruby on Rails. Додаток дозволяє залогуватися через ксб та згенерувати такий коб з будь-яким текстом:



Робоча версія цього додатка лежить за адресою fantozzi.dev2.workisfun.uk, код додатки з цього туториала можна подивитися на Гітхабі: github.com/igorgladkoborodov/memegenerator

Читати далі →