×

高速实时视频流传输开源项目

消耗积分:0 | 格式:zip | 大小:0.02 MB | 2023-07-11

王璐

分享资料个


项目设计阶段

1)移植和定制Zybo Z7-20 Base-Linux FPGA设计到我们的开发板。完全的

该阶段的输出是获取 FPGA 部分的比特流,未来将与 Linux 映像一起下载到开发板。

图片中呈现的所有设计:

 

 
 
 
 
pYYBAGOroV2AZm8XAAGAxuJOOr4689.png
 
1 / 2
 

 

2) 基于Xilinx Petalinux 工程构建自定义Linux 发行版,测试Linux 发行版与摄像头的连接。完全的

该发行版根据我们的需要进行了调整,并包含许多将来会有用的软件包。例如,Yavta 和 FFmpeg 让我们有机会检查 Linux 是否支持通过 FPGA 部分在相机和 ARM 内核之间进行互连。此外,该软件用于从 Pcam 相机模块接收一些帧。我们获取的第一帧(使用 FFmpeg)如下图所示:

 

 
pYYBAGOroWaAat7EAAD02l6sqsQ101.png
 

 

我们使用 Yocto(以及 Xilinx 和 Digilent 提供的元层和 BSP)来构建我们的自定义嵌入式 Linux 发行版。Aravis 库是使用 Yocto 构建的,并在相应的 aravis-meta 元层的帮助下添加到我们的发行版中。该层基于开源 Github 项目 ( https://github.com/astarasikov/meta-aravis )。该层还可用于为 OpenEmbedded/Angstrom Linux 发行版构建 Aravis,以及所需的 Gstreamer 插件。

添加了 bitbake 配方和补丁以构建 Aravis 库。

作为那个阶段的结果,我们构建了一个 Linux 发行版映像,其中 Aravis 作为一个静态库 (libaravis.so) 及其所有依赖项。

 

3) 修改fakecam模块并在PC上测试。完全的

部分源码:

static void start_capturing(void)
{
	unsigned int i;
	enum v4l2_buf_type type;
	for (i = 0; i < n_buffers; ++i) {
		struct v4l2_buffer buf;
		CLEAR(buf);
		buf.type   = V4L2_BUF_TYPE_VIDEO_CAPTURE;
		buf.memory = V4L2_MEMORY_MMAP;
		buf.index  = i;
		if (-1 == xioctl(fd, VIDIOC_QBUF, &buf))
			errno_exit("VIDIOC_QBUF");
	}
	type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
	if (-1 == xioctl(fd, VIDIOC_STREAMON, &type))
		errno_exit("VIDIOC_STREAMON");       
}
  
void
fill_v4l_callback (ArvBuffer *buffer, void *fill_pattern_data,
				    guint32 exposure_time_us,
				    guint32 gain,
				    ArvPixelFormat pixel_format)
{
	double  pixel_value;
	double  scale;
	guint32 width;
	guint32 height;
	if (buffer == NULL)
		return;
	if (pixel_format != ARV_PIXEL_FORMAT_MONO_8)
		return;
       width = buffer->priv->width;
       height = buffer->priv->height;
}

 

 

 
 

 

 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !