середа, 26 вересня 2007 р.

rmovie

rmovie є розширенням Ruby, яке надає методи для доступу до файлів мультимедіа (зокрема відео файлів), він може повертати кадри відео, як малюнки, які в подальшому можна імпортуватися до RMagick. Це дозволяє створювати ескізи малюнків із фільмів. rmovie також корисний для звіту про тривалість і бітрейт аудіо файлів (mp3, wma ...). rmovie має доступ до багатьох відео форматів, які підтримуються ffmpeg (avi, mpg, wmv, mov).

Насамперед пересвідчіться, що Ruby встановлений у вашій системі (тут використовується Ubuntu):
$ sudo apt-get install ruby1.8
$ sudo apt-get install ruby1.8-dev
$ sudo apt-get install rubygems

Для того щоб rmovie працював необхідно встановити також вихідні коди libavcodec і libavformat:
$ sudo apt-get install ffmpeg
$ sudo apt-get install libavcodec-dev
$ sudo apt-get install libavformat-dev


Для того щоб витягувати кадри відео необхідно встановити RMagick:
$ sudo apt-get install librmagick-ruby


Встановити rmovie можна декількома способами:
Спосіб 1.
$ wget http://files.rubyforge.mmmultiworks.com/rmovie/rmovie-0.5.1.gem
$ gem install rmovie-0.5.1.gem

Спосіб 2.
$ gem install rmovie
Building native extensions. This could take a while...
Successfully installed rmovie, version 0.5.1


Невеликий приклад використання rmovie спільно з RMagick

require 'rubygems'
require 'rmovie'
require 'RMagick'
mov = RMovie::Movie.new("movie.avi")
mov.duration # => 5440.43994140625
mov.frame_count # => 136011
mov.frame_width # => 672
mov.frame_height # => 384
mov.has_audio? # => true
mov.file_name # => "/media/sdb5/films/movie.avi"
frame = mov.frame(10)
img = Magick::Image.new(frame.width, frame.height) # => 672x384 DirectClass 16-bit
img.import_pixels(0, 0, frame.width, frame.height, "RGB", frame.to_string, Magick::CharPixel) # => 672x384 DirectClass 16-bit
img.write("output.jpg") # => output.jpg 672x384 DirectClass 16-bit 16kb


За більш докладнішою документацією зверніться до rmovie API Documentation та RMagick Documentation

Область застосування зв'язки rmovie + RMagick обмежує тільки ваша фантазія. Enjoy!

1 коментар:

libc6 сказав...

Выглядит просто фантастичеки. Ужасно захотелось пописать на руби и имено для медиафайлов.