Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-05-2007, 12:07   #1
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
[C] File audio WAV: devo leggerne l'Header x saperne la lunghezza in tempo?!

... ho dei file WAV da utilizzare, ma devo usare il C per capire quanti secondi/minuti/ore/ecc ... durano in modo da impiegarli nel modo migliore.

Qualcuno lo ha già fatto per caso?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 12:09   #2
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Utilizzare qualcosa tipo questo:

Codice:
/*	*********************************************
		controllo che il file sia un file WAV in "Canonical Wave Format"
		leggo i primi 12 bytes in cui c'e' il primo header di tipo RIFF	*/

	if(*plenfile<12) {
		fprintf(stderr, "lunghezza file troppo piccola, non c'e' il primo 
header\n");
		fclose(f);
		return(0);
	}
	ris=fread(buf,1,12,f);
	if(ris<12) {
		fprintf(stderr, "letti solo %d byte invece di 12\ntermino\n", ris);
		fclose(f);
		return(0);
	}
	/* nei primi 4 byte ci deve essere "RIFF" */
	ris=strncmp(buf,"RIFF",4);
	if(ris!=0) {
		fprintf(stderr, "il primo campo del file non e' RIFF,  non e' un file 
WAV\ntermino\n");
		fclose(f);
		return(0);
	}
	/* nei byte dal 5 all 8 ci deve essere la lunghezza totale del file */
	filelendentroilfile=littleendian32bit2littleendian(buf+4);
	fprintf(stderr, "filelendentroilfile %ld\n", filelendentroilfile);

	if(filelendentroilfile!=*plenfile) {
		fprintf(stderr, "WARNING: filelendentroilfile=%ld  !=  *plenfile=%ld 
\n", filelendentroilfile, *plenfile );
		fprintf(stderr, "ma continuo lo stesso\n" );
		/*
		fclose(f);
		return(0);
		*/
	}
	/* nei byte dal 9 al 12 ci deve essere "WAVE" */
	ris=strncmp(buf+8,"WAVE",4);
	if(ris!=0) {
		fprintf(stderr, "il terzo campo del file non e' WAVE,  non e' un file 
WAV\ntermino\n");
		fclose(f);
		return(0);
	}
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 13:45   #3
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
io non ho mai gestito il formato WAV, ma per i file formats wotsit.org è la fonte: http://www.wotsit.org/list.asp?search=wav&button=GO%21

ciao

edit: questo link dovrebbe fare al caso tuo: http://www.wotsit.org/getfile.asp?fi...e&sc=232612309
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 13:55   #4
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Utilizzare qualcosa tipo questo:

Codice:
/*	*********************************************
		controllo che il file sia un file WAV in "Canonical Wave Format"
		leggo i primi 12 bytes in cui c'e' il primo header di tipo RIFF	*/

	if(*plenfile<12) {
		fprintf(stderr, "lunghezza file troppo piccola, non c'e' il primo 
header\n");
		fclose(f);
		return(0);
	}
	ris=fread(buf,1,12,f);
	if(ris<12) {
		fprintf(stderr, "letti solo %d byte invece di 12\ntermino\n", ris);
		fclose(f);
		return(0);
	}
	/* nei primi 4 byte ci deve essere "RIFF" */
	ris=strncmp(buf,"RIFF",4);
	if(ris!=0) {
		fprintf(stderr, "il primo campo del file non e' RIFF,  non e' un file 
WAV\ntermino\n");
		fclose(f);
		return(0);
	}
	/* nei byte dal 5 all 8 ci deve essere la lunghezza totale del file */
	filelendentroilfile=littleendian32bit2littleendian(buf+4);
	fprintf(stderr, "filelendentroilfile %ld\n", filelendentroilfile);

	if(filelendentroilfile!=*plenfile) {
		fprintf(stderr, "WARNING: filelendentroilfile=%ld  !=  *plenfile=%ld 
\n", filelendentroilfile, *plenfile );
		fprintf(stderr, "ma continuo lo stesso\n" );
		/*
		fclose(f);
		return(0);
		*/
	}
	/* nei byte dal 9 al 12 ci deve essere "WAVE" */
	ris=strncmp(buf+8,"WAVE",4);
	if(ris!=0) {
		fprintf(stderr, "il terzo campo del file non e' WAVE,  non e' un file 
WAV\ntermino\n");
		fclose(f);
		return(0);
	}

http://msdn2.microsoft.com/en-us/library/ms713497.aspx


ciao
okay è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 16:22   #5
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
OK, grazie.
Adesso vedo se ci capisco qualcosa.

Ma voi non utilizzate mai:
http://www.google.com/codesearch?hl=it

?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 19:49   #6
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
O_O
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 22:28   #7
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da 71104 Guarda i messaggi
O_O
Si, x cercare codice da riutilizzare o vedere gli altri come fanno le cose tanto per migliorarsi o 1000 altri usi.

Insomma: è inutile reinventare la ruota. NO?
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 23:11   #8
recoil
Senior Member
 
L'Avatar di recoil
 
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
OK, grazie.
Adesso vedo se ci capisco qualcosa.

Ma voi non utilizzate mai:
http://www.google.com/codesearch?hl=it

?!
cavolo non lo conoscevo, MITICO
io di solito scarico i sorgenti che possono interessarmi e uso cscope, ma così si fa più in fretta
recoil è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 23:19   #9
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da recoil Guarda i messaggi
cavolo non lo conoscevo, MITICO
io di solito scarico i sorgenti che possono interessarmi e uso cscope, ma così si fa più in fretta
Si infatti, ma aiutiamo a vicenda.
Quindi sbizzarritevi ad aiutarmi plz:
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
... ho dei file WAV da utilizzare, ma devo usare il C per capire quanti secondi/minuti/ore/ecc ... durano in modo da impiegarli nel modo migliore.

Qualcuno lo ha già fatto per caso?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2007, 09:54   #10
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
http://www.google.com/codesearch?q=wav+reader&hl=it
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2007, 21:54   #11
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da 71104 Guarda i messaggi
edit: questo link dovrebbe fare al caso tuo: http://www.wotsit.org/getfile.asp?fi...e&sc=232612309
Link inesistente.

Tra l'altro da tutti questi link sembra non uscire un campo di TOT bytes per indicare il tempo.
Come lo ricavo?!

Io pensavo che data la frequenza di campionamento costante si potesse tentare qualcosa del tipo:
frequenza di campionamento * numero di campioni?!

Con un MP3 la vita sarebbe + semplice?!
C'è 1 campo esplicito x la lunghezza del file audio?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 22-05-2007 alle 21:59.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2007, 22:05   #12
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
O almeno trovare un programma che posso lanciare con la funzione "System(STRINGA DI COMANDO)" che mi possa restituire come risultato la lunghezza del file audio.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2007, 22:11   #13
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Link inesistente.

Tra l'altro da tutti questi link sembra non uscire un campo di TOT bytes per indicare il tempo.
Come lo ricavo?!

Io pensavo che data la frequenza di campionamento costante si potesse tentare qualcosa del tipo:
frequenza di campionamento * numero di campioni?!

Con un MP3 la vita sarebbe + semplice?!
C'è 1 campo esplicito x la lunghezza del file audio?!


certo che c'è:

//
TimeWav=Lunghezzafile/W.persec;
//controllo bit
if(W.wBitsPerSample==16)
TimeWav=TimeWav/2;
//numero canali
TimeWav=TimeWav/W.Canali;

forse se guardi il link sopra capiresti meglio...
okay è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2007, 22:17   #14
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da okay Guarda i messaggi
certo che c'è:

//
TimeWav=Lunghezzafile/W.persec;
//controllo bit
if(W.wBitsPerSample==16)
TimeWav=TimeWav/2;
//numero canali
TimeWav=TimeWav/W.Canali;

forse se guardi il link sopra capiresti meglio...
Ti giuro che ho guardato, magari sono io che non capisco, ma guardare ho guardato.
Mi son fatto anche 1 raccolta di quello che ho trovato:
LINK della raccolta.

Ma tu a quale link in particolare stai facendo riferimento?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 22-05-2007 alle 22:23.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 00:21   #15
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Link inesistente.
ops, è vero: il link è divenuto invalido subito dopo che io ho chiuso il browser, si vede che era correlato alla ricerca che ho fatto. comunque non ho fatto nulla di chè: ho solo cercato "WAV" su wotsit.org.

Quote:
Io pensavo che data la frequenza di campionamento costante si potesse tentare qualcosa del tipo:
frequenza di campionamento * numero di campioni?!
veramente sarebbe una divisione, non una moltiplicazione. esempio: 2 campioni al secondo, totale 4 campioni, risultato 2 secondi; però 2*4 fa 8
dovresti fare 4 / 2, cioè numero di campioni / frequenza (intesa come campioni al secondo).
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2007, 19:31   #16
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da okay Guarda i messaggi
certo che c'è:

//
TimeWav=Lunghezzafile/W.persec;
//controllo bit
if(W.wBitsPerSample==16)
TimeWav=TimeWav/2;
//numero canali
TimeWav=TimeWav/W.Canali;

forse se guardi il link sopra capiresti meglio...
Non riesco proprio a capire a che documento stai facendo riferimento.
Io leggendo:



, mi sono fatto questa idea del file wave:

__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2007, 19:41   #17
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Per una migliore soluzione del problema ho incrociato le informazioni:
HELP: devo leggere la lunghezza di files audio WAV con un programmino in C.

... per il ricavo della lunghezza del file audio (in secondi) attraverso algoritmo.
Questo nel qualcaso non riusci a identificare ed ad accedere al fantasmagorico "campo" TimeWav.

[EDIT]

Quote:
Originariamente inviato da cicciociccio Guarda i messaggi
Ok, capito, io ti dico come trovarla poi la applichi tu!
Allora ti spiego come si trova il peso poi con una formula inversa ricavi il tempo.
Prendiamo per esempio un file Wav campionato a 16bit,44.100Hz,stereo(sono 2 canali).
16(bit) x 44.100 (freq.) x 2(canali) x Y (secondi) = peso in bite.
chiaramente se hai un campione con freq. e bit canali diversi basta che li cambi,
es. 8(bit) x 48Khz (freq.) x 1(canale) x Y (secondi) = peso in bite

http://www.lcnet.it/priv/erioforo/mhlpmp3.html qui c'è una buona spiegazione
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 30-05-2007 alle 16:03.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2007, 20:57   #18
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Per una migliore soluzione del problema ho incrociato le informazioni:
HELP: devo leggere la lunghezza di files audio WAV con un programmino in C.

... per il ricavo della lunghezza del file audio (in secondi) attraverso algoritmo.
Questo nel qualcaso non riusci a identificare ed ad accedere al fantasmagorico "campo" TimeWav.
l'include:
#include <mmsystem.h>

apertura file:
HMMIO hmmio;
MMCKINFO mmckinfoParent;
MMCKINFO mmckinfoSubchunk;


/* Apertura file*/
if ((hmmio = mmioOpen(&WaveName[0], 0, MMIO_READ|MMIO_ALLOCBUF)))
{
/* prendi la lunghezza */
WaveDataSize = mmckinfoSubchunk.cksize;

/* chiudi il file */
mmioClose(hmmio, 0);
}

printf WaveDataSize



ciao
okay è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2007, 22:09   #19
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Un pò di riferimenti alla struttura degli Wav
http://www.sonicspot.com/guide/wavefiles.html
http://ccrma.stanford.edu/courses/42...cts/WaveFormat

Devi andare a trovare il Chunk chiamato 'data' e prendere i 4 byte successivi.
A me però risulta che il campo "datasize" sia in big endian (verificabile aprendo un file wave con un editor esadecimale)
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2007, 08:33   #20
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Ecco quì:

Codice HTML:
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <mmsystem.h>
#include <malloc.h>
#include <tchar.h>
#include <stdlib.h>


TCHAR		WaveName[] = "stereo.wav";
WAVEFORMATEX WaveFormat;
DWORD		WaveDataSize;

int _tmain(int argc, _TCHAR* argv[])
{

	HMMIO       hmmio;             
	MMCKINFO    mmckinfoParent;		
	MMCKINFO    mmckinfoSubchunk;	
	//prima intestazione
	if ((hmmio = mmioOpen(&WaveName[0], 0, MMIO_READ|MMIO_ALLOCBUF)))
	{
		mmckinfoParent.fccType = mmioFOURCC('W', 'A', 'V', 'E'); 
		if (mmioDescend(hmmio, (LPMMCKINFO)&mmckinfoParent, 0, MMIO_FINDRIFF)) 
		{
			return(-2);
		} 

...code

		WaveDataSize = mmckinfoSubchunk.cksize;
		printf("Wave size = %u\n", WaveDataSize);
		mmioClose(hmmio, 0);
		system("pause");
		return(0);
	}
	return(-1);
}
così me lo sono imparato anche io

Ultima modifica di okay : 26-05-2007 alle 08:35.
okay è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
Il camion elettrico Semi è davver...
Instagram limita gli hashtag a tre per p...
Le migliori offerte Amazon del momento: ...
RTI e Medusa denunciano Perplexity AI: p...
Avviatori, compressori e accessori auto:...
Samsung Galaxy S26: un leak anticipa le ...
Windows 11, KB5070311 sistema e rompe la...
DJI Mini 3 con controller DJI RC al prez...
Horses riceve il ban anche da Epic: rifi...
Motore elettrico a flusso assiale di Yas...
India, la retromarcia dopo le polemiche:...
La Germania accende il suo colosso eolic...
Mega Risparmi Amazon Haul: fino al 60% s...
Samsung ha dominato il mercato degli sma...
PlayStation 5 in sconto: prezzo abbassat...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:31.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v