Я пытаюсь записать видео 1080 @ 30FPS с веб-камеры Logitech C920. Просто, да? Ну, судя по всему, нет.
Сначала я попробовал на своем десктопе с 16.04, используя встроенное в Ubuntu приложение Cheese. Предварительный просмотр транслируется отлично на 30FPS, но как только я начинаю запись, частота кадров резко падает, вероятно, до ~15FPS (точно не знаю, так как Cheese не предоставляет счетчик FPS).
Затем я снова попробовал на своем десктопе с 16.04, используя guvcview
. К сожалению, версия в репозиториях по умолчанию для 16.04, 2.02
, имеетошибкачто заставляет его записывать видео как один неподвижный кадр. Ааааа... поэтому я установил его 2.05
из неофициального PPA. Это решило вышеупомянутую ошибку, однако, когда я перехожу к записи видео (используя H.264 из аппаратного кодировщика камеры), первая секунда или около того видео записывается отлично, но затем частота кадров падает до 3-5 FPS.
Наконец, чтобы убедиться, что проблема не только в моем настольном компьютере, я установил на свой ноутбук guvcview
версию 2.05
18.04, но снова, когда я начинаю записывать видео (используя H.264 с аппаратного кодировщика камеры), первая секунда или около того видео записывается отлично, но затем частота кадров падает до 3–5 кадров в секунду.
Так что, черт возьми, здесь происходит? Это проблема libuvc
совместимости с Logitech C920? Я знаю, что это не проблема недостаточной мощности оборудования, так как у меня 6-ядерный процессор AMD в моем настольном компьютере и четырехъядерный 3-го поколения i7 в моем ноутбуке.
решение1
Я понял, как заставить это работать с guvcview
.
я нашелэта почтав котором упоминалось, что проблема была в guvcview
перекодировании потока с камеры. Почему это вызвало ужасное падение частоты кадров, для меня загадка, учитывая, что загрузка моего процессора была крайне низкой...
В любом случае, исправление заключается в том, guvcview
чтобы использовать необработанный поток с камеры:
Обратите внимание, что формат, в который вы указываете программе перекодировать (или нет), совершенно отличается от формата, который вы указываете ей транслировать с камеры:
Также, с другой стороны, похоже, что либо я понятия не имею, как настраивать огромное количество параметров H.264 в guvcview
, либо аппаратный кодер H.264 в Logitech C920 просто не так уж хорош. Я записал клип 1080p30 в MJPEG (что дало около 60 Мбит/с данных) и перекодировал его в 10 Мбит/с H.264 с помощью Veags Pro на моем компьютере с Windows, и результат оказался намного лучше потоковой передачи с веб-камеры напрямую в H.264, также на скорости 10 Мбит/с.