音视频入门-10-使用libyuv对YUV数据进行缩放、旋转、镜像、裁剪、混合 转发
libyuv
libyuv 是 Google 开源的实现各种 YUV 与 RGB 之间相互转换、旋转、缩放等的库。它是跨平台的,可在 Windows、Linux、Mac、Android 等操作系统,x86、x64、arm 架构上进行编译运行,支持 SSE、AVX、NEON 等 SIMD 指令加速。
准备工作
一张图片
下载 rainbow-700x700.bmp BMP 图片 或者 自己准备一张图片(知道分辨率,如:700x700)
FFmpeg 工具包
根据自己的系统,下载 FFmpeg Static 工具包。
得到所需的 yuv420p 文件
将上面准备的图片转换成 YUV420P 格式:
1
|
ffmpeg -i rainbow.bmp -video_size 700x700 -pix_fmt yuv420p rainbow-yuv420p.yuv
|
查看 YUV 文件
1
|
ffplay -f rawvideo -pixel_format yuv420p -video_size 700x700 rainbow-yuv420p.yuv
|
libyuv 操作 YUV
YUV 裁剪
[rainbow-yuv420p.yuv] -> [rainbow-yuv420p-clip-x-y.yuv]
1
|
#include <stdio.h>
|
YUV 缩放
[rainbow-yuv420p.yuv] -> [rainbow-yuv420p-scale-X.yuv]
1
|
#include <stdio.h>
|
YUV 旋转
[rainbow-yuv420p.yuv] -> [rainbow-yuv420p-rotation-90.yuv]
1
|
#include <stdio.h>
|
YUV 镜像
[rainbow-yuv420p-rotation-90.yuv] -> [rainbow-yuv420p-rotation-90-mirror.yuv]
1
|
#include <stdio.h>
|
YUV 混合
[rainbow-yuv420p.yuv] -> [rainbow-yuv420p-blend.yuv]
1
|
#include <stdio.h>
|
参考资料:
内容有误?联系作者: