Foro sobre Java SE > [Ayuda]convertir onda PCM 16bits sin headerless a 8 bits
Logre en cierta forma plasmar esto en mi programa, pude leer el fichero con short, ahora tengo que dividir los datos del short por 256 y guardarlos en byte.
tengo escrito esto en mi clase pero me tira error siempre en consola:
public int writeRAW(String myRawpath, int number)
{
try
{
RandomAccessFile out = new RandomAccessFile(myRawpath, "r");
short doscientos = 256;
out.write(getRawPoints() / doscientos);
out.close();
}
catch (Exception ef)
{
ef.printStackTrace();
}
return 0;
}
¿Y cuál es el error?
El error era que no tenia permisos para escribir, tenia el RandomAccessFile con r y habia que ponerlo en rw para escritura, igual termine descartando esto.
use una libreria que encontre que se llama Converting raw data (headerless) files.
Para agregarle un header, y despues utilice otra que se llama AudioConverter para convertirlo a 8bits,
ahora a todo esto tengo un problema, al pasar el PCM a 8bits pasa de Signed a Unsigned, y no encuentro forma de solucionarlo.
Hola:
Si no me equivoco los archivos .wav no soportan los 8 bits signed, tiene que ser obligado unsigned, asi que creo que este es tu problema.
Si miras por ejemplo en la wikipedia (http://en.wikipedia.org/wiki/WAV) veras que hay una linea en la descripcion que pone:
There are some inconsistencies in the WAV format: for example, 8-bit data is unsigned while 16-bit data is signed.
Esto creo que es asi y no se por que pero no puede ser signed.
Un saludo y espero haberte ayudado.
Gracias juanjo, ahora entiendo el porque siempre me da como resultado un wav pcm unsigned....
Lo único que necesito son los datos signed 8bits sin el header(es decir convertirlo en raw otra vez) voy a tratar convirtiendo el .wav a otro formato a ver si puedo lograr mi cometido :D
Muchachos como están? otra vez por aca.
Tengo los datos de mi audio sin headerless, es decir.. es un .raw y esta en 16bits. necesito bajar su calidad a 8 sin tener que pasar el archivo a .wav... esto es posible? estuve buscando documentación y encontre esto nomas y es para C:
si me pueden ayudar a pasarlo a java les agradeceria.
PD: Tengo escrita una clase para pasarlo a .wav pero me es inutil por que el proceso tardaria más y pierde calidad.