在Ruby中访问视频每一帧的像素数据

时间:2019-01-21 17:50:29

标签: ruby macos image-processing ffmpeg hornetseye-ffmpeg

我希望能够在Mac上使用Ruby读取/流式传输视频,并能够访问每一帧的像素数据。

我尝试过的


require 'streamio-ffmpeg'
movie = FFMPEG::Movie.new("flakes.mp4")

movie.screenshot("screenshots/screenshot_%d.jpg", { custom: %w(-vf crop=60:60:10:10), vframes: (movie.duration).to_i, frame_rate: movie.frame_rate/24 }, { validate: false })`

  • https://github.com/wedesoft/hornetseye-ffmpeg

    这似乎有很大的潜力,但是我不认为它已经得到维护,并且它并不是真的要在MacOS上使用,所以我在那里安装它遇到了问题(找不到标题等等), afaik的配置方式)。

您知道我可以在此用例中使用哪种工具或方法吗?

1 个答案:

答案 0 :(得分:1)

如果有可用的ffmpeg(streamio-ffmpeg仅将命令行调用包装到ffmpeg),则可以使用File.mkfifo创建一个命名管道,并让ffmpeg将其屏幕截图写入该管道。

然后像在任何普通文件中一样在Ruby中打开管道,您可以直接从ffmpeg读取屏幕快照图像,而无需将它们传输到磁盘或从磁盘传输出来。使用您选择的Ruby gem解析像素数据。