【ffmpeg】YUV实践
- 前言
- 生成YUV
- 使用摄像头采集到YUV数据
- 从现有的视频文件中提取YUV数据
- 播放YUV
- 播放Y分量
- 提取各分量
- 参考资料
个人简介
📦个人主页:一二三o-0-O的博客
🏆技术方向:C/C++客户端资深工程师(直播+音视频剪辑)
👨💻作者简介:数据结构算法与音视频领域创作者
📒 系列专栏:ffmpeg入门
📣专栏目标:务实的掌握FFmpeg相关专业知识
🧡如果对您有帮助的话,欢迎点赞👍收藏📂,关注不迷路
前言
如果是刚刚开始学习音视频的伙伴,可以先看看音视频基 础专栏系列的内容,掌握音视频相关的一些基础理论。
音视频基础专栏系列
(一)【音视频基础】音频基础理论
(二)【音视频基础】视频基础理论
(三)【音视频基础】封装格式与编码数据
如果觉得理论学习枯燥的伙伴,可以先通过以下四篇文章使用ffmpeg实现一个播放器,可以获得些许成就感,为持续在音视频领域扎根打好兴趣基础。
ffmpeg专栏系列
(一)【ffmpeg】ffmpeg命令工具的使用
(二)【ffmpeg】视频解码器
(三)【ffmpeg】SDL视频显示
(四)【ffmpeg】ffmpeg+SDL实现播放器
本节主要阐述YUV相关操作。
生成YUV
使用摄像头采集到YUV数据
从现有的视频文件中提取YUV数据
./ffmpeg.exe -i testvideo/naxienian.mp4 -an -c:v rawvideo -pix_fmt yuv420p testvideo/naxienian.yuv
-i :提供输入文件
-an :a表示audio n表示none,即没有音频
-c:v :表示视频的解码器,即使用rawvideo进行处理
-pix_fmt :表示视频格式
提取效果:
播放YUV
./ffplay.exe -pix_fmt yuv420p -s 480*208 testvideo/naxienian.yuv
提供yuv的视频格式以及分辨率,使用ffplay进行播放
播放效果:
播放Y分量
./ffplay.exe -pix_fmt yuv420p -s 480*208 -vf extractplanes=‘y’ testvideo/naxienian.yuv
在提供yuv的视频格式以及分辨率的基础上,设置提取的平面为‘y’, 使用ffplay播放Y分量
播放效果:
提取各分量
./ffmpeg.exe -i testvideo/naxienian.mp4 -filter_complex ‘extractplanes=y+u+v[y][u][v]’ -map ‘[y]’ y.yuv -map ‘[u]’ u.yuv -map ‘[v]’ v.yuv
使用复杂的滤波器:filter_complex将yuv分量分别提取出来
播放y.yuv:./ffplay.exe -s 480*208 -pix_fmt gray testvideo/y.yuv
播放u、v分量的时候,分辨率要/2,因为是420p的:./ffplay.exe -s 240*104 -pix_fmt gray testvideo/u.yuv
参考资料
【1】雷神博客
【2】ffmpeg官方文档
【3】李超:音视频基础+ffmpeg原理