ffmpeg介绍
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流(什么是流?)的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。
项目组成功能介绍
- libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构 和读取音视频帧等功能;
- libvcodec:用于各种类型声音/图像编解码;
- libavutil:包含一些公共的工具函数;
- libswscale:用于视频场景比例缩放、色彩映射转换;
- libpostproc:用于后期效果处理;
- ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
- ffsever:一个 HTTP 多媒体即时广播串流服务器;
- ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;
Windows下的FFMPEG已编译版本安装
下载链接:https://ffmpeg.zeranoe.com/builds/
下载完解压后如图所示:
然后配置环境变量,比如e:\ffmpeg20180919\bin,将他加入到系统环境变量中。这样bin下面的ffmpeg.exe就可以在命令行中使用了,可以用ffmpeg -version测试一下。
运行cmd,进入bin目录使用:
常用命令集举例
- 获取视频的信息
ffmpeg -i video.avi
- 图片序列合成视频
ffmpeg -f image2 -i image%d.jpg video.mpg
上面的命令会把当前目录下的图片(名字如:image1.jpg. image2.jpg. 等…)合并成video.mpg - 将视频分解成图片序列
ffmpeg -i video.mpg image%d.jpg
上面的命令会生成image1.jpg. image2.jpg. …
支持的图片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SGI - 输出YUV420原始数据
ffmpeg -i input.mp4 output.yuv
(yuv播放软件RawPlayer,YUVview) - 抓取视频的一些帧,存为jpeg图片
ffmpeg -i input.mp4 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
-ss 表示开始时间
-t表示共要多少时间。 - 图片转YUV
ffmpeg -i pic.jpeg -s 1024x2048 -pix_fmt yuv420p pic.yuv
yuv转png
ffmpeg -s 1920x1080 -i input.yuv output.png
ffplay -f rawvideo -video_size 1920x1080 a.yuv
还有有很多功能用到再查
ffmpeg -pix_fmts
博主把获得的pix_fmt列出来,如下:
Pixel formats:
I… = Supported Input format for conversion
.O… = Supported Output format for conversion
…H… = Hardware accelerated format
…P. = Paletted format
…B = Bitstream format
FLAGS NAME NB_COMPONENTS BITS_PER_PIXEL
IO… yuv420p 3 12
IO… yuyv422 3 16
IO… rgb24 3 24
IO… bgr24 3 24
IO… yuv422p 3 16
IO… yuv444p 3 24
IO… yuv410p 3 9
IO… yuv411p 3 12
IO… gray 1 8
IO…B monow 1 1
IO…B monob 1 1
I…P. pal8 1 8
IO… yuvj420p 3 12
IO… yuvj422p 3 16
IO… yuvj444p 3 24
…H… xvmcmc 0 0
…H… xvmcidct 0 0
IO… uyvy422 3 16
… uyyvyy411 3 12
IO… bgr8 3 8
.O…B bgr4 3 4
IO… bgr4_byte 3 4
IO… rgb8 3 8
.O…B rgb4 3 4
IO… rgb4_byte 3 4
IO… nv12 3 12
IO… nv21 3 12
IO… argb 4 32
IO… rgba 4 32
IO… abgr 4 32
IO… bgra 4 32
IO… gray16be 1 16
IO… gray16le 1 16
IO… yuv440p 3 16
IO… yuvj440p 3 16
IO… yuva420p 4 20
…H… vdpau_h264 0 0
…H… vdpau_mpeg1 0 0
…H… vdpau_mpeg2 0 0
…H… vdpau_wmv3 0 0
…H… vdpau_vc1 0 0
IO… rgb48be 3 48
IO… rgb48le 3 48
IO… rgb565be 3 16
IO… rgb565le 3 16
IO… rgb555be 3 15
IO… rgb555le 3 15
IO… bgr565be 3 16
IO… bgr565le 3 16
IO… bgr555be 3 15
IO… bgr555le 3 15
…H… vaapi_moco 0 0
…H… vaapi_idct 0 0
…H… vaapi_vld 0 0
IO… yuv420p16le 3 24
IO… yuv420p16be 3 24
IO… yuv422p16le 3 32
IO… yuv422p16be 3 32
IO… yuv444p16le 3 48
IO… yuv444p16be 3 48
…H… vdpau_mpeg4 0 0
…H… dxva2_vld 0 0
IO… rgb444le 3 12
IO… rgb444be 3 12
IO… bgr444le 3 12
IO… bgr444be 3 12
IO… ya8 2 16
IO… bgr48be 3 48
IO… bgr48le 3 48
IO… yuv420p9be 3 13
IO… yuv420p9le 3 13
IO… yuv420p10be 3 15
IO… yuv420p10le 3 15
IO… yuv422p10be 3 20
IO… yuv422p10le 3 20
IO… yuv444p9be 3 27
IO… yuv444p9le 3 27
IO… yuv444p10be 3 30
IO… yuv444p10le 3 30
IO… yuv422p9be 3 18
IO… yuv422p9le 3 18
…H… vda_vld 0 0
IO… gbrp 3 24
IO… gbrp9be 3 27
IO… gbrp9le 3 27
IO… gbrp10be 3 30
IO… gbrp10le 3 30
I… gbrp16be 3 48
I… gbrp16le 3 48
IO… yuva422p 4 24
IO… yuva444p 4 32
IO… yuva420p9be 4 22
IO… yuva420p9le 4 22
IO… yuva422p9be 4 27
IO… yuva422p9le 4 27
IO… yuva444p9be 4 36
IO… yuva444p9le 4 36
IO… yuva420p10be 4 25
IO… yuva420p10le 4 25
IO… yuva422p10be 4 30
IO… yuva422p10le 4 30
IO… yuva444p10be 4 40
IO… yuva444p10le 4 40
IO… yuva420p16be 4 40
IO… yuva420p16le 4 40
IO… yuva422p16be 4 48
IO… yuva422p16le 4 48
IO… yuva444p16be 4 64
IO… yuva444p16le 4 64
…H… vdpau 0 0
IO… xyz12le 3 36
IO… xyz12be 3 36
… nv16 3 16
… nv20le 3 20
… nv20be 3 20
IO… rgba64be 4 64
IO… rgba64le 4 64
IO… bgra64be 4 64
IO… bgra64le 4 64
IO… yvyu422 3 16
…H… vda 0 0
I… ya16be 2 32
I… ya16le 2 32
IO… gbrap 4 32
I… gbrap16be 4 64
I… gbrap16le 4 64
…H… qsv 0 0
…H… mmal 0 0
…H… d3d11va_vld 0 0
…H… cuda 0 0
IO… 0rgb 3 24
IO… rgb0 3 24
IO… 0bgr 3 24
IO… bgr0 3 24
IO… yuv420p12be 3 18
IO… yuv420p12le 3 18
IO… yuv420p14be 3 21
IO… yuv420p14le 3 21
IO… yuv422p12be 3 24
IO… yuv422p12le 3 24
IO… yuv422p14be 3 28
IO… yuv422p14le 3 28
IO… yuv444p12be 3 36
IO… yuv444p12le 3 36
IO… yuv444p14be 3 42
IO… yuv444p14le 3 42
IO… gbrp12be 3 36
IO… gbrp12le 3 36
IO… gbrp14be 3 42
IO… gbrp14le 3 42
IO… yuvj411p 3 12
I… bayer_bggr8 3 8
I… bayer_rggb8 3 8
I… bayer_gbrg8 3 8
I… bayer_grbg8 3 8
I… bayer_bggr16le 3 16
I… bayer_bggr16be 3 16
I… bayer_rggb16le 3 16
I… bayer_rggb16be 3 16
I… bayer_gbrg16le 3 16
I… bayer_gbrg16be 3 16
I… bayer_grbg16le 3 16
I… bayer_grbg16be 3 16
IO… yuv440p10le 3 20
IO… yuv440p10be 3 20
IO… yuv440p12le 3 24
IO… yuv440p12be 3 24
IO… ayuv64le 4 64
… ayuv64be 4 64
…H… videotoolbox_vld 0 0
I… p010le 3 15
I… p010be 3 15
I… gbrap12be 4 48
I… gbrap12le 4 48
I… gbrap10be 4 40
I… gbrap10le 4 40
…H… mediacodec 0 0