视频+直通¶
这个工程将摄像头接入 FPGA,然后将视频流数据不加任何处理传至 HiLinux,HiLinux 再传至 PC,PC 在屏幕上持续显示摄像头的画面。基于 Vivado 工程 pcie703SdiCameraDDRDemo。
摄像头¶
使用的摄像头为 HD-SDI 数字高清彩色方型摄像机,输出视频 PAL-1080P25帧每秒。
摄像头有三个接口,分别是:
- 红色 POWER
- 电源
- 接 DC12V 1A
- 绿色 HD-SDI
- HD-SDI 高清数字接口
- BNC 母接头
- 黄色 VIDEO(不使用)
- CVBS 模拟输出(符合 SMPTE 292M 标准)
- BNC 母接头
确定摄像头正常工作(非必需)¶
摄像头的绿色线为 BNC 母头,因此可以选取 BNC 公头转 BNC 公头的数字线缆 接入一个 SDI 转 HDMI 的转换器,然后直接使用 HDMI 双头线接入电视。
没有电视的话可以购买一个视频采集卡,将 HDMI 插入采集卡,再用采集卡接入电脑,使用电脑上的录制软件(如 OBS),选择输入源。
旋转摄像头调整焦距,查看到摄像头画面即说明摄像头正常工作。
接入板子¶
板子上的视频输出接口为 SMA 母头,因此最简单的接入方式是购买一个 SMA公 转 BNC公 (SMA/BNC-JJ) 的接头,将摄像头连接至板子即可。
NIPC-5 开发板接口¶
- FPGA
- 3G-SDI 输入 x 8(
IN0
/IN1
/IN2
/IN3
/IN4
/IN5
/IN6
/IN7
) - 3G-SDI 输出 x 2(
OUT0
/OUT1
)
- 3G-SDI 输入 x 8(
- ARM
- HDMI x 1
- NET x 2(
NET
)
单摄像头直通¶
框图¶
flowchart LR
I00[SDI 相机\nPAL 1080p25] -- BNC母 / BNC公 --> I01[转换器\nBNC 转 SMA] -- IN0\nSMA公 / SMA母\n原始视频流输入 --> FPGA{FPGA\nBT1120_1080P_25Hz}
FPGA -- OUT0\nSMA母 / SMA公\n原始视频流输出 --> O00[转换器\nSMA 转 BNC] -- BNC公 / BNC母 --> O01[转换器\nSDI 转 HDMI] -- HDMI母 / HDMI双头线 / HDMI母 --> O02[视频采集卡] -- USB口 --> O03{PC} -- OBS --> 屏幕
FPGA -- DMA\nAxiMM --> ARM{ARM} -- 将每帧图像编码为PNG --> PNG -- TCP传出\n一次传输传一帧 --> O10{PC}
O10 -- Flutter\n按照顺序显示 --> O12[屏幕]
注意¶
- 从 OUT0 输出的视频流用于调试。
- 视频流可以被理解为时间上连续的多张单帧图像,也就是暂时不考虑视频编码。
- JPEG 的编码压缩率应该可根据网络传输速率选择。
- 现阶段只考虑单 PC 查看摄像头实时的内容,不考虑单对多的直播。
文档¶
主要需要看 SMPTE SD HD 3G-SDI 3.0.pdf。
双摄像头直通¶
- 将上面的架构添加一路摄像头即可。SMA 射频输出口共两个,提供两个摄像头的直通视频流供调试使用。
- 如果两路视频传回 PC 使用同一个端口,那么应该在 ARM 端将两帧图像合二为一。
- 如果两路视频使用不同的端口,Flutter 应该添加按钮用来添加或删除视频流显示面板,每路视频选择各自的端口和存储路径。