leer byte a byte dos archivos diferentes y poder unirlos en un tercero

18/05/2004 - 18:04 por voyagerx3 | Informe spam
Hola

gracias por la orientación y la ayuda.



lo que intento hacer es desarrollar es una pagina en asp que genere un
archivo en formato mp3 con una secuencia de sonidos predefinidos y
seleccionados por el usuario (la secuencia de sonidos esta hecho en flash).



así por ejemplo el usuario escogé el sonido 1,4 ,5 ,8 la pagina debe
permitir guardar un archivo en formato mp3 con esta secuencia de sonidos.
algo así como un editor de sonidos básico.



De lo que he investigado un archivo mp3 esta compuesto por un header , data,
footer. El header y footer tienen un tamaño fijo y es donde se guarda los
flags del archivo.. como el tipo de codificación, titulo de la canción etc..





si úno los archivos en la zona de datos byte a byte puedo generar la
secuencia de sonido deseado.

los sonidos tienen la misma codificación, y el mismo tiempo de duración.





para hacer todo esto he investigado como leer un archivo byte a byte

usando



Set fs = CreateObject("Scripting.FileSystemObject")

Set fx = fs.OpenTextFile(Camino, 1, False, 0)



While (Not fx.AtEndOfStream )

str0 = fx.Readall

lenrow = Len(str0)

Wend

str1 = ""

For i = 1 To lenrow

C_Ascii = Asc(Mid(str0, i, 1))

'Aqui lo conviertes a Hexa:

ElHexa = Hex(C_Ascii)

If ElHexa < Hex (10) Then

str1 = str1 + "0" + ElHexa

Else

str1 = str1 + ElHexa

End If

next i



despues leeo el segundo archivo.. etc... y luego guardo el resultado..



algunos problemillas

Algunos valores hexadecimal de los datos son correctos; pero los valores
hexadecimales de control no son correctos, por alguna razon esta funcion
Asc(Mid(str0, i, 1)) siempre los toma como "0" y ya no son iguales.



Ahora al momento de guardar: utilizando este objeto FileSystemObject

pregunta?

comó puedo guardar en formato hex y no ascii?



Tambien he utilizado

Set objStream = Server.CreateObject("ADODB.Stream")

Pero no me permite modificar las datos.. lee todo el archivo.. y lo guarda..





si alguien tiene alguna idea... es bienvenida









Geovanny
 

Leer las respuestas

#1 Gabriel South
19/05/2004 - 05:51 | Informe spam
Hace como un año atras intente hacer lo mismo (eso de leer binarios desde
asp) y tuve los mismos problemas que mencionastes.

El filesystemobject definitivamente no funciona (o no lo pude hacer
funcionar) para leer binarios, ya que VBscript no soporta abrir archivos
tipo binario como el visual basic.

Probe tambien usando ADO y obtuve mejores resultados, consegui leer el
archivo y pasarlo a una variable. lo que no puedo encontrar por ningun
lugar de mi disco fijo es el archivo que estaba probando para saber si lo
hice andar o no.

Definitivamente usé otro metodo para leer el binario y manipularlo, creé un
control activex en visual basic, usando el binary read y write.

open "archivo.mp3" for binary as #1
..etc,etc

Claro esta que si estas usando un servidor que no permite poner tus
controles activex, estas frito.

Otra cosa no se me ocurre..

Suerte.. Gabriel.



"voyagerx3" <voyagerx3arrobahotmail.com> escreveu na mensagem
news:%
Hola

gracias por la orientación y la ayuda.



lo que intento hacer es desarrollar es una pagina en asp que genere un
archivo en formato mp3 con una secuencia de sonidos predefinidos y
seleccionados por el usuario (la secuencia de sonidos esta hecho en


flash).



así por ejemplo el usuario escogé el sonido 1,4 ,5 ,8 la pagina debe
permitir guardar un archivo en formato mp3 con esta secuencia de sonidos.
algo así como un editor de sonidos básico.



De lo que he investigado un archivo mp3 esta compuesto por un header ,


data,
footer. El header y footer tienen un tamaño fijo y es donde se guarda los
flags del archivo.. como el tipo de codificación, titulo de la canción


etc..





si úno los archivos en la zona de datos byte a byte puedo generar la
secuencia de sonido deseado.

los sonidos tienen la misma codificación, y el mismo tiempo de duración.





para hacer todo esto he investigado como leer un archivo byte a byte

usando



Set fs = CreateObject("Scripting.FileSystemObject")

Set fx = fs.OpenTextFile(Camino, 1, False, 0)



While (Not fx.AtEndOfStream )

str0 = fx.Readall

lenrow = Len(str0)

Wend

str1 = ""

For i = 1 To lenrow

C_Ascii = Asc(Mid(str0, i, 1))

'Aqui lo conviertes a Hexa:

ElHexa = Hex(C_Ascii)

If ElHexa < Hex (10) Then

str1 = str1 + "0" + ElHexa

Else

str1 = str1 + ElHexa

End If

next i



despues leeo el segundo archivo.. etc... y luego guardo el resultado..



algunos problemillas

Algunos valores hexadecimal de los datos son correctos; pero los valores
hexadecimales de control no son correctos, por alguna razon esta funcion
Asc(Mid(str0, i, 1)) siempre los toma como "0" y ya no son iguales.



Ahora al momento de guardar: utilizando este objeto FileSystemObject

pregunta?

comó puedo guardar en formato hex y no ascii?



Tambien he utilizado

Set objStream = Server.CreateObject("ADODB.Stream")

Pero no me permite modificar las datos.. lee todo el archivo.. y lo


guarda..





si alguien tiene alguna idea... es bienvenida









Geovanny


Preguntas similares