Newsgroup: it.media.video.produzione
Titolo: unire files mpeg

Ciao a tutti,
ho la seguente domanda:
Possiedo una videocameracon Hard disk e quando voglio riversare i filmati
fatti mi ritrovo con tantissimi files corrispondenti ad ogni singola ripresa
fatta.
Vorrei sapere se esiste un software che è in grado di unire diversi file
mpeg in base a dei criteri da me stabiliti.
Stò cercando ad esempio un software che dia la possibilità di unire
automaticamente i file registrati in uno stesso giorno (o, meglio, in un
intervallo di tempo di tre-quattro giorni) contenuti in una directory.
Finora ho solo trovato dei software che fanno un unione di files che però
devo selezionare manualmente; il problema è che se un utente vuole riversare
su dei DVD il contenuto di un hard disk di 30 gigabytes (per fare un
esempio) si ritrova con centinaia di files che portano via tantissimo tempo
per essere uniti frà di loro in modo tale da creare un menu sul DVD che mi
consenta di navigare in maniera agevole.
Grazie per le eventuali risposte
Ciao
Gianfranco
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 intervallo di tempo di tre-quattro giorni) contenuti in una directory.
Con uno scriptino Perl (c'e' per tutte le piattaforme), passandogli 4
argomenti: la directory, il file di destinazione, la data iniziale e data
finale (le date sono nel formato AAAA-MM-GG):
  use Time::Local;
  use Fcntl ':mode';
  sub totime {
    my $data=shift;
    my ($a,$m,$g)=split("-",$data);
    return(timelocal(0,0,0,$g,$m-1,$a));
  }
  if(!opendir(DIR,$ARGV[0])) {
    print "Impossibile aprire la directory $ARGV[0]: $!\n";
    exit;
  }
  if(!open(DEST,">$ARGV[1]")) {
    print "Impossibile aprire il file destinazione $ARGV[1]: $!\n";
    exit;
  }
  $stime=totime($ARGV[2]);
  $ftime=totime($ARGV[3])+24*60*60;
  @files=sort(grep(!/^\./,readdir(DIR)));
  closedir(DIR);
  for($i=0;$i<=$#files;$i++) {
    @s=stat("$ARGV[0]/$files[$i]");
    if($s[9]>=$stime && $s[9]<$ftime && S_ISREG($s[2])) {
      print "Sto processando $ARGV[0]/$files[$i]...\n";
      if(open(F,"$ARGV[0]/$files[$i]")) {
        while(read(F,$buffer,1024*1024)) { print DEST $buffer; }
        close(F);
      }
    }
  }
  close(DEST);
Poi puoi fare una mini-GUI con il Perl-Tk, aggiungendo poche righe di
codice.
Ciao!
  Luca

 finale (le date sono nel formato AAAA-MM-GG):
Ciao,
innanzitutto grazie per la risposta , peró ho una cosa non chiara:
mi sembra di capire che lo script che mi hai inviato, e che non ho ancora
eseguito perché mi stó procurando un compilatore,
unisce tra di loro due o piú generici files, quindi non è dedicato
specificatamente a dei files mpeg.
Questo vorrebbe dire che per i files mpeg succede una cosa, probabilmente
non vera per un generico file, che consiste nella possibilitá di
"attacargli" sequenzialmente e, senza ulteriori processamenti, le
informazioni contenute in un altro file.
E' vero quello che ho detto?


 E' vero quello che ho detto?
Si' se i file MPEG hanno le stesse caratteristiche: per il video
dimensioni e fps, per l'audio i canali, la compressione (mp2, ac3, dts,
LPCM, ecc.) e la frequenza. In caso contrario il lettore potrebbe non
riprodurre correttamente la parte "attaccata".
Ciao!
  Luca


Ciao,
ho scaricato da activestate il perl ed ho eseguito lo script senza successo.
I files vengono processati come riportato dai messaggi di testo generati
dallo script (sto processando 1.mpg, sto processando 2.mpg e cosi via)
Anche la corrispondenza con le date viene mantenuta nel senso che vengono
effettivamene processati i files all'interno di un arco temporale
determinato dagli argomenti che gli passo quando eseguo lo script.
Nessun messaggio di errore viene visualizzato.
Il file generato, peró, non risulta leggibile nonostante lo siano i singoli
files prima dell'unione.
Il settaggio della compressione mpeg usata per produrre i singoli files è la
stessa.
Tu hai giá provato ad usare lo script ?
Ti funziona?


 Tu hai giá provato ad usare lo script ? Ti funziona?
Urka, mi sono dimenticato che usi Windows.... Su sistemi unix funziona
perche' non c'e' differenza tra file binari e di testo. Con Window devi
invece aggiungere la riga:
  binmode(F);
subito dopo la open. Quindi il pezzettino di lettura/scrittura diventa:
      if(open(F,"$ARGV[0]/$files[$i]")) {
        binmode(F);
        while(read(F,$buffer,1024*1024)) { print DEST $buffer; }
        close(F);
      }
Scusa per la dimenticanza....
CIAO!
  Luca

 }
Ciao,
ho provato ad inserire la tua modifica e non funziona ancora...
File creato, ma non leggibile.
Ho provato anche ad inserire un binmode (DEST) nell'istruzione dell'apertura
del file dove poi vai a scrivere l'unione, ma anche in questo caso senza
successo.
Boh, non vorrei approfittare molto della tua disponibilitá, se ti viene in
mente qualche idea fammela sapere.
Grazie comunque


 Se ti viene in mente qualche idea fammela sapere.
Per controllare che vengano copiati correttamente, prova ad eseguire
il comando seguente (magari metti 2 file piccoli in una directory):
  copy /b *.mpg c:\filedestinazione.mpg
e poi esegui anche la procedura con il programmino perl. Se i 2 file hanno
dimensione differente, vuol dire che qualcosa non torna ancora. Se,
invece, la dimensione e' uguale ma non riesci a riprodurre comunque i
file, allora vuol dire che non sono MPEG....
Ciao!
  Luca

 consenta di navigare in maniera agevole.
Premessa: per la mia esperienza, la percentuale del girato che vale 
effettivamente la pena di mettere su un DVD (per vederla tutta di 
seguito o quasi) è abbastanza lontana dal 100%. In quello che giro io 
quando sono in vacanza, ad esempio, è circa il 50-60%, ma conosco 
persone che (forse perché non sono passati dall'esperienza con la 
pellicola, in cui si doveva centellinare ogni secondo di ripresa) 
utilizzano in montaggio non più del 25% del girato.
Detto questo, mi sembra "strano" cercare un SW che accodi una all'altra 
le clip girate; mi sembrerebbe più opportuno selezionarle e se del caso 
tagliarle, mantenendo solo le parti migliori (o scartando quelle inutili 
o venute male, se ce ne sono) man mano che il montaggio procede.
Conosco vari SW che permettono di farlo e dopo averne provati vari ho 
scelto MPEG Wizard DVD, della Womble, col quale non solo quello che vuoi 
fare tu si fa con estrema facilità (ma non in automatico), ma si può 
anche intervenire con tagli al fotogramma, correzioni e filtraggi 
(quando necessari, ma non ho mai visto una videocamera che non 
sbagliasse mai l'esposizione di una clip o almeno di una parte di una 
clip). E poi (cosa essenziale, dal mio punto di vista) salvare il tutto 
senza ricodificare (tranne le parti filtrate) e quindi senza perdita di 
qualità.
Con questo non voglio dire che quello che stai tentando di fare a 
seguito della discussione in corso non sia potenzialmente utile ai tuoi 
fini, ma solo portare qui la mia piccola ma positiva esperienza 
sull'argomento in discussione (faccio spesso montaggi di clip MPEG2, per 
ragioni di lavoro).
Ciao
Al


Hai ragione solo sei hai il tempo per effettuare il montaggio delle riprese.
Io spesso non ho il tempo per effettuare un montaggio "raffinato" tagliando
le scene o inserendo filtraggi.
Mi accontento semplicemente di riversare su un DVD tutto quello che ho
ripreso inserendo un menù che mi consenta di navigare nel DVD avendo la
possibilità, ad esempio, di andare a vedere quello che ho registrato nel
giorno di natale piuttosto che sorbirmi tutte le riprese fatte prima di quel
giorno.
