我正在使用MediaRecorder录制视频.我的代码在2.3.3上工作正常但在4.0.3上失败.
问题如下:代码mediaRecorder.stop()抛出RuntimeExeption
java.lang.RuntimeException: stop failed.
at android.media.MediaRecorder.stop(Native Method)
Run Code Online (Sandbox Code Playgroud)
使用LogCat消息
04-05 15:10:51.815: E/MediaRecorder(15709): stop failed: -1007
Run Code Online (Sandbox Code Playgroud)
UPDATE
我发现,MediaPlayer几乎在启动后立即报告错误(通过MediaPlayer.OnErrorListener).错误代码为100(媒体服务器死机),额外-1007.
更新2准备MediaRecorder的代码
c = Camera.open();
...
// Step 1: Unlock and set camera to MediaRecorder
camera.unlock();
mediaRecorder.setCamera(camera);
// Step 2: Set sources
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
// Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
CamcorderProfile profile = CamcorderProfile
.get(CamcorderProfile.QUALITY_HIGH);
// manual set up!
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setVideoEncodingBitRate(profile.videoBitRate);
mediaRecorder.setVideoFrameRate(profile.videoFrameRate);
mediaRecorder.setVideoSize(profile.videoFrameWidth,
profile.videoFrameHeight);
mediaRecorder.setAudioChannels(profile.audioChannels);
mediaRecorder.setAudioEncodingBitRate(profile.audioBitRate);
mediaRecorder.setAudioSamplingRate(profile.audioSampleRate);
mediaRecorder.setAudioEncoder(profile.audioCodec);
//mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mediaRecorder.setVideoEncoder(profile.videoCodec);
// mediaRecorder.setProfile(profile);
// Step 4: Set output file …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Google Glass MIC录制音频,但我一直收到W/IMediaDeathNotifier:媒体服务器死机错误.思考?
它应该在第一次触摸时开始录制并在第二次触摸时停止,但是第一次单击时会发生错误.
package com.google.android.glass.sample.charades;
import android.media.MediaRecorder;
import java.io.IOException;
import android.util.Log;
import android.os.Environment;
public class SlideshowActivity extends Activity {
private static final String LOG_TAG = "AudioRecordTest";
private MediaRecorder mRecorder = null;
private static String mFileName = Environment.getExternalStorageDirectory().getAbsolutePath() + "/audiorecordtest.3gp";
private boolean recording = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_slideshow);
mGestureDetector = new GestureDetector(this).setBaseListener(mBaseListener);
}
private void startRecording() {
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
Log.e(LOG_TAG, "File name: " + mFileName);
try { …Run Code Online (Sandbox Code Playgroud)