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

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Reperire durata di un file video.(RISOLTO)
« il: 31 Agosto 2009, 11:16:35 »
Ciao, desideravo sapere se era possibile recuperare da un file di tipo video, il tempo di durata.
Eventualmente non sia possibile tramite gambas, conoscete magari un comando da shell che faccia al caso mio???
Ciao e grazie.

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Reperire durata di un file video.
« Risposta #1 il: 31 Agosto 2009, 11:50:54 »
Credo che tu debba usare i tool da shell. Primo esempio con ffmpeg:


ffmpeg -i nome_file_video 2>&1 | grep Duration: | awk '{print $2}' | tr -d ','

ti dà la durata in ore:minuti:secondi.decimi

con mplayer che è più comune:

mplayer -nosound -vo null -ss 24:00:00 -really-quiet -identify nome_file_video | grep ID_LENGTH | cut -f2 -d=

ti dà la lunghezza in secondi e te la devi eventualmente formattare. L'opzione -ss
sposta il player alla 24° ora del video (nell'esempio); serve per non riprodurre il video,
a meno che tu non abbia video di 24 ore.

Saluti.

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Re: Reperire durata di un file video.
« Risposta #2 il: 31 Agosto 2009, 20:39:51 »
Grazie mille. era proprio quello che cercavo.
Ciao.

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Reperire durata di un file video.
« Risposta #3 il: 02 Settembre 2009, 10:23:40 »
Perdonate se m0intrometto ma questa è una cosa che cercavo anch'io.
mi spiegereste il significato della riga:
Codice: [Seleziona]
mplayer -nosound -vo null -ss 24:00:00 -really-quiet -identify nome_file_video | grep ID_LENGTH | cut -f2 -d=

Ovviamente tranne quella di ss e della 24° ora :-D
Perdonate l'ot, ma se si volesse fare la medesima cosa ma con file audio?
Come sempre ciao e grazie mille a tutti!

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #4 il: 02 Settembre 2009, 11:53:06 »
mplayer -nosound -vo null -ss 24:00:00 -really-quiet -identify nome_file_video | grep ID_LENGTH | cut -f2 -d=

-nosound = riproduce senza audio

-vo null = Video Output driver è null; quindi il video viene riprodotto su null (quindi non si vede - è come mandare un file verso /dev/null) . Teoricamente si potrebbe anche omettere visto che spostiamo il cursore con -ss.

-really-quiet = mplayer sopprime alcuni messaggi durante la riproduzione

-identify = ti dà tutte le informazioni possibili sul file (durata, tipo, codifica, aspect ratio etc... )

Non so se vuoi anche la spiegazione di grep, comunque:

'grep  ID_LENGTH'  estrae dall'output del comando precedente (mplayer) la riga con la durata

'cut -f2 -d='  restituisce il secondo campo (-f 2 == field 2) usando come delimitatore il segno '=' . Infatti dopo il grep abbiamo ID_LENGTH=305.34

Per i file audio usa la stessa identica riga, ma togli -nosound -vo null.
Al posto di -vo null, puoi mettere -ao null anche se vale il discorso precedente: spostando il cursore con -ss, -ao null è inutile.
 

Ciao.

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #5 il: 02 Settembre 2009, 12:30:19 »
e se volessi farlo mentre riproduco un video?

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #6 il: 02 Settembre 2009, 12:33:56 »
Fare cosa?

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #7 il: 02 Settembre 2009, 12:56:03 »
Vabbè, presumo che vuoi sapere la lunghezza del video mentre lo riproduci.
Allego un piccolo esempio. Si apre un file dialog. Scegli un video. mplayer lo riproduce
e nella console c'è la stringa con la durata (l'ho lasciata grezza). L'esempio è veramente
minimale. Non ci sono controlli d'errore o verifiche se l'utente sceglie un video, o se c'è mplayer nel sistema. E' solo per rispondere alla tua domanda. Ciao.

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #8 il: 02 Settembre 2009, 20:10:53 »
ciao, non riesco a capire come poter utilizzare il dato ricavato dal comando shell.
Più precisamente vorrei portare in stringa la durata del file video.
Ciao.

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #9 il: 02 Settembre 2009, 21:52:39 »
DIM sDuratavideo AS String

SHELL "mplayer -nosound -vo null -ss 24:00:00 -really-quiet -identify " & "percorso_completo_del_file_video" & " 2>&1 | grep ID_LENGTH | cut -f2 -d=" TO sDurataVideo

Allego piccolo esempio. Apri un file video e nella console viene scritta la durata (salvata in una stringa).
C'era da aggiungere il  '2>&1' nel codice Gambas. Comunque l'esempio è semplice e chiaro. Ciao.

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #10 il: 03 Settembre 2009, 15:43:24 »
Perché questa riga non mi visualizza la dimensione del file?
Codice: [Seleziona]
SHELL "mplayer -nosound -vo null -ss 24:00:00 -really-quiet -identify" & ComboBox1.Text & "| grep ID_LENGTH | cut -f2 -d=" TO Label5.Text

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 #11 il: 03 Settembre 2009, 16:01:35 »
Codice: [Seleziona]

DIM responso as string

SHELL "mplayer -nosound -vo null -ss 24:00:00 -really-quiet -identify" & ComboBox1.Text & "| grep ID_LENGTH | cut -f2 -d=" TO responso

Label5.Text = responso

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #12 il: 03 Settembre 2009, 16:22:01 »
ho scritto così:
Codice: [Seleziona]
DIM durata AS String

Codice: [Seleziona]
SHELL "mplayer -nosound -vo null -ss 24:00:00 -really-quiet -identify" & ComboBox1.Text & "| grep ID_LENGTH | cut -f2 -d=" TO durata              Label5.Text = durata

ma la mia label è sempre vuota....

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Reperire durata di un file video.(RISOLTO)
« Risposta #13 il: 03 Settembre 2009, 16:25:20 »
Citazione

Lux ha scritto:
Perché questa riga non mi visualizza la dimensione del file?
Codice: [Seleziona]
SHELL "mplayer -nosound -vo null -ss 24:00:00 -really-quiet -identify" & ComboBox1.Text & "| grep ID_LENGTH | cut -f2 -d=" TO Label5.Text


Perché bisogna redirigere l'output di mplayer sullo standard output con '2>&1':
E metti uno spazio dopo -identify, altrimenti s'incolla con il nome del file
che presumo venga dal combobox.

SHELL "mplayer -nosound -vo null -ss 24:00:00 -really-quiet -identify " & ComboBox1.Text & " 2>&1 | grep ID_LENGTH | cut -f2 -d=" TO Label5.Text

L'avevo scritto nel post precedente di questo thread. Ciao.

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 #14 il: 03 Settembre 2009, 17:09:20 »
Scusate