我希望能够在Mac上使用Ruby读取/流式传输视频,并能够访问每一帧的像素数据。
https://github.com/streamio/streamio-ffmpeg
擅长将视频分割为多个帧,但是我不知道如何在不首先将每个帧保存为图像的情况下(或者完全有可能)访问像素数据。
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的配置方式)。
您知道我可以在此用例中使用哪种工具或方法吗?
答案 0 :(得分:1)
如果有可用的ffmpeg(streamio-ffmpeg仅将命令行调用包装到ffmpeg),则可以使用File.mkfifo
创建一个命名管道,并让ffmpeg将其屏幕截图写入该管道。
然后像在任何普通文件中一样在Ruby中打开管道,您可以直接从ffmpeg读取屏幕快照图像,而无需将它们传输到磁盘或从磁盘传输出来。使用您选择的Ruby gem解析像素数据。