将 H264 视频转换为原始 YUV 格式

Posted

技术标签:

【中文标题】将 H264 视频转换为原始 YUV 格式【英文标题】:convert H264 video to raw YUV format 【发布时间】:2014-01-03 18:36:24 【问题描述】:

是否可以使用 ffmpeg 从 H264 编码视频创建原始 YUV 视频?我想用matlab打开视频,逐帧访问Luma、Cb和Cr分量。

【问题讨论】:

工作命令:ffmpeg -i input.264 -vcodec rawvideo -pix_fmt yuv420p output.yuv 【参考方案1】:

是的,您可以,您只需指定像素格式。要获取格式的完整列表:

ffmpeg -pix_fmts | grep -i pixel_format_name

例如,如果您要将 mp4 文件的第一个视频轨道保存为 yuv420pp 表示 planar)文件:

ffmpeg -i video.mp4 -c:v rawvideo -pix_fmt yuv420p out.yuv

【讨论】:

首先我得到这个错误:无法识别的选项'c:v'然后,我使用“-vcodec rawvideo”而不是“-c:v rawvideo”并且它有效。谢谢! -c:v 和 -c:a 对于最新版本的 ffmpeg 应该没问题,你可以运行一个旧版本,如果可以的话考虑更新你的版本:) 还有人得到一堆彩色线条吗?转换也会立即发生,这对我来说似乎不正确......? @JoshuaF.Rountree 您需要指定尺寸才能查看它(例如,在 VLC 中):***.com/a/22313305/2442139 @thang 如果你有保持时间戳 + 原始视频帧,你可以遵循 2 种不同的方式。 1st,结合 ffmpeg 解码原始帧和 ffprobe --show_frame (或类似的东西......)转储帧信息并grep他们的pts。之后交错这两个信息源(我想我使用一个简单的 python 脚本来读取 2 个过程标准输出并在输出上复用它们)并不是说我也经常解析一个 ffmpeg -i 文件名输出以获得分辨率和帧速率来构建一个完全独立且紧凑的原始视频数据格式:W,H,FPS, PTS, FRAME, .... PTS, FRAME ...

以上是关于将 H264 视频转换为原始 YUV 格式的主要内容,如果未能解决你的问题,请参考以下文章

如何正确使用带有 YUV_420_888 和 MediaCodec 的 ImageReader 将视频编码为 h264 格式?

ffmpeg用于将视频编码为H264编解码器格式

视频学习笔记:Android ffmpeg解码多路h264视频并显示

音视频开发中如何使用ffmpeg 一帧H264解码YUV420P?

如何在没有默认 YUV2RGB->RGB2GRAY 转换的情况下从 H264 4:2:0 视频中读取 Y 分量

iOS音视频采集与格式转换(yuv转rgb)