Autore Topic: Reperire durata di un file video.(RISOLTO)  (Letto 31422 volte)

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #30 il: 27 Settembre 2009, 17:34:03 »
certo ecco!

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #31 il: 27 Settembre 2009, 18:45:19 »
Ok. Ci sono un paio di cose da correggere.

1) ricava l'estensione con File.Ext(ComboBox1.Text) anziché Right$(ComboBox1.Text, 3)
    Ci sono estensioni con 4 lettere tipo .xvid

2) Quando il file è mp3 il comando è : hprocess = EXEC ["mplayer", ComboBox1.Text]
altrimenti mplayer esce con un errore se dai l'opzione -wid

3) sul mio comp ho dovuto disabilitare il componente sdl.sound (ma forse questo è un mio problema) per poter suonare i file con mplayer

4) se scegli il file cliccando sulla icona della directory avrai sempre un errore perché
   in combobox1.text ci sarà una directory

5) se limiti i file audio ai soli mp3 nella seconda parte del IF THEN avrai errori
   se riproduci wav o ogg come video con l'opzione -wid etc

6) estenzione = estensione compa'

Ciao

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #32 il: 27 Settembre 2009, 19:01:58 »
Ok, apporterò le correzioni, grazie!!!!
Citazione
6) estenzione = estensione compa'

ops :oops: si si lo so, errore mio......

PS: cosa ne pensi della mia applicazione? considera che sono ancora all abc....
    diventerò un fuorilegge?? :-)

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #33 il: 27 Settembre 2009, 19:21:42 »
Tutti siamo stati all'abc! E tutto è migliorabile. Ho visto che
appare solo la durata in minuti della canzone. Ho scritto
un po' di codice che trasforma l'output di mplayer in
HH:MM:SS.cents
Ma puoi cambiare il format.
Codice: [Seleziona]

PUBLIC SUB Main()
 
  DIM iSecondiRimanenti, iCentesimi, iSecondi, iMinuti, iOre AS Integer
  DIM sDurata, sFormatDurata AS String
 
  sDurata = "4567.09"
 
  iSecondiRimanenti = Val(File.BaseName(sDurata))
  TRY iCentesimi = Val(File.Ext(sDurata))
   
  iOre = Int(iSecondiRimanenti / 3600)
 
  IF iOre > 0 THEN iSecondiRimanenti = iSecondiRimanenti MOD 3600
 
  iMinuti = Int(iSecondiRimanenti / 60)
  IF iMinuti > 0 THEN iSecondiRimanenti = iSecondiRimanenti MOD 60
 
  iSecondi = iSecondiRimanenti  
 
  sFormatDurata = Format(iOre, "0#") & ":" & Format(iMinuti, "0#") & ":" &
                  Format(iSecondi, "0#") & "." & Format(iCentesimi, "0#")
 
  PRINT sFormatDurata

END

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #34 il: 28 Settembre 2009, 10:15:00 »
Ok, sto dando uno sguardo al tuo codice ma avrei bisogno di alcune spiegazioni.
Codice: [Seleziona]
sDurata = "4567.09" 

In questo modo credo che tu stia formattando la stringa, giusto?
Codice: [Seleziona]
iSecondiRimanenti = Val(File.BaseName(sDurata))   TRY iCentesimi = Val(File.Ext(sDurata)) 

questa non l'ho capita, File.BaseName cosa fa?
Codice: [Seleziona]
 IF iOre > 0 THEN iSecondiRimanenti = iSecondiRimanenti MOD 3600 

idem, MOD è l'operatore modulo % ?
Codice: [Seleziona]
sFormatDurata = Format(iOre, "0#") & ":" & Format(iMinuti, "0#") & ":" &                   Format(iSecondi, "0#") & "." & Format(iCentesimi, "0#") 

Lo 0# cosa indica?
Ciao e grazie mille!

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #35 il: 28 Settembre 2009, 10:35:13 »
Continuo però ad avere il problema del blocco del programma appena tento di ricavre il tempo totale del file audio.

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #36 il: 28 Settembre 2009, 11:42:42 »
Citazione

Lux ha scritto:
Ok, sto dando uno sguardo al tuo codice ma avrei bisogno di alcune spiegazioni.
Codice: [Seleziona]
sDurata = "4567.09" 

In questo modo credo che tu stia formattando la stringa, giusto?
Codice: [Seleziona]
iSecondiRimanenti = Val(File.BaseName(sDurata))   TRY iCentesimi = Val(File.Ext(sDurata)) 

questa non l'ho capita, File.BaseName cosa fa?
Codice: [Seleziona]
 IF iOre > 0 THEN iSecondiRimanenti = iSecondiRimanenti MOD 3600 

idem, MOD è l'operatore modulo % ?
Codice: [Seleziona]
sFormatDurata = Format(iOre, "0#") & ":" & Format(iMinuti, "0#") & ":" &                   Format(iSecondi, "0#") & "." & Format(iCentesimi, "0#") 

Lo 0# cosa indica?
Ciao e grazie mille!


File.BaseName() daà il nome di un file senza estensione. Se consideriamo la stringa
tempo di mplayer che è secondi.cents come se fosse il nome di un file,
con file.basename abbiamo i secondi con TRY File.Ext() ricaviamo i cents. Il TRY ci vuole
nel caso ci sia un valore con solo secondi tipo "300". Poi con Val trasformiamo le stringhe in Integrali.

MOD restituisce il resto di una divisione es.: 9 MOD 4, restituisce 1 perché 9:4=2 con il RESTO di 1.
In questo caso ci aiuta a ricavare i secondi restanti dopo aver calcolato le ore.

0# serve per formattare il risultato a due cifre, aggiuggendo uno zero se è il caso.
così avrai per esempio 05:10:34.21.

Per quanto riguarda il tuo problema io ho risolto e non posso fare niente altro.
Prova a scegliere il file con l'icona open file e non dall'icona directory.
Insomma, nella combobox ci deve essere il nome del file completo di estensione.

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #37 il: 28 Settembre 2009, 11:58:41 »
Citazione
Per quanto riguarda il tuo problema io ho risolto e non posso fare niente altro. Prova a scegliere il file con l'icona open file e non dall'icona directory. Insomma, nella combobox ci deve essere il nome del file completo di estensione.

è ciò che faccio sempre, ho sempre aperto il file con l'icona open file, quindi nella combobox mi ritrovo il nome del file completo di estensione.
Il punto è che il programma va in blocco, è come se però mplayer suonasse il file (anche se io non l'asolto) infatti alla fine del file audio il programma si "sblocca"....

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #38 il: 28 Settembre 2009, 12:09:53 »
A me funziona. Vai in chat e parliamo.

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #39 il: 28 Settembre 2009, 12:41:17 »
Allego il file modificato.
Apri un mp3 con open file;
Clicca play e hai un messaggio con la durata del file.

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #40 il: 28 Settembre 2009, 12:50:05 »
con il brano che provo sempre non va, cambiando brano va.
Ora ho notato che nel brano che mi da problemi deve esserci qualche carattere speciale che blocca il funzionamento, credo che siano gli spazi.
ecco il nome del brano:
Codice: [Seleziona]
01 - Planet Funk - Lemonade.mp3

qui deve esserci qualche carattere speciale che da problemi.....

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #41 il: 28 Settembre 2009, 13:23:50 »
Prova a sostituire questo

Codice: [Seleziona]
SHELL "mplayer -ss 24:00:00 -ao null -really-quiet -identify " & Quote.Shell(ComboBox1.Text) & " 2>&1 | grep ID_LENGTH | cut -f2 -d=" TO durata


con questo

Codice: [Seleziona]
SHELL "mplayer -ss 24:00:00 -ao null -really-quiet -identify " & "'" & Quote.Shell(ComboBox1.Text) & "'" & " 2>&1 | grep ID_LENGTH | cut -f2 -d=" TO durata


e usa la stesa canzone che da problemi.

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #42 il: 28 Settembre 2009, 15:46:17 »
niente, non risolvo....

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #43 il: 28 Settembre 2009, 16:34:31 »
Ma se fai in un terminale:

mplayer -ss 24:00:00 -ao null -really-quiet -identify "01 - Planet Funk - Lemonade.mp3" 2>&1 | grep ID_LENGTH | cut -f2 -d=

cosa succede?

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #44 il: 28 Settembre 2009, 16:44:21 »
Accade questo:
Codice: [Seleziona]
luigi@luigi-desktop:~$ mplayer -ss 24:00:00 -ao null -really-quiet -identify "01 - Planet Funk - Lemonade.mp3" 2>&1 | grep ID_LENGTH | cut -f2 -d= luigi@luigi-desktop:~$