音视频开发:YUV实战

雨轩(爵丶迹) 优质创作者 2023-05-31 14:42:24

YUV基础自己看文章,推荐一篇文章:点击这里

1、生成YUV视频格式:

ffmpeg -i "源文件.mp4" -an -c:v rawvideo -pix_fmt yuv420p out.yuv

参数说明:

  1. -i "源文件.mp4":指定输入文件名及地址。

  2. -an:去掉音频流。这里的参数选项 -an 表示不需要音频,只保留视频部分。

  3. -c:v rawvideo:指定输出视频编码方式,这里我们选择了无压缩的原始视频格式。

  4. -pix_fmt yuv420p:指定像素格式,yuv420p 是最常用的像素格式,它允许您使用更少的存储空间来生成高质量图像。

  5. out.yuv:指定输出文件名。

该命令会将输入文件 "源文件.mp4" 中的音频流移除,然后将剩余的视频流数据以 rawvideo 编码方式和 yuv420p 像素格式保存到输出文件 out.yuv 中。

2、播放YUV:

ffplay -f rawvideo -video_size 1920x1080 out.yuv

参数说明:

  1.  `-f rawvideo`:指定视频格式,这里我们选择了无压缩的原始视频格式。
  2.  `-video_size 1920x1080`:指定视频分辨率大小为 `1920x1080` 像素。
  3.  `out.yuv`:指定要播放的文件名。

该命令会以 rawvideo 格式读取 `out.yuv` 文件并显示在屏幕上,并将视频窗口设置为 `1920x1080` 的分辨率。 `ffplay` 通过按原始帧速度(即输入视频的帧率)播放 `out.yuv` 中的视频数据。

3、播放Y分量

ffplay -f rawvideo -video_size 1920x1080 -vf extractplanes='y' out.yuv

参数说明:

  1.  `-f rawvideo`:指定视频格式,这里我们选择了无压缩的原始视频格式。
  2.  `-video_size 1920x1080`:指定视频分辨率大小为 `1920x1080` 像素。
  3. `-vf extractplanes='y'`:设置视频过滤器,这里使用 `extractplanes` 过滤器提取出 YUV 像素格式中的亮度信息(即 Y 通道)。
  4.  `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

参数说明:

  1. -i 1.mp4:指定需要进行处理的输入文件。

  2. -filter_complex "extractplanes=y+u+v[y][u][v]":使用复杂过滤器操作,其中 extractplanes=y+u+v 表示从原始 YUV 视频文件中提取亮度、蓝色和红色分量,[y][u][v] 分别表示输出结果的视频流名称及索引。

  3. -map "[y]" y.yuv -map "[u]" u.yuv -map "[v]" v.yuv:将上一步直接生成的三个视频流 [y][u][v] 分别映射到不同的输出位置。这些位置被定义为分别为 y.yuvu.yuvv.yuv 的三个文件。这就是说明了 [y] [u] [v]

这条命令将会使用 ffmpeg 解码 1.mp4 文件,并利用复杂过滤器 extractplanes 从中提取出三个通道。然后,通过 -map 参数显式地使用这些输出结果,并将它们写入三个文件 y.yuvu.yuvv.yuv 中,以便以后使用或进一步处理。请注意,该命令只提取原始 YUV 数据,因此无法直接查看或播放输出文件。

 

...全文
279 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

145

社区成员

发帖
与我相关
我的任务
社区描述
智慧编程,开源精神,高效学习一起加油吧
社区管理员
  • 爱生活,爱代码
  • 小码农UU
  • Coca1cole
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧