我的主要目标是仅提取Y形式的I'th,I + 1'(下一个),I-1'(上一个)帧(来自mp4视频的YUV 420)。我现在正在使用的程序是
我使用命令[ffprobe "input.mp4" -show_frames | grep 'pict_type=I' -A 1 > frame_info.txt
接下来,我使用python脚本解析该txt文件,以查找所有I frame
ffmpeg -i input.mp4 -vf select='eq(n\,{1}),setpts=N/25/TB,extractplanes=y' -vsync 0 -pix_fmt gray {1}.yuv
提取所有帧。来自python的子进程调用。这对于240p或480p等小分辨率视频来说效果很好,但是当我移至1080p视频时,即使是单个帧的提取时间也呈指数增长。
我有很多1080p文件,我希望减少时间。我正在考虑的解决方案是从mp4中提取所有Y帧(YUV 420),然后仅选择I帧,因为我从步骤1。
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(上一个)帧。我现在使用的程序是我提取了...
在步骤1中,不存储帧号,而是存储pts_time。