EZ-WifiBroadcast DIY HD видео своими руками

questioner

А Hisilicon? Разве там не опенсорс?
_______

Не заметил пост Лелика.

khomyakk
kostyamat:

Очень уж мне сабж интересен, но с пи камерой интерес уходит в ноль.

Никто єтим заниматься не будет.

svpcom

И что получилось?
Как у них с латентностью видео?
Как там сделан автофокус для варифокальных объективов (в примерах SDK я не нашел)?

Посмотрел я их SDK (sourceforge.net/projects/hisi/files/SDK/Hi3516/). Ядро там к сожалению старое (3.4) - придется сильно патчить wifi-стек либо использовать только как камеру.

Про USB-OTG (чтобы подключить к другой машине через usbnet) я в документации не увидел. Остается только ethernet (4 провода + 2 питания) для соединения с внешним миром.
Если напрямую в камере цеплять wifi карту (там вроде есть usb host), то наверное будет работать, но проводов (с учетом телеметрии и RC-out) нужно будет вести целый жгут (для стационарной камеры подойдет, а для карданного подвеса уже многовато)

lelik:

Oops, я его даже не глядел. Попробую сегодня.

Я ковырялся в прошивке IP-камеры на Hi3516, это arm, тулчейн к нему есть, спеки есть, открытый SDK с примерами использования энкодера есть. На плате разведено все, что надо - uart для телеметрии, usb для свистка. Простор для творчества.

Ну если цель снимать на флешку внутри камеры, то подойдет любая (хоть зеркалка) с avout или hdmi + конвертер в h264 (бывают, правда я не видел сильно компактных).
Ну а если надо гнать видео на землю в realtime, то тут без вариантов - надо делать свою камеру. Но это уже требует не любительских бюджетов.

kostyamat:

Очень уж мне сабж интересен, но с пи камерой интерес уходит в ноль. Мне хорошая съёмочная камера нужна в 4К желательно.

lelik
svpcom:

И что получилось?

Да ничего пока не получилось. Прицепил uart, увидел u-boot, отложил на долгие зимние вечера (да и то если будет нужда).

kostyamat
svpcom:

Я пробовал заставить xiaomi yi отдавать видео через usb. Без sdk это сделать не получается. В линуксе там невозможно сделать даже usbnet.

Хорошо, а как на счёт novatek?www.goprawn.com/forum/…/2878-novatek-sdk

Lazy
kostyamat:

Хорошо, а как на счёт novatek?

Займитесь, сделайте, опубликуйте результаты. В чём проблема?

kostyamat
Lazy:

Займитесь, сделайте, опубликуйте результаты. В чём проблема?

А вы, батенька, смотрю так по теме, местный тролль?
Был бы я программистом, так бы и сделал. Тем более что на моем веку были собранные мной специализироыанные дистры для медиабоксов. Но увы, мое программирование заканчивается на простенький скрипт для sh, или ардуинкой светодиоды позажигать (утрирую конечно, но реальность не далека).

Lazy
kostyamat:

Но увы

Вот и сидите молча. 😃 И ждите, пока умные сделают и быть может поделятся.

lelik
kostyamat:

Тем более что на моем веку были собранные мной специализироыанные дистры для медиабоксов

Ну а во всей этой бодяге ничего другого и не надо, софт весь написан, осталось собрать под нужный камень, написать тот самый скрипт на sh и запаковать в соответствии.

kostyamat
Lazy:

Вот и сидите молча. 😃 И ждите, пока умные сделают и быть может поделятся.

Ясно, я не ошибся в вас, и вашей ролью в этой теме. 😉

LLC

Подскажите, с Runcam split 2 можно вывести HD на данные передатчики?

Lazy
kostyamat:

я не ошибся в вас

Я очень редко разочаровываю ожидания определённой части публики…

LLC:

Подскажите

Вполне.
RunCam по WiFi передаёт картинку, Малинка её по WiFi ловит, обрабатывает и отправляет на землю. 😃

svpcom

Ну не знаю как RunCam, а вот например Xiaomi Yi выдавал через wifi картинку с жутким лагом (около секунды вроде).
Плюс он будет забивать эфир (в диапазоне 2.4 всего 3 непересекающихся частотных канала). Придется ставить usb hub (если нет встроенного) и ставить еще один wifi свисток на прием этого потока. Ну и у семейства RPI usb шина довольно тормозная.

Lazy:

RunCam по WiFi передаёт картинку, Малинка её по WiFi ловит, обрабатывает и отправляет на землю.

lelik
svpcom:

Плюс он будет забивать эфир

А самое главное - к обсуждаемому здесь проекту все это не имеет ни малейшего отношения 😦

Lazy
lelik:

А самое главное

А шо, здесь разве не марксистский творческий кружок по интересам?!

Glinco

А вундервафли заведомо адски тормозящие предлагать - это внеклассная работа? 😃)

lelik

Вопрос знатокам задает мальчик Леша из Москвы: недостаток FEC-пакетов абсолютно фатален для восстановления блока или есть какие-то нюансы?

И да, в коде wifibroadcast присутствует почти в 100% случаев задержка на 1 кадр, а это от 16 до 33 мс.

svpcom

Если это стандартный Рид-Соломон (n, k), то можно потерять любые n - k пакетов и декодировать блок. В данном случае можно потерять все fec пакеты так как их как раз n - k.
За ez-wifibroadcast не скажу, но я у меня кодируются так: k пакетов с данными и следом n - k с FEC’ом.

lelik:

Вопрос знатокам задает мальчик Леша из Москвы: недостаток FEC-пакетов 100% фатален для восстановления блока или есть какие-то нюансы?

Ну вот поэтом я и написал свою реализацию 😃
У меня если пакеты идут без дырок, то они сразу отправляются на выход. А конца блока дожидается если только кто-то по пути потерялся.

lelik:

И да, в коде wifibroadcast присутствует почти в 100% случаев задержка на 1 кадр, а это от 16 до 33 мс.

lelik

Я как бы про Рида с Соломоном слышал. Просто в случае wifibroadcast используются и битые (с плохим crc) fec-пакеты в том числе, что меня смутило. Про задержку: передатчик ждет заполния входного буфера и в случае конца кадра не на его границе будет ждать начала следующего (те самые 1000/fps мсек).

svpcom

Как уже говорилось - оригинальный wifibroadcast имеет кучу спорных решений в своей архитектуре. Зачем получать битые пакеты и в потом пихать их в FEC (если fec всеравно починит блок если есть k пакетов), а вот проблем с целым блоком мусора (если получено ровно k пакетов и один из них битый) оно доставит. Равно как и шифровать такой поток не имеет смысла.
Про задержки: если получать на вход не byte-stream, а udp пакеты, при передаче пакет сразу уходит в эфир без задержек. При приеме пакета, входящего в блок FEC, его можно сразу же передать видео кодеку не дожидаясь конца блока, если до него (с начала блока) были получены все предыдущие пакеты. Так что тут задержка будет не нулевой, если только произошла потеря пакетов в блоке.

lelik:

Я как бы про Рида с Соломоном слышал. Просто в случае wifibroadcast используются и битые (с плохим crc) fec-пакеты в том числе, что меня смутило. Про задержку: передатчик ждет заполния входного буфера и в случае конца кадра не на его границе будет ждать начала следующего (те самые 1000/fps мсек).

lelik
svpcom:

имеет кучу спорных решений в своей архитектуре

Там куча костылей, написанных ногами, а не спорных архитектурных решений.

svpcom:

Зачем получать битые пакеты

Ну, принять все пакеты ты обязан и никак по другому. В оригинальном коде (даже не бортека, а бенефитива) в случае необходимости коррекции используются fec-и с невалидной CRC. Какой в этом смысл - я не понимаю.

Использование UDP - на любителя, можно захватывать кадр через V4L и оперировать уже им, но необходимость ухода от потока к кадрам - факт.