【问题标题】:Where to find simple YUV (YUV420P possibly) images to test? (can I extract with ffmpeg?)在哪里可以找到简单的 YUV(可能是 YUV420P)图像来测试? (我可以用 ffmpeg 提取吗?)
【发布时间】:2021-01-19 05:10:41
【问题描述】:

我需要测试一个将 YUV420P(和其他 YUV 格式)渲染为 RGB 的 OpenGL 着色器。仅仅为此解码视频就太过分了。

是否有任何带有 Y、U 和 V 缓冲区的图像样本可供我发送到着色器?

在谷歌上,我只找到了不再托管这些图片的旧网站。

也许有一种方法可以使用 ffmpeg 从任何视频中轻松提取帧?

【问题讨论】:

    标签: opengl video ffmpeg decode


    【解决方案1】:

    您可以使用 ffmpeg 生成一个。

    ffmpeg -f lavfi -i testsrc2=s=1280x720,format=yuv420p -vframes 1 sample.yuv
    

    注意这是平面布局,所以首先是所有 Y 样本,然后是 U,然后是 V。

    【讨论】:

      【解决方案2】:

      Maybe there's a way to easily extract a frame from any video using ffmpeg?

      (1) 用于转换现有图片(eg: PNG):

      ffmpeg -i test.png -pix_fmt yuv420p test.yuv
      

      (2) 用于逐帧转换视频(eg: 提取视频帧xx 编号处的图像):

      ffmpeg -i test.mp4 -pix_fmt yuv420p -vf "select=eq(n\,xx)" -frames:v 1 test.yuv
      

      (3) 用于按时间戳转换视频(eg: 提取特定时间的帧,ssHH:MM:SS 格式):

      ffmpeg -ss 00:23:00 -i test.mp4 -pix_fmt yuv420p -frames:v 1 test.yuv
      

      PS:无论是视频还是图像,如果您需要特定的分辨率,请使用视频过滤器scale,其中W:H 设置中的宽度或高度之一可以替换为@ 987654330@ 保持纵横比(如果需要):

      ffmpeg -i test.png -pix_fmt yuv420p -vf "scale=1280:720" test.yuv
      

      【讨论】:

        猜你喜欢
        • 2011-10-31
        • 2013-10-06
        • 1970-01-01
        • 2010-11-19
        • 2010-10-27
        • 1970-01-01
        • 2013-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多