Перейти к содержанию
    

STM32F4 запись и отправка видео

Доброе время суток. 

Нужна помощь в понимании реальных возможностей STM32F4.

Есть потребность писать видео с 2х камер 5-15 к/с на SD карту в любом формате(карта будет всегда в устройстве). 

Периодически нужна возможность получать небольшие кусочки видео(5-100 кадров) в фоне не прерывая запись и отправлять по сети.

Вопросы к гуру

1.Насколько все это реально в промышленной эксплуатации ?

2. Какие камеры и какие интерфейсы лучше использовать ?

3. В какой формат лучше писать ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 minutes ago, Алексей Васильевич said:

Нужна помощь в понимании реальных возможностей STM32F4.

Я как бе не работал с STM32F4, но там Cortex-M4, а у меня с ним опыт на других МК. И вы не указали, какими интерфейсами подключаются ваши камеры. Но, думаю, что не справиться. Ну разве что гнать сырой поток на карту попробовать без всякого формата. Но остаётся ещё сеть: по какому протоколу нужно получать кусочки видео? UDP/TCP?

Тут бы что-нить типа линукса, благо плат недорогих много, например тут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, haker_fox сказал:

Я как бе не работал с STM32F4, но там Cortex-M4, а у меня с ним опыт на других МК. И вы не указали, какими интерфейсами подключаются ваши камеры. Но, думаю, что не справиться. Ну разве что гнать сырой поток на карту попробовать без всякого формата. Но остаётся ещё сеть: по какому протоколу нужно получать кусочки видео? UDP/TCP?

Тут бы что-нить типа линукса, благо плат недорогих много, например тут.

Речь о разработке прототипа, и STM32F4 не панацея, он просто мне знаком.

По интерфейсу камер мне нужно экспертное мнение, будут установлены оптимальные. ДВА устройство по одной камере с собственным SD тоже рассматриваются, но передатчик должен быть один.

Отправятся будут небольшие кусочки по запросу , суммарно не более минуты видео в день.

Линукс не рассматриваем, ни разу с ним не работал. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, Алексей Васильевич said:

Линукс не рассматриваем, ни разу с ним не работал.

А вы работали с сетевыми стеками (lwIP, например), с операционными системами (FreeRTOS, ucOS и т.п.)? Просто позиция "ни разу не работал" может и не сработать, т.к. всё равно придётся заморочиться на изучение чего-то. ИМХО, линукс гораздо проще освоить за обилием готового ПО.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Начнём с самого простого.

Чтобы записать кадр, его нужно получить, пережать в поток (либо добавить в MJPEG) и записать. С двух камер - соответсвенно, два кадра.

Процесс сжатия требует минимум памяти ещё на кадр (а лучше - значительно больше для хранения прошлых кадров, чтобы вычислять дельту). Допустим, камеры совсем никакие - 640 * 480. Потребуется 921кБ памяти на RGB картинку. Ой. И это только ОДИН кадр. А нужен кадр со второй камеры - ещё 921к. Но у F4 НЕТ таких объёмов памяти, и внешняя память - не выход.

Упс. Используйте Малинку и вешайте камеры на USB шину. Там памяти хватает и производительности процессора. А программу можно писать хоть на питоне.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25 minutes ago, AlanDrakes said:

и внешняя память - не выход.

Кстати, почему?

И ещё, уже больше для себя: вычислительной производительности cm4 хватит для этого дела? Может быть я дезинформировал человекка:?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос в том, что выходит с камеры и что хочется на выходе. Короче, рисуем схему с указанием, что где бегает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, Алексей Васильевич сказал:

Нужна помощь в понимании реальных возможностей STM32F4.

Есть потребность писать видео с 2х камер 5-15 к/с на SD карту в любом формате(карта будет всегда в устройстве). 

Периодически нужна возможность получать небольшие кусочки видео(5-100 кадров) в фоне не прерывая запись и отправлять по сети.

Вопросы к гуру

1.Насколько все это реально в промышленной эксплуатации ?

2. Какие камеры и какие интерфейсы лучше использовать ?

3. В какой формат лучше писать ?

 

Возможности STM32F4 тут неуместны: надо много озу. Берите копеечный MT7688 или малино-апельсино-банановые платы + linux.

1 - реально

2 - USB

3 - mjpeg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 часов назад, haker_fox сказал:

Кстати, почему?

И ещё, уже больше для себя: вычислительной производительности cm4 хватит для этого дела? Может быть я дезинформировал человекка:?

Если только брать нафаршированый -F7 (во всяком случае, нашёл только в нём встроеный JPEG кодер/декодер)...

С внешней памятью - не всё так гладко. Нужные объёмы - это SDRAM чипы, а у них имеется латентность при переключении чтение/запись, а это лишние такты. Либо пытаться захватывать кадр во внешнюю память, затем жать во внутреннюю, писать на карту.

Вот здесь есть пример по захвату аналогового видеосигнала. Картинка в итоге 320 * 240 жмётся 5мс. Грубо говоря, изображение 640 * 480 должно жаться уже около 20мс (4 раза больше чем 320 * 240). Только объём памяти требуется уже значительно больше чем у контроллера. Только внешняя. Плюс такты шины... можно получить 25-30мс на кадр. И это в лучшем случае. Получаем (без времени записи) - до 30FPS - пока всё хорошо, но запись на карту может быть очень долгой.

На -F7 можно получить скорее всего лучшую производительность, сгрузив кодирование на аппаратный блок, но опять же, упираемся во внешнюю память (а она будет постоянно дёргаться то на чтение, то на запись). Плюс, полученные данные нужно успеть залить на карту памяти.

У меня выходило кое-как 250кБ/с на рабочем проекте (SDIO + FatFS + RTOS). Тоже может стать узким местом, особенно если собрано с минимальным объёмом памяти. В общем, всё довольно грустно.

Я бы в итоге рекомендовал Raspberry Pi Zero и уже в ней всё это делать. Там и камера есть, вторую можно напаять на USB хост. И скорость работы с картой выше. И памяти достаточно. Ну и собственно, видеокодек аппаратный.

Изменено пользователем AlanDrakes

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, AlanDrakes сказал:

Я бы в итоге рекомендовал Raspberry Pi Zero и уже в ней всё это делать. Там и камера есть, вторую можно напаять на USB хост. И скорость работы с картой выше. И памяти достаточно. Ну и собственно, видеокодек аппаратный.

 

Действительно ваше рекомендация технически хорошо выглядят. 

Вторая камера по USB ? 

В какой среде разработки необходимо писать проект и как сильно это отличается от KEIL ?

Прошу порекомендовать открытое решение, с нуля в незнакомой среде не потяну. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, Алексей Васильевич said:

В какой среде разработки необходимо писать проект и как сильно это отличается от KEIL ?

Принципиально отличается, т.к. по сути это программирование на ПК под Linux.

Другое дело, что вполне возможно найти готовое или почти готовое решение.

 

На STM задачу можно решить, если брать камеры с JPEG. Но я бы не стал - накладные расходы тут будут выше, а результат посредственный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 11/14/2019 at 8:49 AM, AlanDrakes said:

Процесс сжатия требует минимум памяти ещё на кадр (а лучше - значительно больше для хранения прошлых кадров, чтобы вычислять дельту).

Допустим, камеры совсем никакие - 640 * 480. Потребуется 921кБ памяти на RGB картинку. Ой. И это только ОДИН кадр. А нужен кадр со второй камеры - ещё 921к. Но у F4 НЕТ таких объёмов памяти, и внешняя память - не выход.

jpeg в межкадровое сжатие не умеет.

и для него надо около 100-200 тактов (в зависимости от архитектуры МК) на пиксель. то есть на пару кадров в секунду с одной камеры stm32F4 возможно ещё хватило бы для VGA разрешения. и то если сильно постараться, но думаю не больше.

а если МК более могучий, и ему хватает дури зажать в жпег со скоростью прилетающих с камеры 30кадров в секунду, то памяти под буфер достаточно только на 8 строк изображения.

Но это баловство имхо, берите камеры с езернетом/вайфаем и рулите ими напрямую. ну или любой одноплатный ПК с линуксом для управелния/складирования картинок на SD карту,

хотя вроде бы и готовых ip камер которые сами на sd карту пишут слишком дофига есть, чтобы самому такое разрабатывать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 15.11.2019 в 16:39, Алексей Васильевич сказал:

Действительно ваше рекомендация технически хорошо выглядят. 

Вторая камера по USB ? 

В какой среде разработки необходимо писать проект и как сильно это отличается от KEIL ?

Прошу порекомендовать открытое решение, с нуля в незнакомой среде не потяну. 

На самом деле, хоть в блокноте.

На RPi можно как скомпилировать приложение, так и писать его на интерпретируемых языках. Да хоть PHP, хотя там будет очень костыльно.

Хотите Си? Пишите на Си. Кросс-компилятор Вам в помощь. Хотите на Питоне? Нет ничего проще. Устанавливаете питона, пишете. Перл? Тоже можно. Хотя не уверен, что там можно удобно подключиться к видео.

 

Пример с родной камерой малинки. Кстати, на питоне:

https://randomnerdtutorials.com/video-streaming-with-raspberry-pi-camera/

https://www.raspberrypi.org/forums/viewtopic.php?t=49530 Запись видео с помощью штатной утилиты. Читать можно из того же файла, либо нарезать на части и читать отдельные части. Грубо, но возможно.

Технически можно писать и с нескольких камер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 часов назад, AlanDrakes сказал:

На самом деле, хоть в блокноте.

На RPi можно как скомпилировать приложение, так и писать его на интерпретируемых языках. Да хоть PHP, хотя там будет очень костыльно.

Хотите Си? Пишите на Си. Кросс-компилятор Вам в помощь. Хотите на Питоне? Нет ничего проще. Устанавливаете питона, пишете. Перл? Тоже можно. Хотя не уверен, что там можно удобно подключиться к видео.

 

Пример с родной камерой малинки. Кстати, на питоне:

https://randomnerdtutorials.com/video-streaming-with-raspberry-pi-camera/

https://www.raspberrypi.org/forums/viewtopic.php?t=49530 Запись видео с помощью штатной утилиты. Читать можно из того же файла, либо нарезать на части и читать отдельные части. Грубо, но возможно.

Технически можно писать и с нескольких камер.

Спасибо , то что нужно!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 11/14/2019 at 3:20 PM, Алексей Васильевич said:

Линукс не рассматриваем, ни разу с ним не работал. 

Ну и как это называется после этого

10 minutes ago, Алексей Васильевич said:

Спасибо , то что нужно!!!

??????????????????????

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...