Quisiera saber si me pueden ayudar con este problema.
Bueno el problema es que quiero partir en multiples pedacitos un archivo
de audio para este ejemplo es un .wav, tengo hecho estos metodos que lo hacen pero el problema es que cuando quiero reproducir esos archivos me dice el reproductor que tiene un error.
En el metodo partir tengo colocado el numero 345 para que solo haga dos pedacitos de todos los 347.
Lo gracioso es que si le digo que haga solo un archivo(coloco 346 en lugar del 345) ese si lo reproduce correcto.
Si alguien tiene una idea de porque lo hace se lo agradeceria mucho.
Muchas gracias a todos
Codigo:
Código:
import java.io.*;
import java.util.*;
public class Audio2 extends Thread{
FileOutputStream fileOut ;
BufferedOutputStream b;
File fi;
Vector v;
byte[] bytes;
byte[] subbyte;
int tam,div,div2,tam2;
int contador2=0;
public void partir(){
byte []p=convertir("Akane.wav");//+++++++++++++++++++++++++Musica que quiero partir en pedacitos
int tam=p.length;
div=tam/50000;
div2=tam%50000;
tam2=50000;
int inicio=0;
subbyte= new byte[tam2];
int contador=0;
try{
if(div>0){
while(div>345){//Este numero lo coloque porque conozco en cuantos pedacitos va a partie este audio son 347
for(int x=inicio;x<tam2;x++){
System.out.println("for: "+x+" contador: "+contador);
subbyte[contador]=p[x];
contador++;
}
contador=0;
div--;
v.add(subbyte);
if(div==1){
inicio=tam2;
tam2=tam2+div2;
subbyte=new byte[tam2];
}else{
inicio=tam2;
tam2=tam2+50000;
}
}
}else{
for(int x=inicio;x<div2;x++){
subbyte[x]=p[x];
}
v.add(subbyte);//+++++++++++++++++++++++++++++++++++++++++++Aqui lo agrego a un vector
}
}catch(Exception e){
e.printStackTrace();
}
}
public byte[] convertir(String nombre){
try{
File fil= new File(nombre);
InputStream is = new FileInputStream(fil);
long length = fil.length();
System.out.println(length);
bytes = new byte[(int)length];
int offset = 0;
int numRead = 0;
while (offset < bytes.length
&& (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
}
if (offset < bytes.length) {
throw new IOException("Could not completely read file "+fil.getName());
}
is.close();
}catch(Exception ee){
ee.printStackTrace();
}
return bytes;
}
public void tratar(){
try {
Thread hilo = new Thread();
hilo.start();
while(true){
if(v.isEmpty()==true){
hilo.sleep(2000);
}else{
byte[] gg=(byte[])v.remove(0);
crearMusica("nuevo",gg);//+++++++++++++++++++++++Metodo que me crea el archivo WAV
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void crearMusica(String nom,byte[] a){
try{
String nombre=nom+(""+contador2)+".wav";
fi=new File(nombre);
fileOut= new FileOutputStream (fi);
b = new BufferedOutputStream(fileOut);
b.write(a);
b.flush();
b.close();
}catch(Exception e){
e.printStackTrace();
}
}
public void run(){
partir();
tratar();
}
public static void main(String args[]){
Audio2 a= new Audio2();
a.start();
}
}