大佬教程收集整理的这篇文章主要介绍了android – 我怎么能播放pcm文件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我从这个链接获得了这个代码…. Android : recording audio using audiorecord class play as fast forwarded
我需要播放PCM文件我该怎么做???????
public class Audio_Record extends Activity { private static final int RECORDER_SAMPLERATE = 8000; private static final int RECORDER_CHAnnELS = AudioFormat.CHAnnEL_IN_MONO; private static final int RECORDER_AUdio_ENCODING = AudioFormat.ENCODING_PCM_16BIT; private AudioRecord recorder = null; private Thread recordingThread = null; private Boolean isRecording = false; @Override public void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.main); setButtonHandlers(); enableButtons(false); int bufferSize = AudioRecord.getMinBufferSize(RECORDER_SAMPLERATE,RECORDER_CHAnnELS,RECORDER_AUdio_ENCODING); System.out.println("BUFFER SIZE VALUE IS " + bufferSizE); } private void setButtonHandlers() { ((Button) findViewById(R.id.btnStart)).setOnClickListener(btnClick); ((Button) findViewById(R.id.btnStop)).setOnClickListener(btnClick); } private void enableButton(int id,Boolean isEnablE) { ((Button) findViewById(id)).setEnabled(isEnablE); } private void enableButtons(Boolean isRecording) { enableButton(R.id.btnStart,!isRecording); enableButton(R.id.btnStop,isRecording); } int BufferElements2Rec = 1024; // want to play 2048 (2K) since 2 bytes we // use only 1024 int BytesPerElement = 2; // 2 bytes in 16bit format private void startRecording() { recorder = new AudioRecord(MediaRecorder.Audiosource.MIC,RECORDER_SAMPLERATE,RECORDER_AUdio_ENCODING,BufferElements2Rec * BytesPerElement); recorder.startRecording(); isRecording = true; recordingThread = new Thread(new Runnable() { public void run() { writeAudioDataToFile(); } },"AudioRecorder Thread"); recordingThread.start(); } private byte[] short2byte(short[] sData) { int shortArrsize = sData.length; byte[] bytes = new byte[shortArrsize * 2]; for (int i = 0; i < shortArrsize; i++) { bytes[i * 2] = (bytE) (sData[i] & 0x00FF); bytes[(i * 2) + 1] = (bytE) (sData[i] >> 8); sData[i] = 0; } return bytes; } private void writeAudioDataToFile() { // Write the output audio in byte String filePath = "/sdcard/voice8K16bitmono.pcm"; short sData[] = new short[BufferElements2Rec]; FiLeoutputStream os = null; try { os = new FiLeoutputStream(filePath); } catch (FileNotFoundException E) { e.printStackTrace(); } while (isRecording) { // gets the voice output from microphone to byte format recorder.read(sData,BufferElements2Rec); System.out.println("Short wirTing to file" + sData.toString()); try { // // writes the data to file from buffer // // stores the voice buffer byte bData[] = short2byte(sData); os.write(bData,BufferElements2Rec * BytesPerElement); } catch (IOException E) { e.printStackTrace(); } } try { os.close(); } catch (IOException E) { e.printStackTrace(); } } private void stopRecording() { // stops the recording activity if (null != recorder) { isRecording = false; recorder.stop(); recorder.release(); recorder = null; recordingThread = null; } } private View.onClickListener btnClick = new View.onClickListener() { public void onClick(View v) { switch (v.getId()) { case R.id.btnStart: { enableButtons(true); startRecording(); break; } case R.id.btnStop: { enableButtons(false); stopRecording(); break; } } } }; @Override public Boolean onKeyDown(int keyCode,KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { finish(); } return super.onKeyDown(keyCode,event); } }
>将其从SD卡复制到计算机并在那里播放
>使用AudioTrack编写自己的播放器
>安装播放PCM的应用程序
这是一个关于如何使用AudioTrack类播放PCM的教程:(http://jongladwin.blogspot.co.uk/2010/03/android-play-pcmwav-audio-buffer-using.html)
Windows Media Player应该能够播放PCM,这里提到了一些替代方案:(http://www.makeuseof.com/answers/play-pcm-file-pc/)
以上是大佬教程为你收集整理的android – 我怎么能播放pcm文件全部内容,希望文章能够帮你解决android – 我怎么能播放pcm文件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。