Я разработал свой собственный конвертер аналогового видео в USB. Этот конвертер основан на TI TVP5150AM и Empia EM2860. Вскоре конвертер работает, как показано на схеме ниже.
+---------+ ITU-R +--------+
Analog | | BT.656 | |
Video +--+ TVP5150 +--------+ EM2860 +---+ USB
| | | |
+---------+ +--------+
Поскольку я использую Linux Mint с версией ядра 4.4, драйверы для обоих чипов уже включены. Хорошо, что аппаратное обеспечение распознается, и я могу получать с него данные. Однако данные не такие, как ожидалось.
Я вставил аналоговое тестовое изображение. Кадры, которые я могу захватить, выглядят так: необработанный захваченный кадр ,
Команда, которую я использую для захвата этих необработанных кадров:
$ ffmpeg -y -i /dev/video0 -frames:v:0 100 -c:v:0 ppm frame%03d.ppm
(обратите внимание, что я получаю такие же кадры, просто открывая устройство с mplayer
, Эта команда предназначена только для захвата отдельных кадров)
Вопрос в том, что я действительно не знаю, как отладить эту проблему. Похоже, что данные поступают, но каким-то образом повреждены.
Следующие вещи я уже разобрался:
- Аппаратное обеспечение работает нормально. TVP5150 настраивается драйвером, как и ожидалось. Интерфейс ITU-R BT.656 имеет очень хорошие сигналы. В более ранней версии оборудования у меня были проблемы с отражениями в этом интерфейсе. В то время ни один кадр не был захвачен.
mplayer
падает много кадров.ffmpeg
указывает на множество повторяющихся кадров. Оба имеют примерно одинаковое соотношение (4/5 кадров отброшены или указаны как дубликаты)
Может ли кто-нибудь указать мне направление для устранения этой проблемы?
EDIT1:
Похоже, что настройки TVP5150 не верны. Я нашел одну настройку регистра, которая позволила мне получить цвет: необработанная захваченная рамка с цветом
EDIT2:
Мне пришлось явно установить драйвер для NTSC и использовать очень странное разрешение (640x320), но кадры теперь фиксируются правильным образом.