Стример з MiniDV-відеокамерою

Іноді може захотітися дивного. Ось начебто лежить собі відеокамера стандарту MiniDV і лежить. Їсти не просить. А що якщо взяти і записати на її касети зовсім навіть не відео, а, скажімо, файли. Запис-то все одно цифрова. Нехай обсяг касети всього лише близько 13 ГБ (під дані вийшло зайняти близько 9.5 ГБ), нехай швидкість читання 3.5 МБ в секунду, але ж вийде простий домашній стример. Так би мовити, “розтяжка для бідних”. Чому б не відправити на кілька касет, скажімо, якісь важливі файли. Просто так, на всяк випадок. Спробуємо!

На чому заснований запис даних на MiniDV відеокамеру? Так просто можна замість аудіоданих і частини відеоданих підсунути дані файлів — формат-то цифрової з окремим стисненням кожного кадру за однаковим алгоритмом. Залишилася справа за програмою, яка це зможе зробити.

Пошукавши по інтернету, як використовувати побутову відеокамеру як стример, я знайшов на форумах і в статтях десятирічної давності згадки декількох програм. Для Windows, наприклад, це були DVStreamer Pro і DVStreamer Lite. За першу років десять тому автори просили приблизно 60$. Друга безкоштовно, але з масою обмежень (256 файлів не більше 8 Мб кожен або один файл не більше гігабайт). Плюс численні скарги на нестабільну роботу обох версій. Скачавши зі сторінки виробника дане ПЗ (версії Lite там чомусь більше ні – схоже, програма тепер одна), виявився ще 30-денний термін на, так би мовити, на пробу. І так, ця програма так само, як і десятиліття тому, нестабільно працює і запросто вилітає від зміни погоди на Марсі. Зате вона вміє безпосередньо управляти камерою і автоматично виконувати перемотування до потрібного файлу.

Читайте також  Кривава Лола на Omega 2 або душимо пітона на Хэллоин

Ну що ж, а що ж у нас є для Linux? Виявляється, дещо-що доступно, а саме dvbackup-0.0.4. Ця програма здатна переданий їй потік даних упакувати в RAW формат DV і передати для запису іншій програмі dvcontrol, що входить в комплект. Ну і в зворотному порядку, він може так само витягти файли з RAW DV.

На жаль, завести dvcontrol мені не вдалося – вона стабільно не бачила даних по ieee1394 від відеокамери. А що якщо розібратися з dvbackup і самому сформувати RAW DV файл зі своїми прибамбасами? Наприклад, замість статичного логотипу, показуваного відеокамерою під час відтворення відео від dvbackup, зробити свій логотип, додавши смужку прогресу і ім’я записуваного файлу, а також додати підтримку папок.
Залишилося вирішити, чим би такий RAW файл вважати і записати на камеру. А втім, все це давно вміє редактор Kino. Ось його-то ми і будемо використовувати для роботи з відеокамерою. Сказано – зроблено. Розібравши dvbackup на частини, і досить швидко сформувавши файл даних, я переконався, що Kino може записати цей файл на камеру (при цьому лаючись на неможливу частоту). А ось вважати не може. Ні, каже, відеопотоку. Камера між тим цей самий відеопотік на екранчику чудово відображає.

Ось тут-то і довелося дуже уважно пройтися по формату DV, поступово замінюючи частини з dvbackup (часто, з коментарями автора про “магічні числа” і невідомі призначення) на коректні та відповідні опису DV-формату. Ряд даних довелося розшифровувати прямо з реального потоку від відеокамери, так як в моєму описі DV-формат ідентифікатори блоків не описані. В результаті, після чергової доопрацювання напилком, з’ясувалося, що Kino отриманий відеофайл цілком задовольняє, і він здатний виробляти і запис і читання цього файлу без проблем. Правда, судячи з усього, причина початкового неприйняття була в тому, що я відключив звук, коли створював RAW DV файл перший раз. Тільки в цьому була справа, я зараз навіть перевіряти не став

Читайте також  Абстрактний CRUD від сховища до контролера: що ще можна зробити за допомогою Spring + Узагальнення

Отже, в результаті експериментів вийшла ось така ось програма для Windows:

Вона вміє збирати файли RAW DV відео і витягувати файли з такого відеофайлу. Так само можна очистити звіт і перервати обробку, якщо ви передумали. На початку відеоданих і перед кожним файлом можна задати префікс — це такий порожній блок, полегшує позиціонування на початок файлу (між файлами (локальний префікс) можна і не робити зовсім, а от в самому початку (глобальний префікс) варто найчастіше задати — це полегшить пошук початку блоку файлів). Все це настроюється в діалогах програми. Так само є режим перевірки даних DV-відеофайлі. У цьому режимі файли витягуються, але не зберігаються.

Отриманий відеофайл ви можете записати на стрічку будь-яким редактором, який дозволяє записувати файли RAW DV. В одному з варіантів програми я зробив збірку RAW DV всередину AVI файлу, але виявилося, що використані мною відеоредактори при експорті втрачають дані, поміщені в DV-формат. Тому від цього варіанту довелося відмовитися.

Запис даних на відеокамеру в Kino виглядає ось так:

А так виглядає процес запису на відеокамеру:

Наскільки надійний такий стример? Я записав на касету частина фотоальбому 9.5 ГБ як набір файлів фотографій у форматі jpg приблизно по 1-3 МБ. При зчитуванні збій був зафіксований у трьох файлів.

Звичайно, хотілося б управляти камерою безпосередньо, але я поки ще не знайшов чіткого опису роботи з камерою по ieee1394. Єдина книжка, де хоч щось було написано – це “Програмування апаратних засобів Windows”, але зазначений там приклад, по-перше, містить помилки, а по-друге, просто відшукав мені пристрій плати ieee1394, встановлену в комп’ютері, а зовсім не відеокамеру. Спроба відправити та отримати дані з плати не увінчалася успіхом. Тому, якщо хто-небудь може розповісти про роботу з камерою по ieee1394 з використанням WinAPI і на Сі/Сі++, то буду дуже вдячний йому.

Читайте також  Де Голлівуд зображує хакерів правильно, а де — помилково

Степан Лютий

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

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *