2010-08-14 14 views
0

Si j'ai un tableau qui contient plusieurs fichiers FLV comme ceci:Comment fusionner plusieurs fichiers FLV en utilisant le module FLV :: Splice?

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

Je peux appeler flvbind .exe comme un programme de ligne de commande externe pour faire la fusion comme ceci:

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

Mais l'utilisation par exemple pour FLV::Splice est la suivante:

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

me semble être incapable de comprendre comment faire la même chose comme le flvbind fait. Dois-je ajouter verbeux tous les param comme ceci:

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"); 

Cela ne ressemble pas à la bonne façon. Je veux dire dois-je ajouter verbalement tous les param? Est-il possible de simplifier l'utilisation répétée de la méthode add_input? Des pointeurs? Merci comme toujours :)

MISE À JOUR: Il s'avère que c'est une question idiote. Merci, @Eric de m'avoir donné la bonne réponse. J'ai pensé à utiliser une boucle for pour réduire l'utilisation répétée de la méthode add_input, mais je pensais que ça ne marcherait pas et je pensais que j'étais bloqué. Eh bien, je me souviendrai de ne pas déranger facilement les autres la prochaine fois.

+0

Je ne sais pas ce qui est le proccess que flvbind.exe fait, mais FLV :: Splice essaye seulement de fusionner les fichiers et rien d'autre que je ne serais surpris si ça ne marche pas ... plus sur la page du module il y a aussi ceci: 'Cet outil peut aussi produire un contenu injouable si les segments ont des framerate différents. Cela dépend de l'implémentation du lecteur. »Si flvbind a un processus d'encodage, alors vous devriez simplement vous en tenir à la place. – Prix

+0

@Prix, merci pour le commentaire. Oui, FLV :: Splice ne fonctionne parfois pas. Mais je demandais s'il y avait un moyen de simplifier l'utilisation répétée de la méthode add_input? – Mike

Répondre

3

Il est assez facile de réduire la répétition:

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

Ou envelopper le tout dans un sous-programme:

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

merci. Est-ce que ça marche? J'ai pensé à utiliser pour les boucles aussi. Eh bien, je vais lui faire un test. – Mike

+0

Je ne peux rien dire à propos de 'FLV :: Splice' le module, je ne l'ai pas utilisé (mais je vais essayer à un moment donné, cela me semble intéressant), c'est ainsi que je peux réduire la répétition et la rendre plus facile utiliser. –

+0

haha, oui, ça marche! J'ai pensé à utiliser une boucle for et puis j'ai pensé que ça ne marcherait pas et j'ai pensé que j'étais bloqué. – Mike