big_cccc 2014-09-28 03:01
浏览 2625

安卓录像问题。报错Media server died.

public class MainActivity extends Activity {

MediaRecorder  recorder= null;
Button startButton = null; 
Button endtButton = null; 
SurfaceView  face = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    startButton=(Button) findViewById(R.id.end);
    endtButton= (Button) findViewById(R.id.start);
    face=                 (SurfaceView) findViewById(R.id.surfaceView);
    face.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    face.getHolder().setFixedSize(176, 144);
    face.getHolder().setKeepScreenOn(true);
    startButton.setOnClickListener(ButtonClickDo);
    endtButton.setOnClickListener(ButtonClickDo);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}



public void startRecord() throws Throwable, IOException{
    File f = new File( Environment.getExternalStorageDirectory() ,System.currentTimeMillis()+".3gp");
  recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setVideoSize(320, 240);
    recorder.setVideoFrameRate(5);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    recorder.setOutputFile(f.getAbsolutePath());
recorder.setPreviewDisplay(face.getHolder().getSurface());
System.out.println("路径"+    f.getAbsolutePath());
    recorder.prepare();
    recorder.start();


}



public void stopRecord(){
    if(recorder!=null){
        recorder.stop();
        recorder.release();
        recorder=null;
    }

}

private OnClickListener    ButtonClickDo = new OnClickListener() {
    @Override
    public void onClick(View v) {
         Integer id =   v.getId();
         System.out.println("id为:"+ id +"结果" +(endtButton.getId()==id));
         if(endtButton.getId()==id){
                try {
                    startRecord();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (Throwable e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
         }
            else{
             stopRecord();
         }



    }
};

}

这段代码可以正常的录像, 发到手机内存里 。但是我把
recorder.setPreviewDisplay(face.getHolder().getSurface()); 这句话给注释掉就报
Media server died. 。拍出来的东西只有23KB 怎么拍都只有23KB 不能播放 说文件损坏,
请问是怎么回事。 我想达到 录像 但不显示录像的画面。 怎么操作

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)