我需要使用网络摄像头捕获视频,并为捕获的每个视频帧输出一个图像。
我曾尝试将 gstreamer 与 multifilesink 一起使用,例如:
gst-launch v4l2src device=/dev/video1 ! video/x-raw-yuv,framerate=30/1 ! ffmpegcolorspace ! pngenc ! multifilesink location="frame%d.png"
但是,这实际上并没有输出每一帧,这意味着如果我以 30 fps 录制 2 秒,我不会得到 60 张图像。我假设这是因为编码不能那么快,所以我需要另一种方法。
我认为如果我有一个管道捕获视频,并且一个单独的管道将该视频转换为帧,它可能会起作用,但我对编解码器的了解不够。我是否需要将视频编码为 h264 或 mp4 等文件,然后再次解码?
有没有人有任何想法或建议?请记住,我需要能够在代码中执行此操作,而不是使用诸如 Adobe Premiere 之类的应用程序。
谢谢!