问题描述
- 如何播放科大讯飞录音后的pcm?
-
用这个方法播放的话全是噪音,因为播放要在listview的item中进行,而且要有图片的变换,所以用thread效果不好。
public void play() {// Get the file we want to playback./storage/emulated/0/oral/pcm/14091714280386951041300.pcm File file = new File("/storage/emulated/0/oral/pcm/14091714280386951041300.pcm"); // Get the length of the audio stored in the file (16 bit so 2 bytes per short) // and create a short array to store the recorded audio. int musicLength = (int)(file.length()/2); short[] music = new short[musicLength]; try { // Create a DataInputStream to read the audio data back from the saved file. InputStream is = new FileInputStream(file); BufferedInputStream bis = new BufferedInputStream(is); DataInputStream dis = new DataInputStream(bis); // Read the file into the music array. int i = 0; while (dis.available() > 0) { music[i] = dis.readShort(); i++; } // Close the input streams. dis.close(); // Create a new AudioTrack object using the same parameters as the AudioRecord // object used to create the file. AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, musicLength*2, AudioTrack.MODE_STREAM); // Start playback audioTrack.play(); // Write the music buffer to the AudioTrack object audioTrack.write(music, 0, musicLength); audioTrack.stop() ; } catch (Throwable t) { Log.e("AudioTrack","Playback Failed"); } }
时间: 2024-10-22 03:54:07