Как объединить несколько файлов FLV с помощью модуля FLV :: Splice? - PullRequest
0 голосов
/ 14 августа 2010

Если у меня есть массив, содержащий несколько файлов FLV, например:

my @src_files = qw (1.flv 2.flv 3.flv 4.flv 5.flv 6.flv 7.flv);

Я могу вызвать flvbind .exe как внешнюю программу командной строки, чтобы выполнить объединение следующим образом:

my $args = join(' ',@src_files);
my $dest_file = 'merged.flv';
system "flvbind $dest_file $args";

Но пример использования для FLV :: Splice таков:

use FLV::Splic; 
my $converter = FLV::Splice->new();
$converter->add_input('first.flv');
$converter->add_input('second.flv');
$converter->save('output.flv');

Кажется, я не могу понять, как сделать то же самое, что делает flvbind. Должен ли я многословно добавлять каждый параметр следующим образом:

use FLV::Splice;

my $dest_file = 'merged.flv';
my $converter = FLV::Splice->new();
$converter->add_input('1.flv');
$converter->add_input('2.flv');
$converter->add_input('3.flv');
$converter->add_input('4.flv');
$converter->add_input('5.flv');
$converter->add_input('6.flv');
$converter->add_input('7.flv');
$converter->save("$dest_file");

Это не похоже на правильный путь. Я имею в виду, я должен многословно добавить каждый параметр? Есть ли способ упростить повторное использование метода add_input? Есть указатели? Спасибо как всегда :)

UPDATE: Оказывается, это глупый вопрос. Спасибо, @Eric за правильный ответ. Я думал об использовании цикла for, чтобы уменьшить повторное использование метода add_input, но почему-то я думал, что он не будет работать, и я думал, что застрял. Ну, я буду напоминать себе, что в следующий раз я не буду беспокоить других людей.

1 Ответ

3 голосов
/ 14 августа 2010

Довольно легко уменьшить повторение:

$converter->add_input($_) for @src_files;

Или обернуть все это в подпрограмму:

sub flv_splice {
    my $dest_file = shift;
    my $converter = FLV::Splice->new();
    $converter->add_input($_) for @_;
    $converter->save($dest_file);
}

flv_splice 'merged.flv', @src_files;
...