내 앱은 음성 녹음 용으로 MediaRecorder를 사용합니다. 약 50 %의 상황에서 MediaPlayer로 재생할 수없는 파일이 생성됩니다. VLC 플레이어를 사용하면 모든 오디오가 정상입니다.Android - MediaRecorder - 재생할 수없는 출력을 자주 생성합니다.
MediaRecorder 상태의 순서가 중요하다는 것을 알고 있습니다. 나는 또한 온라인인지 여부가 중요하거나 그렇지 않은지 시도했다. 차이 없음.
형식/코덱 도움말을 변경할 수 있습니까? MediaPlayer가 아닌 VLC에서 파일을 재생할 수있는 이유는 무엇입니까?
내가 무엇을 :
mRecorder = new MediaRecorder();
mRecorder.reset();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile(audioFileName);
try {
mRecorder.prepare();
mRecorder.start();
} catch (Exception e) {
e.printStackTrace();
}
saveSpeech();
방법 saveSpeech 같은 파일의 또 다른 방법이다. 나중에 '리셋'을했는데 여전히 차이가 없었습니다.
void saveSpeech(final Waypoint wp) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(WaypointActivity.thisActivity);
alertDialog.setTitle("Recording ...");
alertDialog.setMessage("Recording ... ");
alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
if(mRecorder != null) {
mRecorder.stop();
mRecorder.reset();
mRecorder.release();
mRecorder = null;
}
if(audioFileName == null) {
UserFeedback.show("Lost file name ... oops, App error");
return ;
}
}
});
alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
alertDialog.show();
}
예 : valid 3GP file. invalid 3GP file의 예입니다.
요청에 스택 추적 추가 :
Exception: message=[Prepare failed.: status=0x1], cause=[null], class=[class java.io.IOException], trace=[java.io.IOException: Prepare failed.: status=0x1
at android.media.MediaPlayer._prepare(Native Method)
at android.media.MediaPlayer.prepare(MediaPlayer.java:1158)
at nl.deholtmans.waypoints.FragmentWpDetailUpdate$4.onItemClick(FragmentWpDetailUpdate.java:262)
at android.widget.AdapterView.performItemClick(AdapterView.java:310)
at android.widget.AbsListView.performItemClick(AbsListView.java:1145)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3066)
at android.widget.AbsListView$3.run(AbsListView.java:3903)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
AudioEnconder를 변경해 보셨습니까? 어쩌면 AAC일까요? –
오디오 파일 이름은 무엇입니까? 그것은 conatin 연장 .3gp입니까? – Embydextrous
유효하고 잘못된 파일에 대한 링크를 복사하여 진행 상황을 확인할 수 있습니까? – manishg