Доступ к пиксельным данным каждого кадра видео в Ruby - PullRequest
0 голосов
/ 21 января 2019

Я хочу иметь возможность читать / транслировать видео с помощью Ruby на Mac и получать доступ к данным пикселей для каждого кадра.

Что я пробовал

  • 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, поэтому у меня возникают проблемы с его установкой (заголовки не найдены и тому подобное, и нет способ его настройки афаик).

Есть идеи, какой инструмент или метод я мог бы использовать для этого варианта использования?

1 Ответ

0 голосов
/ 23 января 2019

Если у вас есть доступный ffmpeg (streamio-ffmpeg просто оборачивает вызовы командной строки в ffmpeg), вы можете создать именованный канал с File.mkfifo и заставить ffmpeg записывать свои скриншоты в этот канал.

Затем откройте канал в Ruby, как любой обычный файл, и вы можете прочитать снимки экрана непосредственно из ffmpeg без их переноса на диск или с него.Разберите данные о пикселях с помощью драгоценного камня Ruby по вашему выбору.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...