No commit activity in last 3 years
No release in over 3 years
flvedit allows you to: * compute metadata for FLV files * merge, split or cut FLVs * insert / remote cue points or other events flvedit is meant as a replacement for FLVTool2, FLVMeta, FLVTool++ It can be used as a command line tool or as a Ruby library.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 1.7.1
>= 1.3.2
 Project Readme

FLVEdit - Flash video manipulation¶ ↑

FLVEdit is a tool that will read or edit FLV files to:

  • generate meta data

  • add/remove cue points

  • join files

  • inspect files

It is meant as an improved FLVTool2, fixing the shortfalls that prompted others to write FLVTool++ & FLVMeta (see comparison chart)

FLVEdit can be used either as a command-line command or as a ruby library.

Note: The basic functionality is there, but I’ll be improving features and documentation. Until version 1.0, there will most likely be many changes to the command line interface and the library API.

Comments & requests welcome…

Installation¶ ↑

flvedit is a gem mirrored on Rubyforge and can thus be installed with:

sudo gem install flvedit

flvedit is compatible with Ruby 1.8 and 1.9

Command-line tool¶ ↑

Type ‘flvedit’ for description of commands.

Library¶ ↑

FLVEdit is written in ruby and divided in two layers.

FLV file format¶ ↑

The FLV layer handles the FLV file format. It makes reading and writing FLV files a breeze:

FLV::File.open(“example.flv”) {|f| f.to_a } # ==> [<#FLV::Header…>, <#FLV::Tag…>, …]

The main class is FLV::Tag with its different possible bodies: FLV::Audio, FLV::Video and most importantly FLV::Event for all meta data related information (onMetaData, onCuePoint, …)

The data packing and unpacking relies on the packable library.

FLV::Edit tool¶ ↑

The FLV::Edit layer is the command-line tool itself. The FLV::Edit::Runner class parses the options and builds a chain of processors to apply to some flv files. Processors all derive from FLV::Edit::Processor::Base and only need to specify what to do for the type of data it wants to process. A simplistic example to use this level:

class CountCuePoints < FLV::Edit::Processor::Base attr_writer :count def on_cue_point(cue) @count ||= 0 @count += 1 end end

# Call manually count = FLV::File.open(“example.flv”) do |f| CountCuePoints.new(f).process_all.count end

# Chain with other commands: count = FLV::Edit::Runner.new([CountCuePoints, FLV::Edit::Processor::Debug], :files => “example.swf”).run.count

See FLV::Edit::Processor::Base for details on how the processing works

Comparisons with existing tools¶ ↑

FLVTool2¶ ↑

Features:

  • Can join (concat) flv files

  • Won’t load the whole files in memory all at once

  • Won’t choke on read-only files

  • Supports extented timestamps (for flv over… 4 hours!)

Code:

  • Complete rewrite

  • More ruby-oriented

  • Commented

  • Unit tests

  • Easier to use library

  • Easily expandable with your own processing

Compared to FLVTool++¶ ↑

  • Handles cue points

  • Usable as a library

<to be completed>

Compared to FLVMeta¶ ↑

<to be completed>