Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿ Se puede leer/escribir/reproducir archivos MP3 a/desde un MemoryStream ? (https://www.clubdelphi.com/foros/showthread.php?t=61754)

rrf 20-11-2008 21:27:11

¿ Se puede leer/escribir/reproducir archivos MP3 a/desde un MemoryStream ?
 
Hola a tod@s.

Uso Delphi 5 pro y quiero guardar/leer archivos MP3 en campos blob de una tabla en Firebird para luego reproducirlos directamente (sin grabar el archivo MP3 en el disco duro).

No se si esto es posible y por ello consulto por si hay alguien que sabe si se puede hacer y me puede dar información acerca de como hacerlo.

La idea es que el programa:

1- Lea un archivo MP3 (que estaba en el disco duro), lo convierta en un MemoryStream y lo guarde en un campo blob. Lo de guardar el MStream en un blob no creo que me de problemas, pues ya lo hago con imágenes y me funciona.

2- Luego debería leer ese MemoryStream de Firebird y reproducirlo directamente (sin grabarlo antes en el disco duro).

Estuve probando un componente (MP3Tag) que (en el ejemplo que incluía) se combinaba con el MediaPlayer y lo hacía, con la excepción de que había que grabar el archivo en el disco duro para que MediaPlayer lo pudiera leer y reproducir. Por ello, creo que no me serviría.

Si esto no es posible, también agradecería la información.

Gracias por adelantado.

Ramón.

cHackAll 21-11-2008 03:24:19

hola rrf, lo primero que me viene a la mente es una BD con BLOBs de ~5 Mb. pues creo que ello no es algo "muy óptimo".Creo que deseas que el usuario final no pueda acceder a los MP3 y que tu app sea la unica encargada de reproducir la musica (digamos "protegida").

Si no importa tanto la calidad del sonido lo que te podria aconsejar es convertir los archivos de audio en wav (hasta compreso) y reproducirlo con la API PlaySound usando SND_MEMORY, de ésta forma evitarás que sea escrito en disco. Tambien puedes considerar buscar algun componente encargado de descomprimir dicho formato (lame), de tal forma que puedas enviar por bloques (API waveOutWrite) la informacion sonora.

Saludos

rrf 21-11-2008 17:56:40

Hola Javier.

Te aclaro que lo que quiero guardar es sonido de voz en el menor espacio posible; no se trata de música.

Con relación a ocultar los archivos MP3, no es lo que buscaba. Pensé que hacer el proceso en memoria sería más rápido que realizarlo grabando y leyendo del disco.

Supongo que lo que me quieres decir es que guarde la información en archivos en formato WAV comprimiendolo antes y que luego lo reproduzca. Lo voy a probar.

Gracias por tu recomendación.

Ramón

cHackAll 22-11-2008 02:11:51

Cita:

Empezado por rrf (Mensaje 327232)
...Te aclaro que lo que quiero guardar es sonido de voz en el menor espacio posible; no se trata de música.

Con relación a ocultar los archivos MP3, no es lo que buscaba...

Ok, entonces debes asegurarte que su calidad sea lo suficientemente "baja" para que ocupe poco espacio ~(mono de 8.0 kHz), y de allí considerar algun algoritmo de compresión.

Cita:

Empezado por rrf (Mensaje 327232)
...Pensé que hacer el proceso en memoria sería más rápido que realizarlo grabando y leyendo del disco...

No, guardarlo en una BD implica que "al final" va a guardarlo en algun archivo al cual accederá, y de alli lo convertira a un Blob, luego a un Stream y luego lo reproducirá; ésto implica varios procesos extra que va a reducir la "velocidad".

Fuera de la recomendacion inicial (que sin desearlo percibiste), creo que lo demás son complicaciónes inecesarias.

Saludos


La franja horaria es GMT +2. Ahora son las 16:29:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi