我设计了自己的模拟视频到 USB 转换器。此转换器基于 TI TVP5150AM 和 Empia EM2860。简而言之,转换器的工作原理如下图所示。
+---------+ ITU-R +--------+
Analog | | BT.656 | |
Video +--+ TVP5150 +--------+ EM2860 +---+ USB
| | | |
+---------+ +--------+
由于我使用的是内核版本为 4.4 的 Linux mint,因此已包含两种芯片的驱动程序。好消息是硬件已被识别,我可以从中获取数据。然而,数据并不像预期的那样。
我放入了一张模拟测试图像。我能捕捉到的帧如下:原始捕获帧。
我用来捕获这些原始帧的命令是:
$ 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 的帧被丢掉或表示为重复)
有人可以指出我调试这个问题的方向吗?
编辑1:
看起来 TVP5150 的设置不正确。我发现一个寄存器设置使我能够获得颜色:带有颜色的原始捕获帧
编辑2:
我必须将驱动程序明确设置为 NTSC 并使用非常奇怪的分辨率 (640x320),但现在可以以正确的方式捕获帧。