2010-08-14 3 views
0

Если у меня есть массив, содержащий несколько файлов FLV, как так:Как объединить несколько FLV-файлов с помощью FLV :: Splice?

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: Оказывается, это глупый вопрос. Спасибо, @ Эрик за то, что дал мне правильный ответ. Я думал об использовании цикла for, чтобы уменьшить повторное использование метода add_input, но почему-то я думал, что это не сработает, и я думал, что застрял. Хорошо, я буду напоминать себе, что не буду легко беспокоить других людей в следующий раз.

+0

я не знаю, что такое proccess что flvbind.exe делает, но FLV :: Splice только пытается объединить файлы и ничего другого, что я не удивлюсь, если он не сработает ... подробнее на странице модуля также есть следующее: 'Этот инструмент также может создавать неиграбельный контент, если сегменты имеют разные частоты кадров. Это зависит от реализации игрока. Если flvbind имеет процесс кодирования, вы должны просто придерживаться его. – Prix

+0

@Prix, спасибо за комментарий. Да, FLV :: Splice иногда не работает. Но я спрашивал, есть ли способ упростить повторное использование метода add_input? – Mike

ответ

3

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

$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; 
+0

спасибо. Это работает? Я тоже думал об использовании для петель. Хорошо, я дам ему тест. – Mike

+0

Я ничего не могу сказать о модуле FLV :: Splice, я его не использовал (но попробую в какой-то момент, кажется интересным), вот как уменьшить повторение и упростить его использовать. –

+0

ха-ха, да, это работает! Я думал об использовании цикла for, а потом почему-то думал, что это не сработает, и тогда я думал, что застрял. – Mike