【Webcam设计】x264编码实现
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编码实现相关推荐
- (原创)基于ZedBoard的Webcam设计(二):USB摄像头图片采集+QT显示
在(原创基于ZedBoard的Webcam设计(一):Zedboard上的USB摄像头(V4L2接口)的图片采集中,我们完成了ZedBoard上USB摄像头的单幅图片采集,采集到的图片是存储在文件系统 ...
- 基于ZedBoard的Webcam设计(二):USB摄像头图片采集+QT显示
在(原创基于ZedBoard的Webcam设计(一):Zedboard上的USB摄像头(V4L2接口)的图片采集中,我们完成了ZedBoard上USB摄像头的单幅图片采集,采集到的图片是存储在文件系统 ...
- 【Android RTMP】RTMPDump 封装 RTMPPacket 数据包 ( 关键帧数据格式 | 非关键帧数据格式 | x264 编码后的数据处理 | 封装 H.264 视频数据帧 )
文章目录 安卓直播推流专栏博客总结 一. x264 编码后的 H.264 数据帧 二. RTMP 协议中 关键帧 / 非关键帧 数据格式 说明 三. 判定 H.264 帧数据分隔符 四. 初始化 RT ...
- 【Android RTMP】x264 编码器初始化及设置 ( 获取 x264 编码参数 | 编码规格 | 码率 | 帧率 | B帧个数 | 关键帧间隔 | 关键帧解码数据 SPS PPS )
文章目录 安卓直播推流专栏博客总结 一. x264 编码器参数设置引入 二. 获取 x264 编码器参数 三. 设置 x264 编码器编码规格 四. 设置 x264 编码器编码图像数据格式 五. 设置 ...
- x264编码参数大测试:10 trellis(1000Kbps)
一.测试内容 测试方法-- x264编码参数大测试:索引贴 http://www.cnblogs.com/zyl910/archive/2011/12/14/x264_encode_param.htm ...
- X264编码流程详解(转)
http://blog.csdn.net/xingyu19871124/article/details/7671634 对H.264编码标准一直停留在理解原理的基础上,对于一个实际投入使用的编码器是如 ...
- WebRTC VideoEngine超详细教程(三)——集成X264编码和ffmpeg解码
转自:http://blog.csdn.net/nonmarking/article/details/47958395 本系列目前共三篇文章,后续还会更新 WebRTC VideoEngine超详细教 ...
- ffmpeg + x264 编码H264(x86+arm)
一.x86-linux 1. 编译x264 我用的是目前最新版:x264-snapshot-20101130-2245.tar.bz2 ./configure --disable-asm mak ...
- 学习笔记(一)(x264编码流程)
学习笔记(一)(x264编码流程) 作者 张士辉 11月 2, 2007 <script type=text/javascript></script> <script s ...
- ffmpeg使用x264编码的配置+ ffmpeg与 x264编码器参数完整对照表
ffmpeg使用x264编码的配置+ ffmpeg与 x264编码器参数完整对照表 分类: 多媒体 2010-07-13 11:31 1072人阅读 评论(0) 收藏 举报 转载自:扶凯[http:/ ...
最新文章
- webpack 安装使用(1)
- R语言ggplot2可视化使用不连续的y轴、中断的Y轴来可视化数值分布差异很大的数据实战:把数据轴分为两个区间或者多个区间来匹配不同区间数据的可视化(因为有的数据可能10附近,有的数值可能1W附近)
- 人工智能热潮下,我们该如何紧跟科技脚步呢?
- silverlight 安全性错误
- python 解压zip文件_Python 解压缩文件详解
- 一、bootstrap4基础(布局系统、栅格系统、显示与隐藏、对齐与排列、内容排版、代码与图文、表格样式、颜色和边框、工具类)
- 归并排序法计算逆序对数
- Java常用设计模式总结及应用场景分析
- 7. ShowWindow
- 思博伦Avalanche中的Load类型定义_双极未来
- C++自学教程第一课——你好世界,我是柠檬鲸。
- SSM+JSP实现企业管理系统(OA管理系统源码+数据库+文档+PPT)
- 哈尔滨工业大学计算机考研复试分数线,34所自划线院校2021考研复试分数线-2021哈尔滨工业大学考研分数线已公布...
- 微服务——服务依赖与治理-服务调用异常、超时,id生成
- Exchange 2010 SP1个人邮件归档配置
- libusb-win32的使用方法
- boat启动器 minecraft_我的世界boat启动器下载,我的世界boat启动器数据包下载链接 v1.20.5.109731-手游汇...
- 十八掌全套大数据课程免费送
- 外贸企业邮箱如何选择?
- 为什么轻量应用服务器价格那么低,对比云服务器CVM性能有哪些差别?
热门文章
- 【ArcGIS|空间分析】求年度NDVI最大值图像和NDVI最大值出现日期图像
- 利用composer搭建PHP框架(三.模板引擎)
- 微信开发:getLocation签名失效的问题
- 2 s锁是什么_使用 python 实现简单的共享锁和排他锁
- python去掉最高分和最低分_【Excel】去掉一个最高分,一个最低分,求平均
- 周五,放松心情,听我来分享问题背后的背后(一)
- oracle的freelist,Oracle表的分类以及相关参数的详解
- 奥鹏2019计算机应用基础1,奥鹏东师2019年秋季(计算机应用基础)离线考核(仅供参考).docx...
- mysql修改密码1054_Mysql修改密码异常处理(ERROR 1054)
- vba动态二维数组_VBA学习笔记19:数组1