IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Commande system, fichier introuvable


Sujet :

Langage Perl

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 13
    Par défaut Commande system, fichier introuvable
    salut

    lorsque je execute mon script perl

    perl script.pl j`ai cette erreur Can't exec "perl /home/desktop/conversiondossier/vconvert.pl": Aucun fichier ou dossier de ce type at conversionGI.pl line 13.


    voila mon le contenu de mon script.pl



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    #!/usr/bin/perl
    use warnings;
    use strict;
     
    my $repertoire = '/home/desktop/conversiondossier/videoSource';
    foreach my $fichier ( lister_fichiers( $repertoire,1 ) ) {
      print " la conversion de fichier: $fichier est demarre\n";
       print "------------------------------------------------------\n";
     
     
     
      system('perl /home/desktop/conversiondossier/vconvert.pl' ,'--target','flv' ,$fichier );
     
      print "------------la conversion fini-------------------------\n";
     
    }
     
    #======================================================
    # Nombre d'arguments : 1 ou 2
    # Argument(s)        : un répertoire et valeur 0 ou 1
    # Retourne           : Tableau de fichier (@fichiers)
    #======================================================
    sub lister_fichiers {
      my ( $repertoire, $recursivite ) = @_;
     
      require Cwd;
      require File::Spec;
     
      my $cwd = Cwd::getcwd();
     
      # Recherche dans les sous-répertoires ou non
      if ( ( not defined $recursivite ) || ( $recursivite != 1 ) ) { $recursivite = 0; }
     
      # Verification répertoire
      if ( not defined $repertoire ) { die "Aucun repertoire de specifie\n"; }
     
      # Ouverture d'un répertoire
      opendir my $fh_rep, $repertoire or die "impossible d'ouvrir le répertoire $repertoire\n";
     
      # Liste fichiers et répertoire sauf (. et ..)
      my @fic_rep = grep { !/^\.\.?$/ } readdir $fh_rep;
     
      # Fermeture du répertoire
      closedir $fh_rep or die "Impossible de fermer le répertoire $repertoire\n";
     
      chdir $repertoire;
      $repertoire = Cwd::getcwd();
     
      # On récupère tous les fichiers
      my @fichiers;
      foreach my $nom (@fic_rep) {
        my $notre_fichier = File::Spec->catfile( $repertoire, $nom );
     
        if ( -f $notre_fichier ) {
          push @fichiers, $notre_fichier;
        }
        elsif ( -d $notre_fichier and $recursivite == 1 ) {
          push @fichiers, lister_fichiers($notre_fichier, $recursivite);    # recursivité
        }
      }
     
      chdir $cwd;
     
      return @fichiers;
    }
    y`a t`il quelqu`un qui a déjà ce problème sous ubuntu car j`ai test` ce programme perl sous windows et ca marche tres bien

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Il sembke que dans la ligne de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      system('perl /home/desktop/conversiondossier/vconvert.pl' ,'--target','flv' ,$fichier );
    il y ait une erreur parce que le programme ne trouve pas le fichier /home/desktop/conversiondossier/vconvert.pl à cet emplacement.

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Peux-tu essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    #!/usr/bin/perl
    use warnings;
    use strict;
     
    my $ProgrammeConversion = '/home/desktop/conversiondossier/vconvert.pl'; 
    my $repertoire          = '/home/desktop/conversiondossier/videoSource';
     
    if ( -e $ProgrammeConversion ) {
      print "Le programme de conversion existe\n";
    }
    else {
      print "Le programme $ProgrammeConversion n'existe pas\n";
      exit;
    }
     
    foreach my $fichier ( lister_fichiers( $repertoire,1 ) ) {
      print " la conversion de fichier: $fichier est demarre\n";
      print "------------------------------------------------------\n";
      system "perl $ProgrammeConversion --target flv $fichier";
      print "------------la conversion fini-------------------------\n"; 
    }
     
    #======================================================
    # Nombre d'arguments : 1 ou 2
    # Argument(s)        : un répertoire et valeur 0 ou 1
    # Retourne           : Tableau de fichier (@fichiers)
    #======================================================
    sub lister_fichiers {
      my ( $repertoire, $recursivite ) = @_;
     
      require Cwd;
      require File::Spec;
     
      my $cwd = Cwd::getcwd();
     
      # Recherche dans les sous-répertoires ou non
      if ( ( not defined $recursivite ) || ( $recursivite != 1 ) ) { $recursivite = 0; }
     
      # Verification répertoire
      if ( not defined $repertoire ) { die "Aucun repertoire de specifie\n"; }
     
      # Ouverture d'un répertoire
      opendir my $fh_rep, $repertoire or die "impossible d'ouvrir le répertoire $repertoire\n";
     
      # Liste fichiers et répertoire sauf (. et ..)
      my @fic_rep = grep { !/^\.\.?$/ } readdir $fh_rep;
     
      # Fermeture du répertoire
      closedir $fh_rep or die "Impossible de fermer le répertoire $repertoire\n";
     
      chdir $repertoire;
      $repertoire = Cwd::getcwd();
     
      # On récupère tous les fichiers
      my @fichiers;
      foreach my $nom (@fic_rep) {
        my $notre_fichier = File::Spec->catfile( $repertoire, $nom );
     
        if ( -f $notre_fichier ) {
          push @fichiers, $notre_fichier;
        }
        elsif ( -d $notre_fichier and $recursivite == 1 ) {
          push @fichiers, lister_fichiers($notre_fichier, $recursivite);    # recursivité
        }
      }
     
      chdir $cwd;
     
      return @fichiers;
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 13
    Par défaut
    merci ca march tres bien maintenant

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 13
    Par défaut
    le problème maintenant est en ligne de vconvert.pl


    my $ffmpeg = '/home/desktop/conversiondossier/ffmpeg.r11870.exe';

    il me donne cet erreur

    run-detectors: unable to find an interpreter for
    /home/desktop/conversiondossier/ffmpeg.r11870.exe


    voila le code de vconvert.pl




    #! c:/perl/bin/perl
    #
    # vconvert.pl
    #
    # 1.006 : 4/7/12 : Changed ffpmeg to build 41a097a
    # 1.005 : 5/12/08 : Added --concat option
    # 1.004 : 5/11/08 : Added async 1000.
    # 1.003 : 3/30/08 : When source and target file names are the same, add -new to the target file name.
    # Modified to generate the target file in the run directory.
    # 1.002 : 3/15/08 : Added swf format
    # 1.001 : 2/16/08 : Modified to work with r11870
    # 1.0 : 2/10/08 : Release
    #
    # Convert video files into another format.
    # flv -> avi
    # flv -> mp4
    # flv -> wmv
    # flv -> swf
    # avi -> mp4
    # avi -> wmv
    # avi -> flv
    # avi -> swf
    # mp4 -> avi
    # mp4 -> wmv
    # mp4 -> flv
    # mp4 -> swf
    # wmv -> mp4
    # wmv -> avi
    # wmv -> flv
    # wmv -> swf
    # divx -> mp4
    # divx -> avi
    # divx -> flv
    # divx -> wmv
    # divx -> swf
    #
    # Audio extraction
    # flv -> mp3
    # avi -> mp3
    # mp4 -> mp3
    # wmv -> mp3
    # divx -> mp3
    # swf -> mp3
    #
    # http://www.hidekik.com/
    #
    # Usage(Japanese) :
    # http://www.hidekik.com/commands/p2h.cgi?id=vconvert
    #
    # Copyright(c) 2007-2012 Hidei Kanayama, All rights reserved

    use strict;
    use Getopt::Long;

    my %opt;

    &GetOptions(\%opt,
    "help!",
    "size=s",
    "aspect=s",
    "target=s",
    "outfile=s",
    "concat!",
    );

    if ($#ARGV == -1 or $opt{help}) {
    print <<END;
    Usage: vconvert.pl [options] <video file> [<video files> ...]
    Available options
    --help : Display this message
    --size <WxH> : Output video size, e.g. 320x240, 320x180, ...
    default : no change
    --aspect <ratio> : Aspect ratio, e.g. 4:3, 16:9, 1.7777, ...
    default : no change
    --target <format> : Target format, e.g. mp4, avi, wmv, flv, mp3
    default : mp4
    If mp3 is specified, only audio is extracted
    --outfile <filename> : Specify output file name
    --concat : Concatenate multiple input videos to one file specified by --target. This generates multiple large temporary files during processing.

    Example :
    - Convert a flv file to a mpeg4 file
    vconvert.pl invideo.flv
    - Convert a flv file for iPod
    vconvert.pl --size 320x240 invideo.flv
    - Convert a flv file for iPod and original file has 16:9 aspect ratio
    vconvert.pl --size 320x180 --aspect 16:9 invideo.flv
    - Convert many flv files for iPod at one time
    vconvert.pl --size 320x240 invideo1.flv invideo2.flv invideo3.flv invideo4.flv ....
    - Convert a flv file to an avi file
    vconvert.pl --target avi invideo.flv
    - Convert a wmv file to a flv file
    vconvert.pl --target flv invideo.wmv
    - Extract audio only from a flv file
    vconvert.pl --target mp3 invideo.flv
    - Concatenate multiple mpeg4 files to one mpeg4 file
    vconvert.pl --concat --target mp4 --outfile out.mp4 in1.flv in2.flv in3.flv
    - Display a help
    vconvert.pl --help
    END

    exit;
    }

    my $ffmpeg = '/home/desktop/conversiondossier/ffmpeg.r11870.exe';

    my $size;
    my $aspect;
    if ($opt{size} ne ''){
    $size = "-s $opt{size}";
    }
    if ($opt{aspect} ne ''){
    $aspect = "-aspect $opt{aspect}";
    }

    my %codec = (
    mpg => {
    vcodec => 'mpeg1video',
    targext => 'mpg',
    acodec => 'mp2',
    r => '-r 29.97',
    },
    mp4 => {
    # vcodec => 'mpeg4',
    vcodec => 'libx264',
    targext => 'mp4',
    acodec => 'libvo_aacenc',
    r => '-r 29.97',
    },
    avi => {
    vcodec => 'msmpeg4v2',
    targext => 'avi',
    acodec => 'wmav2',
    },
    wmv => {
    vcodec => 'wmv2',
    targext => 'wmv',
    acodec => 'wmav2',
    },
    flv => {
    vcodec => 'flv',
    targext => 'flv',
    acodec => 'libmp3lame',
    ar => '-ar 44100',
    },
    swf => {
    vcodec => '',
    targext => 'swf',
    acodec => 'libmp3lame',
    ar => '-ar 44100',
    },
    # xdiv => {
    # vcodec => 'xdiv',
    # targext => 'xdiv',
    # acodec => 'libmp3lame',
    # ar => '-ar 44100',
    # },
    # '3gp' => {
    # vcodec => 'mpeg4',
    # targext => '3gp',
    # acodec => 'aac',
    # ar => '-ar 8000',
    # },
    mp3 => {
    targext => 'mp3',
    acodec => 'libmp3lame',
    }
    );

    # $vconfig,$targext,$acodec,$ar,$r
    my $config = [&vconfig($opt{target})];
    my @inlist = @ARGV;
    my $tmpcat = "outfile-cat.mpg";

    if ($opt{concat}){
    my $rfconfig = [&vconfig('mpg')];
    @inlist = &convert(\@inlist,$rfconfig,1);
    &concat(\@inlist);
    &convert([$tmpcat],$config);
    unlink @inlist;
    unlink $tmpcat;
    } else {
    &convert(\@inlist,$config);
    }

    sub convert {
    my ($tmplist,$config,$concat) = @_;
    my ($vcodec,$targext,$acodec,$ar,$r) = @{$config};
    my $cnt = 1;
    my @tmplist;
    foreach my $org (@{$tmplist}){
    my $repertoire="/home/desktop/conversiondossier/VideoDestination/";
    my $body = $repertoire;

    my @filenamee= split( '\\\\',$org); #prendre chaque ligne structuré et la mettre dans un tableau


    my $Filename=NomFichier($filenamee[4]);#utilser la méthode NomFichier pour extraire le nom de fichier ASCII


    my $body = $repertoire.$Filename;



    $body =~ s/^(.+)\.\w+?$/$1/;
    my $targetfile = "$body.$targext";
    my $title = $body;
    if ($concat){
    $targetfile = "$body-tmp${cnt}.$targext";
    } elsif ($opt{outfile} ne ''){
    $targetfile = "$opt{outfile}";
    $title = $targetfile;
    $title =~ s/^(.+)\.\w+?$/$1/;
    } elsif ("$targetfile" eq "$org"){
    $targetfile = "$body-new.$targext";
    }

    my $ffmpeg_cmd;
    if ($concat){
    # same format does not match with mpg. So -sameq does not work.
    # $ffmpeg_cmd = qq($ffmpeg -y -i "$org" -sameq "$targetfile");
    $ffmpeg_cmd = qq($ffmpeg -y -i "$org" $vcodec "$targetfile");
    } elsif ($opt{target} eq 'mp3'){
    # $ffmpeg_cmd = qq($ffmpeg -y -i "$org" -title "$title" -acodec $acodec -vn "$targetfile");
    $ffmpeg_cmd = qq($ffmpeg -y -i "$org" -vn "$targetfile");
    } else {
    # $ffmpeg_cmd = qq($ffmpeg -y -i "$org" -title "$title" -async 1000 -acodec $acodec $ar -ab 128kb $vcodec $r -b 1200kb -mbd 2 -cmp 2 -subcmp 2 $size $aspect "$targetfile");
    $ffmpeg_cmd = qq($ffmpeg -y -i "$org" $vcodec $size $aspect "$targetfile");
    }

    print `$ffmpeg_cmd`;
    $cnt++;
    push @tmplist, "$targetfile";
    }
    return (@tmplist);
    }

    sub concat {
    my $tmplist = shift;

    open (CONCAT, "> $tmpcat");
    binmode CONCAT;
    foreach my $file (@{$tmplist}){
    open (FILE, "< $file");
    binmode FILE;
    while (my $line = <FILE>){
    print CONCAT $line;
    }
    close(FILE);
    }
    close(CONCAT);
    }

    sub vconfig {
    my $target = shift;
    $target ||= 'mp4';
    my $vcodec = $codec{$target}{vcodec} ? "-vcodec $codec{$target}{vcodec}" : '';
    my $targext = $codec{$target}{targext};
    my $acodec = $codec{$target}{acodec};
    my $ar = $codec{$target}{ar};
    my $r = $codec{$target}{r};
    return ($vcodec,$targext,$acodec,$ar,$r);
    }


    #==============Fonction qui permet d'extraire le nom dun fichier dans un répertoire==================================
    sub NomFichier{
    my ( $nom)= @_ ;
    my@nn=split(/\./,$nom);


    my$filetype=pop(@nn);

    my $name=$nn[0];
    for(my $i=1;$i<=$#nn;$i++)
    {
    $name=join('.',$name,$nn[$i]);
    };

    return $name;
    }


    #===========================================

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/07/2010, 16h22
  2. Réponses: 1
    Dernier message: 07/04/2010, 13h37
  3. ouvrir fichier avec la commande system()
    Par paissad dans le forum C
    Réponses: 5
    Dernier message: 19/05/2007, 21h28
  4. Prblème avec la commande system
    Par AnneOlga dans le forum C++Builder
    Réponses: 8
    Dernier message: 04/03/2004, 16h05
  5. La commande systeme
    Par sunshine33 dans le forum MFC
    Réponses: 11
    Dernier message: 13/01/2004, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo