仅使用fmpeg从MP4文件中提取(YUV420p的)Y帧?

问题描述 投票:0回答:1

我的主要目标是仅提取Y形式的I'thI + 1'(下一个),I-1'(上一个)帧(来自mp4视频的YUV 420)。我现在正在使用的程序是

  1. 我使用命令[ffprobe "input.mp4" -show_frames | grep 'pict_type=I' -A 1 > frame_info.txt

    ]从视频中提取了所有I帧的列表。
  2. 接下来,我使用python脚本解析该txt文件,以查找所有I frame

  3. 的编号,然后使用命令-ffmpeg -i input.mp4 -vf select='eq(n\,{1}),setpts=N/25/TB,extractplanes=y' -vsync 0 -pix_fmt gray {1}.yuv提取所有帧。来自python的子进程调用。
  4. 这对于240p或480p等小分辨率视频来说效果很好,但是当我移至1080p视频时,即使是单个帧的提取时间也呈指数增长。

  5. 它,它必须解码mp4文件直到那一点。

    我有很多1080p文件,我希望减少时间。我正在考虑的解决方案是从mp4中提取所有Y帧(YUV 420),然后仅选择I帧,因为我从步骤1。

中获得了所有I帧的列表。我为此使用的命令是-ffmpeg -y -i input.mp4 -vf "fps=59.94" -pix_fmt gray file_name.yuv
  • 带有上面代码的问题

    是它仅连续地将其附加到yuv文件中,但是我想要一个单独的y文件用于mp4视频的一帧。
  • 我的限制是仅使用FFmpeg,因为FFmpeg的Y值与我想要的匹配。

  • TL:DR-我只想从mp4视频中提取(YUV 420p的)Y部分。 y个帧是第I个,第I-1个和I + 1个帧。

感谢您的帮助。

我的主要目标是从mp4视频中仅提取Y格式(YUV 420)中的第I,第I + 1(下一个),第I-1(上一个)帧。我现在使用的程序是我提取了...

python-3.x video ffmpeg mp4 yuv
1个回答
0
投票

在步骤1中,不存储帧号,而是存储pts_time。

© www.soinside.com 2019 - 2024. All rights reserved.