VTools

Daemon tools to operate the video (get info, encode & generate thumbnails). Under the hood ffmpeg & ffmpegthumbnailer are used. Some ideas has been taken at the streamio-ffmpeg gem (parse output methods).

Project was developed for the WebTV

Installation

(sudo) gem install vtools

Please read changelog to check ffmpeg versions compatibility (vtools understands 0.7 & 0.8).

Usage

Getting started

Before start, daemon should be configured correctly, to have valid access to the storage. Mandatory methods are: connect, recv and send.

#--file library.rb--#
# encoding: binary

#to setup storage:
VTools::Storage.setup do

  # connection setup
  connect_action do
    # ... connect to the storage (persistent)
  end

  # message reciever
  # should return JSON encoded string
  # see complete storage setup reference for details
  recv_action do
    # ... job data recieve algorithm
  end

  # message sender
  # recieves hash: { :data => execution_result, :action => executed_action }
  # execution_result can be video object or array with thumbnails
  send_action do |result|
    # ... send action here
  end
end

# storage can be setup separate
VTools::Storage.connect_action do
  # ... connect to the storage
end

Setup message (JSON)

{ "action" : "convert|thumbs|info", "file" : "path/to/file", "setup" :  < setup > }
# setup can be:
# -- "predefined_set_id"
# -- { ffmpeg_options_hash }
# -- { "set": "predefined_set_str", ffmpeg_options_hash }

User friendly option names

converter (ffmpeg)
  preserve_aspect   (true or false)
  extension         (result file extension)
  width, height
  resolution
  duration

thumbnailer (ffmpegthumbnailer)
  thumb_count
  thumb_start_point (in percents)
  time              (time offset, alias for -t)
  quality           (0 - 10)
  width

Start

To launch daemon - is enough to require library with storage setup: (sudo) vtools start -- -r library

Options

Daemon options are

start stop restart

Application options are:

-c or --config-file - load config from file -r or --require - load ruby library file (can be used more than once)

To see complete options list use

vtools --help

Using logger

By default the logger gem is used. But there is possibility to set custom logger, that is compatible with the default logger.

VTools.logger = CustomLoger.new($stdout)

Additioinal methods

Path generator is used by the thumnailer, converter or both to generate necessary dir tree logic for the media. It accepts file name and should return relative path (excluding file name itself)

# path generator (used to )
VTools.path_generator do |file_name|
  # ..
  "#{file_name[0..2]}/{file_name[2..4]}"
end

Network calls (TCP GET request, that will return message body content, ignoring response headers)


# http calls
VTools.network_call "site.com/some/uri"
VTools.network_call "www.site.com"
VTools.network_call "http://www.site.com"