145
社区成员




YUV基础自己看文章,推荐一篇文章:点击这里
1、生成YUV视频格式:
ffmpeg -i "源文件.mp4" -an -c:v rawvideo -pix_fmt yuv420p out.yuv
参数说明:
-i "源文件.mp4"
:指定输入文件名及地址。
-an
:去掉音频流。这里的参数选项 -an
表示不需要音频,只保留视频部分。
-c:v rawvideo
:指定输出视频编码方式,这里我们选择了无压缩的原始视频格式。
-pix_fmt yuv420p
:指定像素格式,yuv420p 是最常用的像素格式,它允许您使用更少的存储空间来生成高质量图像。
out.yuv
:指定输出文件名。
该命令会将输入文件 "源文件.mp4"
中的音频流移除,然后将剩余的视频流数据以 rawvideo 编码方式和 yuv420p 像素格式保存到输出文件 out.yuv
中。
2、播放YUV:
ffplay -f rawvideo -video_size 1920x1080 out.yuv
参数说明:
该命令会以 rawvideo 格式读取 `out.yuv` 文件并显示在屏幕上,并将视频窗口设置为 `1920x1080` 的分辨率。 `ffplay` 通过按原始帧速度(即输入视频的帧率)播放 `out.yuv` 中的视频数据。
3、播放Y分量
ffplay -f rawvideo -video_size 1920x1080 -vf extractplanes='y' out.yuv
参数说明:
该命令会以 rawvideo 格式读取 `out.yuv` 文件并显示在屏幕上,并将视频窗口设置为 `1920x1080` 的分辨率。通过 `-vf extractplanes='y'` 指定视频过滤器,将输入视频的时间轴上的每一帧数据通过 `YUV` 转换成只有 `Y` 分量信息,即只剩下黑白图像的信息。然后 `ffplay` 使用播放特定格式的黑白视频。
4、播放UV分量
ffplay -f rawvideo -video_size 960x540 -vf extractplanes='y' out.yuv
分辨率除2 = UV分量
5、提取各分量
ffmpeg -i 1.mp4 -filter_complex "extractplanes=y+u+v[y][u][v]" -map "[y]" y.yuv -map "[u]" u.yuv -map "[v]" v.yuv
参数说明:
-i 1.mp4
:指定需要进行处理的输入文件。
-filter_complex "extractplanes=y+u+v[y][u][v]"
:使用复杂过滤器操作,其中 extractplanes=y+u+v
表示从原始 YUV 视频文件中提取亮度、蓝色和红色分量,[y][u][v]
分别表示输出结果的视频流名称及索引。
-map "[y]" y.yuv -map "[u]" u.yuv -map "[v]" v.yuv
:将上一步直接生成的三个视频流 [y][u][v]
分别映射到不同的输出位置。这些位置被定义为分别为 y.yuv
、u.yuv
和 v.yuv
的三个文件。这就是说明了 [y] [u] [v]
。
这条命令将会使用 ffmpeg
解码 1.mp4
文件,并利用复杂过滤器 extractplanes
从中提取出三个通道。然后,通过 -map
参数显式地使用这些输出结果,并将它们写入三个文件 y.yuv
、u.yuv
和 v.yuv
中,以便以后使用或进一步处理。请注意,该命令只提取原始 YUV 数据,因此无法直接查看或播放输出文件。