FFMPEG读取v4l2并显示!

2022-11-28 17:35:46 浏览数 (2)

前言:

最近问v4l2的人挺多的,等忙完这段时间,后面有空研究一下。今天给大家分享一些应用demo;

开源DEMO介绍:这个项目是利用FFMPEG读取虚拟机的v4l2摄像头设备,并利用SDL播放器显示出来,下面这个是整个项目的框图:

运行的效果如下:

下面我们来看看代码的分析:

  • Main函数的分析:

我们来看看main函数的代码,main函数的代码很简单,基本上是一些函数和线程的初始化,在这里我们分别初始化了AVFifoBuffer、摄像头读取线程、SDL显示线程三个部分。

  • read_camera_thread(摄像头读取线程):

上面代码就是read_camera_thread的代码、这里的功能主要有几个,首先是利用FFMPEG的API:

代码语言:javascript复制
avformat_open_input

去打开V4L2的摄像头设备,我们这里的设备节点是/dev/video0。打开设备之后,利用av_read_frame API进行每一帧摄像头数据的读取。读取完成之后,进行格式转换成YUV420P,转换完成之后把YUV420P的数据存储到AVFifoBuffer队列。

  • sdl_show_thread(SDL显示线程):

上面则是,sdl_show_thread线程的代码。这个代码的主要功能是通过av_fifo_generic_read这个API拿到AVFifoBuffer队列的YUV数据,并利用SDL API把YUV数据刷新到播放器上面.

0 人点赞