引言
FFmpeg是一个开源免费跨平台的视频和音频流方案,它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行。
本篇除了会涉及到音频相关参数,但不会有音频相关操作或者详细解析,主要是针对图片与视频本身进行命令总结,不过在此之前,我想总结一下图片和视频的一些相关介绍。
ffmpeg中图片转换
RGB和YUV
说到图片自然最常见的是RGB,关于RGB,它的色彩模式是工业界的一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色,而在我们保存图片下的格式png、jpg等默认都是以RGB进行存储,一般没有提供YUV格式的图片保存,那么什么是YUV呢?简单来说,YUV 和我们熟悉的 RGB 差不多,都是颜色编码方式,只不过它们的三个字母代表的意义与 RGB 不同,YUV 的 “Y” 表示明亮度(Luminance或Luma),也就是灰度值;而 ”U” 和 ”V” 表示的则是色度(Chrominance或Chroma),描述影像色彩及饱和度,用于指定像素的颜色。
常见的YUV的采样有YUV444,YUV422,YUV420:
YUV 4:4:4采样,每一个Y对应一组UV分量,表示完全取样。
YUV 4:2:2采样,每两个Y共用一组UV分量,表示2:1的水平取样,垂直完全采样。
YUV 4:2:0采样,每四个Y共用一组UV分量,表示2:1的水平取样,垂直2:1采样
更详细的定义可以参阅以下链接,介绍得很详细以及还有ffmpeg源码解读。
如何理解 YUV ?
ffmpeg图片命令
所以我们可以知道了YUV格式,而RGB和YUV格式在ffmpeg里的转换命令如下,具体源码部分怎么转的可以看上面的链接:
ffmpeg -i picture4.jpg -s 1080x720 -pix_fmt yuv420p picture4.yuv
ffplay -f rawvideo -video_size 1080x720 picture4.yuv
ffmpeg的语法格式以及大致的一些基本参数为:
ffmpeg [[options][`-i’ input_file]]… {[options] output_file}…
知道了语法,这里还有一些常用的设置或者图片命令,这里记录一下:
# 把darkdoor.[001-100].jpg序列帧和001.mp3音频文件利用mpeg4编码方式合成视频文件darkdoor.avi: