前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【FFmpeg】ffmpeg 命令行参数 ⑥ ( 使用 FFmpeg 提取 YUV 像素格式数据 | 使用 FFmpeg 提取 RGB 像素格式数据 | RGB 与 YUV 之间的格式转换 )

【FFmpeg】ffmpeg 命令行参数 ⑥ ( 使用 FFmpeg 提取 YUV 像素格式数据 | 使用 FFmpeg 提取 RGB 像素格式数据 | RGB 与 YUV 之间的格式转换 )

作者头像
韩曙亮
发布2024-03-28 10:09:18
1780
发布2024-03-28 10:09:18
举报

一、使用 FFmpeg 提取 YUV 像素格式数据

1、YUV 像素格式

FFmpeg 是一个非常强大的多媒体处理工具 , 可以用来 处理 / 转换 / 播放 各种音视频格式的数据 , 因此 使用 FFmpeg 自然也可以提取 YUV 像素格式的数据 ;

在学习 FFmpeg 时 , 经常需要使用 YUV 像素格式 的 视频数据 来测试 编解码器 , 网上一般很少有 像素格式 的视频 , 因为占据的空间巨大 , 此时就需要 使用 FFmpeg 工具自己提取像素格式的视频数据 ;

2、提取 YUV 数据

执行下面的命令 , 可以 使用 ffmpeg 工具 从 input.mp4 视频文件 中提取 YUV420P 格式的数据 到 output_yuv420p.yuv 输出文件 中 ;

代码语言:javascript
复制
ffmpeg -i input.mp4 -pix_fmt yuv420p -f rawvideo output_yuv420p.yuv
  • -i input.mp4 设置 要提取数据的 输入视频文件 ;
  • -pix_fmt yuv420p 设置 提取后的输出文件 的 数据格式为 YUV420P 像素格式 ;
  • -f rawvideo 设置 输出的数据格式 为 原始视频数据 ;
  • output_yuv420p.yuv 设置 输出文件的 文件名称 ;

执行过程如下 :

输入 MP4 格式 视频文件 是 H.264 编码格式 , 1 分钟的视频大概有 13MB ;

输出 YUV 格式 视频文件 是 YUV 像素格式 , 1 分钟视频大概有 837MB , 像素格式的视频数据占据的空间是 H264 压缩格式的 80 倍 ;

3、提取 YUV 数据 - 设定提取长度和画面大小

可以通过 -t 参数 , 设置提取前 3 秒的视频数据 ,

通过 -s 参数 , 设置 提取 320x240 大小的视频画面 数据 ,

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -t 3 -s 320x240 -pix_fmt yuv420p -f rawvideo output_yuv420p.yuv

可以看到 , 提取的 3 秒钟 的 YUV 格式 320x240 格式 的视频数据 有 10MB 左右 ;

4、使用 ffplay 播放 YUV 视频

播放一个 YUV 像素格式的视频 , 必须知道该视频的

  • 尺寸 : 通过 -video_size 参数设置 ;
  • 帧率 : 通过 -framerate 参数设置 ;
  • 具体像素格式 : 通过 -pixel_format 参数设置 ;

执行

代码语言:javascript
复制
ffplay -pixel_format yuv420p -video_size 320x240 -framerate 5 -i output_yuv420p.yuv

命令 , 可以播放 上述导出的 320x240 大小的 yuv420p 格式的 视频文件 ;

参考 【FFmpeg】ffplay 命令行参数 ① ( 设置播放分辨率 | 禁用 音频 / 视频 / 字幕 选项 ) 博客 , 播放进行 ffplay 播放设置 ;

二、使用 FFmpeg 提取 RGB 像素格式数据


1、提取 RGB 像素格式

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -pix_fmt rgb24 output_rgb24.rgb

命令 , 可以从 输入文件 input.mp4 中 提取出 rgb24 格式的 像素文件 , 提取出来的文件有 1.63GB , 这是未经压缩的视频画面文件 ;

上述命令的核心是 -pix_fmt rgb24 设置 提取后的输出文件 的 数据格式为 rgb24 像素格式 ;

2、提取 RGB 像素格式 - 设定提取长度和画面大小

提取 RGB 像素格式 文件 ,

也可以通过 -t 参数 , 设置提数据的时间长度 , 通过 -s 参数 , 设置 数据的 视频画面 大小 ,

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -t 3 -s 320x240 -pix_fmt rgb24 output_rgb24.rgb

可以看到 , 提取的 3 秒钟 的 rgb24 格式 320x240 格式 的视频数据 有 20MB 左右 ;

3、使用 ffplay 播放 RGB 视频

播放一个 RGB 像素格式的视频 , 必须知道该视频的

  • 尺寸 : 通过 -video_size 参数设置 ;
  • 帧率 : 通过 -framerate 参数设置 ;
  • 具体像素格式 : 通过 -pixel_format 参数设置 ;

执行

代码语言:javascript
复制
ffplay -pixel_format rgb24 -video_size 320x240 -framerate 5 -i output_rgb24.rgb

命令 , 可以播放 上述导出的 320x240 大小的 rgb24 格式的 视频文件 ;

参考 【FFmpeg】ffplay 命令行参数 ① ( 设置播放分辨率 | 禁用 音频 / 视频 / 字幕 选项 ) 博客 , 播放进行 ffplay 播放设置 ;

三、RGB 与 YUV 之间的格式转换


1、设置分辨率与像素格式

将 RGB 格式的视频 转为 YUV 格式的视频 时 , 可以分别为 输入视频 和 输出视频 都设置

  • 画面分辨率
  • 具体的像素格式

输出视频 的 分辨率 和 像素格式 可以 不进行设置 , 默认与 输入视频 的 参数相同 ;

输入视频 必须设置 分辨率 和 像素格式 , 否则无法进行 像素格式的转换 ;

2、设置分辨率与像素格式 - 同时设置输入 / 输出文件的参数

执行

代码语言:javascript
复制
ffmpeg -pix_fmt rgb24 -s 320x240 -i output_rgb24.rgb -pix_fmt yuv420p -s 640x480 output_yuv420p.yuv

命令 , 将 320x240 画面大小的 rgb24 格式的视频文件 , 转为 640x480 画面大小的 yuv 格式的视频文件 ,

-pix_fmt rgb24 -s 320x240 是 输入文件 的 像素格式 和 画面大小 ,

-pix_fmt yuv420p -s 640x480 是 输出文件 的 像素格式 和 画面大小 ;

执行

代码语言:javascript
复制
ffplay -pixel_format yuv420p -video_size 640x480 -framerate 5 -i output_yuv420p.yuv

命令 , 可以播放 上述导出的 640x480 大小的 yuv420p 格式的 视频文件 ;

3、设置分辨率与像素格式 - 只设置输入文件的参数

执行

代码语言:javascript
复制
ffmpeg -pix_fmt rgb24 -s 320x240 -i output_rgb24.rgb -pix_fmt yuv420p output_yuv420p.yuv

命令 , 将 320x240 画面大小的 rgb24 格式的视频文件 , 转为 yuv 格式的视频文件 , 没有设置 输出文件的 视频画面大小 ;

此时 输出文件 默认情况 下 , 使用 输入文件 的 画面大小 320x240 像素 ;

执行完 , 可查看转换后的文件 ;

执行

代码语言:javascript
复制
ffplay -pixel_format yuv420p -video_size 320x240 -framerate 5 -i output_yuv420p.yuv

命令 , 可以播放 上述 yuv420p 格式的 视频文件 , 使用 320x240 像素大小播放正确 , 说明输出文件就是使用了 输入文件 的 参数 ;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、使用 FFmpeg 提取 YUV 像素格式数据
    • 2、提取 YUV 数据
      • 3、提取 YUV 数据 - 设定提取长度和画面大小
        • 4、使用 ffplay 播放 YUV 视频
        • 二、使用 FFmpeg 提取 RGB 像素格式数据
          • 1、提取 RGB 像素格式
            • 2、提取 RGB 像素格式 - 设定提取长度和画面大小
              • 3、使用 ffplay 播放 RGB 视频
              • 三、RGB 与 YUV 之间的格式转换
                • 1、设置分辨率与像素格式
                  • 2、设置分辨率与像素格式 - 同时设置输入 / 输出文件的参数
                    • 3、设置分辨率与像素格式 - 只设置输入文件的参数
                    相关产品与服务
                    多媒体处理
                    多媒体处理(Multimedia Processing,MMP)是数据万象推出的音视频处理服务,集成音视频转码、极速高清、精彩集锦、超分辨率、数字水印等能力,满足传媒、文旅、电商等各行业多媒体处理需求。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档