1

Я пишу приложение (работающее на ARM Ubuntu), которое должно уметь обрабатывать изображения в видеопотоке с веб-камеры. Самый простой способ получить данные - через поток вывода процесса, поэтому я планирую разместить дочерний процесс, выполнить команду и использовать вывод. Мой текущий план - использовать FFMPEG, но я могу использовать любой инструмент командной строки, который работает на ARM. На мой вопрос есть две части:

  1. Какую команду FFMPEG (или другую утилиту, если есть лучшую) мне нужно использовать из командной строки, чтобы получить поток пиксельных данных с веб-камеры?
  2. В каком формате будет выводиться (предпочтительно только данные RGB, без кодировок или заголовков)? Мне нужно разобрать его в моем приложении, и мне нужно знать формат кодировки.

Будем благодарны вам за любую информацию!

2 ответа2

1

С FFmpeg и video4linux2 вы можете получить практически любой вход с веб-камеры. Убедитесь, что вы используете последнюю версию ffmpeg со страницы загрузки или самостоятельно. Размеры и частоты кадров вашей камеры можно проверить с помощью:

v4l2-ctl --list-formats-ext

Например, если вы узнали, какую частоту кадров и размер изображения обеспечивает ваша веб-камера:

ffmpeg -f video4linux2 -r 25 -s 640x480 -i /dev/video0 \
-c:v rawvideo -f rawvideo -pix_fmt yuv420p -

Это позволит захватывать видео со скоростью 25 кадров в секунду с разрешением 640 × 480 пикселей с камеры в /dev/video0 и выводить необработанные кадры YUV, закодированные в формате плоских пикселей YUV 4:2:0, в стандартный вывод. Кодер и формат rawvideo позаботятся об этом. Там не будет заголовков.

Что вы можете изменить здесь:

  • Установите другую частоту кадров или -size.

  • Здесь - в конце отправляет данные на стандартный вывод, но вы также можете выбрать файл, если хотите.

  • Чтобы увидеть, какие другие форматы пикселей доступны, запустите ffmpeg -pix_fmts . Их порядок байтов объяснен на fourcc.org . Если вам действительно нужны данные RGB (хотя я сомневаюсь, что это выходы вашей камеры по умолчанию), вы можете использовать, например, -pix_fmt rgb24 .

-1

Обязательно проверьте параметры командной строки VLC. Я не очень знаком с его выходными потоками, но я, кажется, читал, что он может делать в значительной степени то, что вы пытаетесь сделать.

Домашняя страница VLC

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .