LINUX.ORG.RU
ФорумTalks

вебка с mjpeg

 


0

1

Подскажите вебку с нормально работающим аппаратным кодированием в mjpeg. Желательно ценой до штукаря рублей.

★★

Последнее исправление: Klymedy (всего исправлений: 1)

любая китайская камера за 5 баксов гонит наружу mjpeg. Что понимается под «Нормально работающим»?

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от AiFiLTr0

Logitech c210 - при запуске motion посыпает сообщениями вида

Corrupt JPEG data: 2 extraneous bytes before marker 0xd6
Corrupt JPEG data: 1 extraneous bytes before marker 0xd2
Corrupt JPEG data: 2 extraneous bytes before marker 0xd4
Corrupt JPEG data: 2 extraneous bytes before marker 0xd7
Corrupt JPEG data: 1 extraneous bytes before marker 0xd0
Corrupt JPEG data: 1 extraneous bytes before marker 0xd6
и не кажет картинку. mjpeg-streamer картинку кажет, но большая часть кадров «битые». Насколько я понял погуглив, это аппаратный косяк данной модели.

A4tech PK-333E и PK-836FN - не умеют в mjpeg. Или я неправильно понимаю это

[1] Config palette index 2 (MJPG) doesn't work.
[1] Supported palettes:
[1] 0: YUYV (YUV 4:2:2 (YUYV))

Нужна камера корректно жмущая джипеги, с фпс не проседающим хотя бы ниже 10 при плохом освещении.

Lonli-Lokli ★★
() автор топика
Ответ на: комментарий от Lonli-Lokli

Дай сюда дамп luvcview с поддерживаемыми камерами форматами стриминга.
И названия Logitech и A4tech мне не говорят совершенно ничего. Ты лучше скажи на каком они чипе сделаны.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от AiFiLTr0

У меня 5баксовая с DX (самая дешевая) выдавала валидный mjpeg, только его и умела. но там 352х288 максимум и крайне хреновая матрица. Думаю более дорогие (на 1.3 реальных мегапикселя) оттуда же модели будут номрально выдавать.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от firestarter

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

Lonli-Lokli ★★
() автор топика
Ответ на: комментарий от AiFiLTr0

PK-836FN

 luvcview -d /dev/video1 -l -L
luvcview 0.2.6

SDL information:
  Video driver: x11
  A window manager is available
Device information:
  Device path:  /dev/video1
{ pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' }
{ discrete: width = 640, height = 480 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 352, height = 288 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 320, height = 240 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 176, height = 144 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 160, height = 120 }
	Time interval between frame: 1/30, 1/15, 
{ pixelformat = 'RGB3', description = 'RGB3' }
{ discrete: width = 640, height = 480 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 352, height = 288 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 320, height = 240 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 176, height = 144 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 160, height = 120 }
	Time interval between frame: 1/30, 1/15, 
{ pixelformat = 'BGR3', description = 'BGR3' }
{ discrete: width = 640, height = 480 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 352, height = 288 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 320, height = 240 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 176, height = 144 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 160, height = 120 }
	Time interval between frame: 1/30, 1/15, 
{ pixelformat = 'YU12', description = 'YU12' }
{ discrete: width = 640, height = 480 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 352, height = 288 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 320, height = 240 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 176, height = 144 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 160, height = 120 }
	Time interval between frame: 1/30, 1/15, 
{ pixelformat = 'YV12', description = 'YV12' }
{ discrete: width = 640, height = 480 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 352, height = 288 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 320, height = 240 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 176, height = 144 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 160, height = 120 }
	Time interval between frame: 1/30, 1/15, 
Bus 001 Device 014: ID 0ac8:3420 Z-Star Microelectronics Corp. Venus USB2.0 Camera
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 ?
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x0ac8 Z-Star Microelectronics Corp.
  idProduct          0x3420 Venus USB2.0 Camera
  bcdDevice            1.fa
  iManufacturer           1 A4 tech Corp.
  iProduct                2 A4 tech USB2.0 Camera
  iSerial                 0 
  bNumConfigurations      1

Lonli-Lokli ★★
() автор топика
Ответ на: комментарий от Lonli-Lokli

А вообще попробуй пощупать утилитами из v4l-utilз камеру Вполне может оказаться, что не хватает пропускной усб, и оно выкидывает куски, для стриминга стандарт это позволяет.
соответственно, ниже разрешение/фпс могут помочь.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от AiFiLTr0

PK-333E

 luvcview -d /dev/video1 -L
luvcview 0.2.6

SDL information:
  Video driver: x11
  A window manager is available
Device information:
  Device path:  /dev/video1
{ pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' }
{ discrete: width = 640, height = 480 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 352, height = 288 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 320, height = 240 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 176, height = 144 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 160, height = 120 }
	Time interval between frame: 1/30, 1/15, 
{ pixelformat = 'RGB3', description = 'RGB3' }
{ discrete: width = 640, height = 480 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 352, height = 288 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 320, height = 240 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 176, height = 144 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 160, height = 120 }
	Time interval between frame: 1/30, 1/15, 
{ pixelformat = 'BGR3', description = 'BGR3' }
{ discrete: width = 640, height = 480 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 352, height = 288 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 320, height = 240 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 176, height = 144 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 160, height = 120 }
	Time interval between frame: 1/30, 1/15, 
{ pixelformat = 'YU12', description = 'YU12' }
{ discrete: width = 640, height = 480 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 352, height = 288 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 320, height = 240 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 176, height = 144 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 160, height = 120 }
	Time interval between frame: 1/30, 1/15, 
{ pixelformat = 'YV12', description = 'YV12' }
{ discrete: width = 640, height = 480 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 352, height = 288 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 320, height = 240 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 176, height = 144 }
	Time interval between frame: 1/30, 1/15, 
{ discrete: width = 160, height = 120 }
	Time interval between frame: 1/30, 1/15, 

Bus 001 Device 015: ID 0ac8:3450 Z-Star Microelectronics Corp. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 ?
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x0ac8 Z-Star Microelectronics Corp.
  idProduct          0x3450 
  bcdDevice            1.fa
  iManufacturer           1 A4 tech Corp.
  iProduct                2 A4 tech USB2.0 Camera
  iSerial                 0 
  bNumConfigurations      1

Lonli-Lokli ★★
() автор топика
Ответ на: комментарий от Lonli-Lokli

YUV то нормально пашет, вряд ли несжатая картинка требует меньшей пропускной способности.

Тогда да. Зависит от чипа, может на сжатии где боттлнек внутри возникает. Надо ковырять родной софт под говноось. Вполне может сказаться, что у них там есть софтовый обход баги, и это не обычный дроп плохих фреймов.
Инфа по lsusb бесполезно, так как вендоры перебивают дефолтные айдишники чипа на свои. Надо открывать корпус, смотреть маркировку, и курить google/wenku на предмет даташита. От туда и танцевать.

AiFiLTr0 ★★★★★
()

А что, написать простенький посредник при помощи v4l — проблема? УМВР!

// а вообще, убил бы гадов, которые придумали веб-камеры, отдающие mjpeg! С нормальными камерами как: захватываешь видео, обрабатываешь, отдаешь. А с этим говном еще и разжимать приходится. И сжатие с потерями…

Eddy_Em ☆☆☆☆☆
()
Последнее исправление: Eddy_Em (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

Спасибо кэп! На 5 фпс 320х240 проц загружается на 100%, поэтому ищется камера со встроенным сжатием. Возможно есть смысл гнать необработанные данные с камеры, но я понятия не имею с какой стороны за это хвататься.

Кстати, а можно ли под Линём получить доступ к железке удалённой машины аля План 9?

Lonli-Lokli ★★
() автор топика
Последнее исправление: Lonli-Lokli (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

На всякий случай уточняю, проц - Atheros AR7240@400MHz.

Lonli-Lokli ★★
() автор топика
Ответ на: комментарий от Lonli-Lokli

Ну если у тебя CPU mjpeg разжимает, то вполне 100% заюзает. По всем параметрам несжатое должно быть быстрее в плане работы, если только там не делается зачем-то преобразование цветового формата.
И это не h264, где можно заюзать motion vector'ы для облегчения задачи, каждый фрейм отедльный jpeg.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от AiFiLTr0

По всем параметрам несжатое должно быть быстрее в плане работы

А чего бы на эту тему почитать? Мне пока не попадалось ничего о передаче по сети сырых данных с камеры.

Lonli-Lokli ★★
() автор топика
Ответ на: комментарий от Lonli-Lokli

Кури доку v4l. По сути тебе камера может отдавать поток в нескольких форматах. Сжатые бывают ныне только mjpeg, камер с h264 я не встречал. Несжатые - это твои RGB3/BGR3 и т.п. кури комменты в хедерах v4l, там расписано в каком виде идут пиксели в каждом из этих форматов. Если совсем хочешь разобраться - раскури Video Demystified Handbook.

AiFiLTr0 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.