Camkit 树莓派视频传输,使用分析

本文介绍了如何使用开源库Camkit在树莓派上实现双摄像头视频流的传输。通过v4l2打开摄像头,建立UDP套接字连接,配置转换、编码和打包处理,然后在循环中捕获图像并交替发送两个摄像头的视频流。代码虽然简单,但实现了所需功能。
摘要由CSDN通过智能技术生成

上网找了一个开源的库,是Camkit 一个开源的C语言库,支持单个摄像头发送RTP包视频流。

具体可以参考github文档:https://git.oschina.net/andyspider/Camkit

自己的好奇,希望在树莓派上使用两个摄像头,参考了库里面的simple_demo代码后,自己写了传输两个摄像头视频流的demo

先讲讲思路,比较简单,首先理由v4l2打开pi上的两个摄像头(需要注意的是,usb摄像头的设备位置会经常变动,有时候是video0 和video1 有时候又是video0 和video1,怎么回事,我也还没弄明白,但是先这样用着,可以用 ls /dev | grep video* 查询一下他们的名字,然后对应修改就可以了)

接着,打开两个udp socket的连接

后面打开convert handle,encode handle,pack handle;

接着设置他们的参数。

到这里,所有准备工作已经做完

接着就是一个loop 开始捕获图片,把捕获的图片转换为YUV420,获取h264 头,打包,发送头,编码转换为YUV420的图片,打包,发送。done


因为这里是两个摄像头,因此就每个摄像头交替完成上述的loop的过程!


下面附上代码(写的菜,不要介意!)


#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <linux/videodev2.h>
#include <pthread.h>
#include "camkit.h"

#define WIDTH 352
#define HEIGHT 288
#define FRAMERATE 10


// set paraments
U32 vfmt = V4L2_PIX_FMT_YUYV;
U32 ofmt = V4L2_PIX_FMT_YUV420;

char *deviceOne = "/dev/video2";
char *deviceTwo = "/dev/video3";

char *oneIp = "192.168.199.219";
int onePort = 8888;
int tw
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值