zoukankan      html  css  js  c++  java
  • android:视频录制编写代码一直报非法状态错误,很多时候定位在setVideoEncoder和setAudioEncoder

      当遇到这类问题,首先去看logcat,如果在里面任然找不到错误提示信息,可以先调试,如果调试oncreate后就报错,则去试着去修改下MediaRecorder的参数设置,很多时候是由于不同的硬件的参数不同,下面有一个特别注意的地方,就是设置mediarecorder的音频和视频参数顺序,像如下我之前做过的顺序1不行,顺序2可以(本人才疏学浅,不知道具体原因,有哪位大虾知道,请留言指教)

    顺序一:

    recorder = new MediaRecorder();
    recorder.reset();

    //设置录制音频参数
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置声源
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置音频编码为amr_nb

    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置音频输出格式为3gp

    File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".3gp");

    //设置录制视频参数

    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//设置视频源
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//录制视频编码

    recorder.setVideoSize(1280, 720);//设置录制视频尺寸

    recorder.setVideoFrameRate(30);//每秒3帧
    recorder.setOutputFile(file.getAbsolutePath());//设置视频输出文件路径
    recorder.setPreviewDisplay(sh.getSurface());//设置视频录制内容是从surfaceholder推送到surfaceview里面显示

    顺序二:

    recorder = new MediaRecorder();
    recorder.reset();

    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置声源
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//设置视频源
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置音频输出格式为3gp
    recorder.setVideoSize(1280, 720);//设置录制视频尺寸
    recorder.setVideoFrameRate(30);//每秒3帧
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//录制视频编码
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置音频编码为amr_nb
    File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".3gp");
    recorder.setOutputFile(file.getAbsolutePath());//设置视频输出文件路径
    recorder.setPreviewDisplay(sh.getSurface());//设置视频录制内容是从surfaceholder推送到surfaceview里面显示

  • 相关阅读:
    C#中设置窗口在最前显示而其他窗口不能使用
    C#中关闭子窗口而不释放子窗口对象的方法
    C#窗体越界时鼠标还能回到初始坐标位置
    C#程序实现软件开机自动启动的两种常用方法
    C# 只开启一个程序,如果第二次打开则自动将第一个程序显示到桌面
    图标库网址收藏
    C# Winform打包部署时添加注册表信息实现开机自启动
    C# winform程序怎么打包成安装项目(VS2010图解)
    数据库的三级范式,涉及范式的问题
    基数排序
  • 原文地址:https://www.cnblogs.com/luoyaqi/p/4367728.html
Copyright © 2011-2022 走看看