生成YUV
ffmpeg -i input.mp4
-an
-c:v rawvideo
-pix_fmt yuv 420420p out.yuv
-i 参数,代表输入视频
-an,a代表audio,n代表no,即没有音频,将音频过滤掉
-c:v rawvideo,c:v代表视频的编解码器,使用rawvideo进行处理
pix_fmt 指定yuv输出的格式,即yuv420p
播放YUV
ffplay -pix_fmt yuv420p -s 608x398 out.yuv
其中ffplay默认的格式就是yuv420p,所以参数pix_fmt yuv420p也可以省略,-s指定播放的分辨率
播放Y分量
ffplay -pix_fmt yuv420p
-s 608x368
-vf extractplanes=‘y’ out.yuv
这个命令可以从yuv格式的视频中单独播放y分量出来
其中vf是ffmpeg的一个滤波器,ffmpeg的滤波有两个,一个简单滤波一个复杂滤波。vf是简单滤波。
提取各分量
ffmpeg -i input
-filter_complex ‘extractplanes=y+u+v[y][u][v]’
-map’[y]’ y.yuv
-map’[u]’ u.yuv
-map’[v]’ v.yuv
filter_complex复杂滤波器
此时进行播放要添加参数gray,即单色播放,不然会发生错误
此时播放命令:
ffplay -s 608x368 -pix_fmt gray y.yuv
此时播放u或者v分量的视频的命令:
ffplay -s304x184 -pix_fmt gray u.yuv
这是因为采样时是按照2:1进行的,即u或者v的采样都是y的二分之一,所以分辨率不是608x368而是304x184
问题
为什么U和V分量没有显示颜色