v4l2与h264视频编码应用
文章平均质量分 79
v4l2是Video for Linux Version Two的缩写。它是Linux下关于视频采集相关设备的驱动框架,为驱动和应用程序提供了一套统一的接口规范。本系列博客主要介绍v4l2与h264视频编码的应用,实现从摄像头采集数据到编码输出视频流的整个过程。
li_wen01
liwen01
展开
-
V4L2视频采集与视频编码学习目录及总结
我们现在平时所看到的视频,从摄像头数据采集到最后显示频显示出来,初略的归纳经过了下面的几个环节:摄像头采集图像数据->将图像数据进行压缩->将压缩的图像数据封装成视频格式。视频格式文件->去除视频格式封装->解压缩图像数据->得到一帧图像的数据->显示器显示图像。 这里只介绍摄像头数据的采集以及将采集到的数据压缩成视频流的一些操作。 摄像头输...原创 2018-04-24 11:14:17 · 6637 阅读 · 1 评论 -
V4L2视频采集与H264编码1—V4L2采集JPEG数据
最近在做视频编码,经过一段时间的折腾,终于可以把V4L2采集到的图片数据编码成H264视频,并且成功将工程移植到了ARM开发板上。无奈开发板性能太低,每秒钟只能编码一帧数据,查看CPU已经跑到100%,计划换另外一种编码方式,先把遇到的问题和开发过程记录下来,做个备忘,也可以给大家一个参考。 我的整个开发流程是: (1)通过V4L2采集摄像头数据,保存成图片 (2)通过V4...原创 2018-04-24 11:01:53 · 10036 阅读 · 16 评论 -
V4L2视频采集与H264编码2—v4l2采集YUV数据
在上一篇中因为是在PC机上使用的USB摄像头只能支持GPEG image格式,但是H264编码需要使用YUV数据,所以我找了个ARM开发板来做测试。本以为代码从PC机移植到开发板是很简单的一个事,谁知因为平台或是V4L2底层驱动的不同,最终也是花了九牛二虎之力才把问题给解了。话不多说,直接上代码:/*=============================================...原创 2018-04-24 11:01:59 · 19263 阅读 · 13 评论 -
V4L2视频采集与H264编码3—X264移植
计划将YUV数据编码成H264视频,中间需要用到X264编码器。X264编码器的源码分析参考了雷神的博客x64源码分析,这里将介绍如何将x264编码库移植到ARM开发板上。最新的x264代码可以在x264源码下载地址下载,如果是在linux环境下,可以使用下面命令直接克隆一份代码# git clone http://git.videolan.org/git/x264.git 如果...原创 2018-04-24 11:02:06 · 7119 阅读 · 11 评论 -
V4L2视频采集与H264编码4—X264编码H264视频
在我们的视频采集传输设备中,先是通过摄像头采集颜色数据组成一张画面,也就是我们常说的一帧。数据格式可以是YUV数据也可以是RGB数据,他们之间可以通过计算转换。我们看到的视频其实就是由一帧一帧的画面组成,其速度一般是25帧/秒,电影《比利林恩的中场战事》采用的120帧/秒的技术。如果直接将摄像头采集到的颜色编码成视频,那么视频要求的带宽是非常非常高的。以30万像素摄像头YUV420格式来计...原创 2018-04-24 11:04:13 · 6356 阅读 · 10 评论 -
V4L2采集YUYV数据—X264编码H264视频实例
前几天在网上买个罗技的C270摄像头,它支持YUYV(YUV422)和JPEG数据输出。它规格书上写的是支持HD720P(1280*720像素),在实际的调试过程中,我使用该分辨率会导致数据采集过慢。这里需要注意一下,罗技的摄像头C270在有些虚拟机上使用是有异常的,有些是不能映射到虚拟机上,有些是映射过去操作非常缓慢。因为之前在自己的开发板上调试过YUV420的摄像头,在此基础上改为YU...原创 2018-04-24 11:02:31 · 9920 阅读 · 30 评论 -
JPEG数据转YUV数据应用实例
在很多USB摄像头中,质量好点的可以输出很多种数据格式,也有一些只能设置MJPEG模式输出JPEG格式数据,比如我从师弟那顺过来的这颗,哈哈便宜没好货。JPEG数据如果是作为本地存储是没有什么问题的,它在摄像头中已经经过了一次压缩。但是,如果你是需要做视频流,直接使用JPEG格式数据,那么传输的码流就会很大,不利于传输。所以现在基本上所有的视频都是有经过压缩处理的。常见的压缩是H264格式...原创 2018-04-24 11:05:08 · 12282 阅读 · 8 评论 -
YUV422转换YUV420应用实例
在上一篇文章中JPEG编码学习—JPEG数据转YUV数据应用实例已经可以将v4l2 采集到的JPEG数据转换为YUV422格式,但是我们有时候需要使用其他格式的数据,比如用YUV420作为H264的输入数据格式。做数据格式转换,首先需要明白各种数据类型的采样分布格式。如下图:我们在上一篇中通过JPEG解码转换过来的是YUYV数据格式(YUV422),他的数据分布是:现在我们需要把YUYV...............原创 2018-04-24 11:05:16 · 15901 阅读 · 6 评论 -
使用avilib封装MJPEG数据应用实例
avilib 是一个很小的封装模块,它可以将一些图片数据封装成视频格式。在一些比较差的摄像头中,他们只支持V4L2_PIX_FMT_MJPEG 输出JPEG格式数据,以这种格式输出的数据,并不是标准的JPEG图片数据。因此,如果只是把MJPEG输出的所有文件存成一个文件,那么这个文件其实并不能播放。据网上的一些资料介绍,说是缺少Huffman 表,需要自己手动插入一个Huffman表。在一.........原创 2018-04-24 11:04:40 · 5462 阅读 · 12 评论