版本比较
比较
标识
- 该行被添加。
- 该行被删除。
- 格式已经改变。
查看所有支持的图像格式
查看ffmpeg -h
,找到 ffmpeg -pix_fmts
,提示"show available pixel formats",即为支持的像素格式:
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
~# ffmpeg -pix_fmts
ffmpeg version 4.2.7-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
configuration: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
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
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
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.. 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
IO... gbrp 3 24
IO... gbrp9be 3 27
IO... gbrp9le 3 27
IO... gbrp10be 3 30
IO... gbrp10le 3 30
IO... gbrp16be 3 48
IO... 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
IO... ya16be 2 32
IO... ya16le 2 32
IO... gbrap 4 32
IO... gbrap16be 4 64
IO... 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
..H.. xvmc 0 0
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
IO... p010le 3 15
IO... p010be 3 15
IO... gbrap12be 4 48
IO... gbrap12le 4 48
IO... gbrap10be 4 40
IO... gbrap10le 4 40
..H.. mediacodec 0 0
IO... gray12be 1 12
IO... gray12le 1 12
IO... gray10be 1 10
IO... gray10le 1 10
IO... p016le 3 24
IO... p016be 3 24
..H.. d3d11 0 0
IO... gray9be 1 9
IO... gray9le 1 9
..... gbrpf32be 3 96
..... gbrpf32le 3 96
..... gbrapf32be 4 128
..... gbrapf32le 4 128
..H.. drm_prime 0 0
..H.. opencl 0 0
IO... gray14be 1 14
IO... gray14le 1 14
IO... grayf32be 1 32
IO... grayf32le 1 32
IO... yuva422p12be 4 36
IO... yuva422p12le 4 36
IO... yuva444p12be 4 48
IO... yuva444p12le 4 48
IO... nv24 3 24
IO... nv42 3 24 |
注意点:
- 关于yuv420p与yuvj420p:参考:YUV420P与YUVJ420P_itzilong的博客-CSDN博客,两者格式一致,只是颜色空间上的不同,yuvj使用的是Jpeg转换公式,范围是0-255;yuv的范围是16-240。
- 关于YV24、YV16、YV12:ffmpeg没有支持这些YUV格式,但可以通过命令调整UV排列来间接操作这类图像。ffmpeg支持NV系列格式。
- 关于yuv420p10le:指的是10bit采样的yuv,正常默认是8bit的,yuv420p12/p14系列以此类推。
FFmpeg图像格式转换
PNG转YUV420P(I420/YU12)
代码块 |
---|
ffmpeg -i in.png -pix_fmt yuv420p 512x512_420p.yuv |
PNG转YV12
代码块 |
---|
ffmpeg -i in.png -pix_fmt yuv420p -vf shuffleplanes=0:2:1 512x512_yv12.yuv |
-vf shuffleplanes:0:2:1
用于交换UV分量的位置。
YUV420P转NV12及调整分辨率
代码块 |
---|
ffmpeg -pix_fmt yuv420p -s 512x512 -pix_fmt yuv420p -i 512x512_420p.yuv -vf scale=256x256 -pix_fmt nv12 256x256_nv12.yuv |
- 前一个
-pix_fmt yuv420p
用于指定输入YUV的格式。 -s
用于指定输入YUV的大小。-vf scale=256x256
用于指定输出分辨率。- 后一个
-pix_fmt nv12
用于指定输出YUV的格式。
YUV转BMP
代码块 |
---|
ffmpeg -pix_fmt yuv420p -s 512x512 -i 512x512_420p.yuv out.bmp |
提取YUV各个分量
代码块 |
---|
ffmpeg -pix_fmt yuv420p -s 512x512 -i .\512x512_420p.yuv -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.yuv -map '[u]' u.yuv -map '[v]' v.yuv |
MP4转yuv文件
代码块 |
---|
ffmpeg -i in.mp4 -vcodec rawvideo -s 540x960 -pix_fmt nv12 -vframes 300 out*540x960.yuv |
-vframes 300
用于指定提取的帧数。
MP4提取yuv帧
代码块 |
---|
ffmpeg -i .\in.mp4 -an -pix_fmt nv12 -s 540x960 -f segment -segment_time 0.01 out%d.yuv |
-segment_time
用于指定提取间隔,小于1/fps时即可实现按帧提取。
ffplay播放YUV
播放YUV图片
代码块 |
---|
ffplay 420p.yuv -s 512x512 -pix_fmt yuv420p |
播放YUV视频
代码块 |
---|
ffplay -f rawvideo -video_size 1280x720 -pixel_format yuyv422 test.yuv |
单独播放YUV中的一个分量
代码块 |
---|
ffplay -pix_fmt yuv420p -s 512x512 -vf extractplanes='y' 512x512_420p.yuv |
将y改成u/v则就可以播放uv分量。
单独播放YUV分量文件
代码块 |
---|
ffplay -s 512x512 -pix_fmt gray y.yuv |
目录 |
---|