https://www.cnblogs.com/surpassal/archive/2013/03/11/zed_webcam_5.html
项目推荐:
https://github.com/fengbingchun/OpenCV_Test

MJPG只是对一帧一帧图片进行编码,编码效率只有10%。x264-snapshot提供了开源x264源代码,已经广泛用于嵌入式解决方案中。本小节将介绍x264-snapshot源码的配置,使用High版本、main版本对一个33M的测试视频进行编码,测试编码效率。

一、x264开源包获取

x264-snapshot提供了开源x264源代码,已经在X86和ARM架构下均已实现。linux下可以使用git获得最新的代码包

git clone git://git.videolan.org/x264.git

二、配置、安装x264-snapshot

下载到源码后,对其进行配置,以便在后续make时编译出zed上可以运行的可执行程序

1、解压源码包后,进入源码目录

./configure --host=arm-xilinx-linux-gnueabi --prefix=/opt/rcq --enable-shared --disable-asm

congfig之后,设定了host为arm-xilinx-linux-gnueabi,install路径是/opt/rcq

2、修改config.mak文件

针对gcc,需要修改config.mak文件

其中9、13、16、17、18行为修改后的。

SRCPATH=.
prefix=/opt/rcq
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
libdir=${exec_prefix}/lib
includedir=${prefix}/include
ARCH=ARM
SYS=LINUX
CC=arm-xilinx-linux-gnueabi-gcc
CFLAGS=-Wshadow -O3 -fno-fast-math  -Wall -I. -I$(SRCPATH) -std=gnu99 -fPIC -fomit-frame-pointer -fno-tree-vectorize
DEPMM=-MM -g0
DEPMT=-MT
LD=arm-xilinx-linux-gnueabi-gcc -o
LDFLAGS= -lm -lpthread
LIBX264=libx264.a
AR=arm-xilinx-linux-gnueabi-ar rc
RANLIB=arm-xilinx-linux-gnueabi-ranlib
STRIP=arm-xilinx-linux-gnueabi-strip
AS=
ASFLAGS= -DHAVE_ALIGNED_STACK=1 -DPIC -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8
RC=
RCFLAGS=
EXE=
HAVE_GETOPT_LONG=1
DEVNULL=/dev/null
PROF_GEN_CC=-fprofile-generate
PROF_GEN_LD=-fprofile-generate
PROF_USE_CC=-fprofile-use
PROF_USE_LD=-fprofile-use
default: cli
install: install-cli
SOSUFFIX=so
SONAME=libx264.so.129
SOFLAGS=-shared -Wl,-soname,$(SONAME)  -Wl,-Bsymbolic
default: lib-shared
install: install-lib-shared
LDFLAGSCLI =
CLI_LIBX264 = $(LIBX264)

3、make

完运行库的安装和成执行文件的生成

测试x264

将可执行x264和测试rcq.yuv文件拷贝到zed上,使用默认运行命令

./x264 rcq.yuv --input-res 640x480 -o rcq.flv

其中–input-res 640x480设定输入yuv视频帧的大小,rcq.flv是输出文件,可以设定为.mkv/.mp4/H264等。

可以使用最快编码方式,命令和参数如下

./x264 rcq.yuv --input-res 640x480 -o rcq.flv --no-8x8dct --aq-mode 0 --b-adapt 0 --bframes 0 --no-cabac --no-deblock --no-mbtree --me dia --no-mixed-refs --partitions none --rc-lookahead 0 --ref 1 --scenecut 0 --subme 0 --trellis 0

五、关于YUV420的格式说明

YUV格式有两大类:planar和packed。
对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。
对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。

一般的录像程序是先从摄像头得到yuv420 planar的数据,然后编码成h264格式 帧,最后存储成3gp/mpeg等格式的视频文件。

以720×488大小图象YUV420 planar为例,其存储格式是:
共大小为(720×480×3>>1)字节,分为三个部分:Y,U和V
Y分量: (720×480)个字节
U(Cb)分量:(720×480>>2)个字节
V(Cr)分量:(720×480>>2)个字节
三个部分内部均是行优先存储,三个部分之间是Y,U,V 顺序存储。
即YUV数据的0--720×480字节是Y分量值,
720×480--720×480×5/4字节是U分量
720×480×5/4 --720×480×3/2字节是V分量。

一副wh的yuv420图像数据的大小为wh*1.5。

4 :2: 2 和4:2:0 转换:

最简单的方式:
YUV4:2:2 —> YUV4:2:0 Y不变,将U和V信号值在行(垂直方向)在进行一次隔行抽样。
YUV4:2:0 —> YUV4:2:2 Y不变,将U和V信号值的每一行分别拷贝一份形成连续两行数据。

【Webcam设计】x264编码实现相关推荐

  1. (原创)基于ZedBoard的Webcam设计(二):USB摄像头图片采集+QT显示

    在(原创基于ZedBoard的Webcam设计(一):Zedboard上的USB摄像头(V4L2接口)的图片采集中,我们完成了ZedBoard上USB摄像头的单幅图片采集,采集到的图片是存储在文件系统 ...

  2. 基于ZedBoard的Webcam设计(二):USB摄像头图片采集+QT显示

    在(原创基于ZedBoard的Webcam设计(一):Zedboard上的USB摄像头(V4L2接口)的图片采集中,我们完成了ZedBoard上USB摄像头的单幅图片采集,采集到的图片是存储在文件系统 ...

  3. 【Android RTMP】RTMPDump 封装 RTMPPacket 数据包 ( 关键帧数据格式 | 非关键帧数据格式 | x264 编码后的数据处理 | 封装 H.264 视频数据帧 )

    文章目录 安卓直播推流专栏博客总结 一. x264 编码后的 H.264 数据帧 二. RTMP 协议中 关键帧 / 非关键帧 数据格式 说明 三. 判定 H.264 帧数据分隔符 四. 初始化 RT ...

  4. 【Android RTMP】x264 编码器初始化及设置 ( 获取 x264 编码参数 | 编码规格 | 码率 | 帧率 | B帧个数 | 关键帧间隔 | 关键帧解码数据 SPS PPS )

    文章目录 安卓直播推流专栏博客总结 一. x264 编码器参数设置引入 二. 获取 x264 编码器参数 三. 设置 x264 编码器编码规格 四. 设置 x264 编码器编码图像数据格式 五. 设置 ...

  5. x264编码参数大测试:10 trellis(1000Kbps)

    一.测试内容 测试方法-- x264编码参数大测试:索引贴 http://www.cnblogs.com/zyl910/archive/2011/12/14/x264_encode_param.htm ...

  6. X264编码流程详解(转)

    http://blog.csdn.net/xingyu19871124/article/details/7671634 对H.264编码标准一直停留在理解原理的基础上,对于一个实际投入使用的编码器是如 ...

  7. WebRTC VideoEngine超详细教程(三)——集成X264编码和ffmpeg解码

    转自:http://blog.csdn.net/nonmarking/article/details/47958395 本系列目前共三篇文章,后续还会更新 WebRTC VideoEngine超详细教 ...

  8. ffmpeg + x264 编码H264(x86+arm)

    一.x86-linux 1.  编译x264 我用的是目前最新版:x264-snapshot-20101130-2245.tar.bz2 ./configure --disable-asm mak ...

  9. 学习笔记(一)(x264编码流程)

    学习笔记(一)(x264编码流程) 作者 张士辉 11月 2, 2007 <script type=text/javascript></script> <script s ...

  10. ffmpeg使用x264编码的配置+ ffmpeg与 x264编码器参数完整对照表

    ffmpeg使用x264编码的配置+ ffmpeg与 x264编码器参数完整对照表 分类: 多媒体 2010-07-13 11:31 1072人阅读 评论(0) 收藏 举报 转载自:扶凯[http:/ ...

最新文章

  1. webpack 安装使用(1)
  2. R语言ggplot2可视化使用不连续的y轴、中断的Y轴来可视化数值分布差异很大的数据实战:把数据轴分为两个区间或者多个区间来匹配不同区间数据的可视化(因为有的数据可能10附近,有的数值可能1W附近)
  3. 人工智能热潮下,我们该如何紧跟科技脚步呢?
  4. silverlight 安全性错误
  5. python 解压zip文件_Python 解压缩文件详解
  6. 一、bootstrap4基础(布局系统、栅格系统、显示与隐藏、对齐与排列、内容排版、代码与图文、表格样式、颜色和边框、工具类)
  7. 归并排序法计算逆序对数
  8. Java常用设计模式总结及应用场景分析
  9. 7. ShowWindow
  10. 思博伦Avalanche中的Load类型定义_双极未来
  11. C++自学教程第一课——你好世界,我是柠檬鲸。
  12. SSM+JSP实现企业管理系统(OA管理系统源码+数据库+文档+PPT)
  13. 哈尔滨工业大学计算机考研复试分数线,34所自划线院校2021考研复试分数线-2021哈尔滨工业大学考研分数线已公布...
  14. 微服务——服务依赖与治理-服务调用异常、超时,id生成
  15. Exchange 2010 SP1个人邮件归档配置
  16. libusb-win32的使用方法
  17. boat启动器 minecraft_我的世界boat启动器下载,我的世界boat启动器数据包下载链接 v1.20.5.109731-手游汇...
  18. 十八掌全套大数据课程免费送
  19. 外贸企业邮箱如何选择?
  20. 为什么轻量应用服务器价格那么低,对比云服务器CVM性能有哪些差别?

热门文章

  1. 【ArcGIS|空间分析】求年度NDVI最大值图像和NDVI最大值出现日期图像
  2. 利用composer搭建PHP框架(三.模板引擎)
  3. 微信开发:getLocation签名失效的问题
  4. 2 s锁是什么_使用 python 实现简单的共享锁和排他锁
  5. python去掉最高分和最低分_【Excel】去掉一个最高分,一个最低分,求平均
  6. 周五,放松心情,听我来分享问题背后的背后(一)
  7. oracle的freelist,Oracle表的分类以及相关参数的详解
  8. 奥鹏2019计算机应用基础1,奥鹏东师2019年秋季(计算机应用基础)离线考核(仅供参考).docx...
  9. mysql修改密码1054_Mysql修改密码异常处理(ERROR 1054)
  10. vba动态二维数组_VBA学习笔记19:数组1