Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的自定义波形文件可以';不要由mediaplayer准备。准备失败。:状态=0x1_Java_Android_Android Mediaplayer_Wav - Fatal编程技术网

Java 我的自定义波形文件可以';不要由mediaplayer准备。准备失败。:状态=0x1

Java 我的自定义波形文件可以';不要由mediaplayer准备。准备失败。:状态=0x1,java,android,android-mediaplayer,wav,Java,Android,Android Mediaplayer,Wav,我的媒体播放器有问题。设置数据源后,它不会准备。我有一个自定义的wav文件,文件末尾有元数据。其他wav文件由媒体播放器正常播放,就像我在其他播放器中的自定义文件一样 这是我想播放的文件 public void onItemClick(AdapterView父视图、视图视图、整型位置、长id){ 字符串文件路径=路径+“/”+列表位置[位置]; 最终MediaPlayer=新MediaPlayer(); 试一试{ player.setDataSource(文件路径); player.prepar

我的媒体播放器有问题。设置数据源后,它不会准备。我有一个自定义的wav文件,文件末尾有元数据。其他wav文件由媒体播放器正常播放,就像我在其他播放器中的自定义文件一样

这是我想播放的文件

public void onItemClick(AdapterView父视图、视图视图、整型位置、长id){
字符串文件路径=路径+“/”+列表位置[位置];
最终MediaPlayer=新MediaPlayer();
试一试{
player.setDataSource(文件路径);
player.prepare();
player.start();
}捕获(例外e){
e、 printStackTrace();
}
}
这是我的cutom wav文件。我必须向我的文件中添加一些元数据,我想我可以在最后添加它。它在其他球员身上正常发挥

public void保存(字符串名称、字符串姓氏、字符串标题、字符串描述){
状态=假;
字符串状态=Environment.getExternalStorageState();
字符串dateAndTime=new SimpleDateFormat(“yyyy-MM-dd”,“HH:MM:ss”,
Locale.getDefault()).format(新日期());
字符串元数据=名称+“#”+姓氏+“#”+标题+“#”+日期和时间+“#”+描述;
if(环境.媒体_挂载.相等(状态)){
文件记录=新文件(文件名);
试一试{
FileOutputStream os=新的FileOutputStream(记录);
write(prepareWavHeader(file.size()*Constans.bufferSize));
for(字节[]b:文件){
os.write(b);
}
write(metadata.getBytes());
os.close();
}catch(异常e){e.printStackTrace();}
}
}
公共字节[]prepareWavHeader(int pcmDataLengthInBytes)
{
int totalDataLen=pcmDataLengthInBytes+36;
字节[]wavHeader=prepareWavFileHeader(16,pcmDataLengthInBytes,totalDataLen,
康斯坦斯。采样器,康斯坦斯。数字通道,
康斯坦斯采样器*康斯坦斯通道数*16/8);
返回头;
}
专用字节[]prepareWavFileHeader(int-bitsPerSample、long-totalAudioLen、long-totalDataLen、,
long longSampleRate,int通道,long byteRate){
字节[]头=新字节[44];
头[0]=(字节)'R';//RIFF/WAVE头
标题[1]=(字节)“I”;
标题[2]=(字节)'F';
标题[3]=(字节)'F';
头[4]=(字节)(totalDataLen&0xff);
头[5]=(字节)((totalDataLen>>8)和0xff);
头[6]=(字节)((totalDataLen>>16)和0xff);
头[7]=(字节)((totalDataLen>>24)和0xff);
标题[8]=(字节)“W”;
标题[9]=(字节)“A”;
标题[10]=(字节)'V';
标题[11]=(字节)“E”;
头[12]=(字节)'f';//'fmt'块
标题[13]=(字节)'m';
标题[14]=(字节)'t';
标题[15]=(字节)';
header[16]=16;//4字节:“fmt”块的大小
标题[17]=0;
标题[18]=0;
标题[19]=0;
头[20]=1;//格式=1
头[21]=0;
头[22]=(字节)通道;
标题[23]=0;
头文件[24]=(字节)(longSampleRate&0xff);
头[25]=(字节)((长采样>>8)和0xff);
头[26]=(字节)((长采样>>16)和0xff);
头[27]=(字节)((长采样>>24)和0xff);
头[28]=(字节)(字节和0xff);
头[29]=(字节)((字节>>8)和0xff);
头[30]=(字节)((字节>>16)和0xff);
头[31]=(字节)((字节>>24)和0xff);
头[32]=(字节)(2*16/8);//块对齐
标题[33]=0;
header[34]=(字节)bitsPerSample;//每个采样位
标题[35]=0;
标题[36]=(字节)'d';
标题[37]=(字节)“a”;
标题[38]=(字节)'t';
标题[39]=(字节)“a”;
标题[40]=(字节)(totalAudioLen&0xff);
头[41]=(字节)((totalAudioLen>>8)和0xff);
头[42]=(字节)((totalAudioLen>>16)和0xff);
头[43]=(字节)((totalAudioLen>>24)和0xff);
返回头;
}

查看wav文件格式,它似乎是标题的一部分,指定了它的长度。玩家可以检查并抛出错误。如果你更新了,它会尝试播放。看看wav文件格式,它似乎是标题的一部分指定了它的长度。玩家可以检查并抛出错误。如果你更新了,它会尝试播放。