当遇到这类问题,首先去看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里面显示

转载于:https://www.cnblogs.com/luoyaqi/p/4367728.html

android:视频录制编写代码一直报非法状态错误,很多时候定位在setVideoEncoder和setAudioEncoder...相关推荐

  1. 利用FFmpeg玩转Android视频录制与压缩(二)

    请尊重原创,转载请注明出处:http://blog.csdn.net/mabeijianxi/article/details/72983362 预热 时光荏苒,光阴如梭,离上一次吹牛逼已经过去了两三个 ...

  2. 利用FFmpeg玩转Android视频录制与压缩(三)

    请尊重原创,转载请注明出处http://blog.csdn.net/mabeijianxi/article/details/73011313 前言 上一回说到啊,这千秋月没是佳人离别,时逢枯枝落旧城, ...

  3. 用FFmpeg玩转Android视频录制与压缩

    [置顶] 利用FFmpeg玩转Android视频录制与压缩(二) 标签: Android视频采集Android视频编码Android FFmpegAndroid 视频压缩视频编码 2017-06-10 ...

  4. android视频录制(调用系统视频录制)

    2019独角兽企业重金招聘Python工程师标准>>> 最近客户有一个视频录制的需求,于是,我就整理下可行的方案. 启动系统视频录制的代码: Intent mIntent = new ...

  5. Android视频录制--屏幕录制

    上一篇介绍了MediaProjection,这个类可以用来实现安卓屏幕数据的采集,也就是手机一帧帧的截图,并输出成byte流的格式. 有兴趣的同学可以看这篇: Android视频录制--MediaPr ...

  6. Android视频录制并转GIF格式

    一.概述 我们在学习Android时候,往往需要查阅很多的资料教程,这时候经常会发现大神写的博客往往都是图文并茂的,充满可能性,效果直观的,所以自己个人记录一些日常工作中遇到的问题以及见解,也希望能够 ...

  7. Android视频录制从不入门到入门系列教程(一)————简介

    一.WHY Android SDK提供了MediaRecorder帮助开发者进行视频的录制,不过这个类很鸡肋,实际项目中应该很少用到它,最大的原因我觉得莫过于其输出的视频分辨率太有限了,满足不了项目的 ...

  8. 解决CPLEX安装后无法运行代码,报错乱码(错误显示:ÔËÐÐÅäÖá°配置 1¡±²»´æÔڡ£)

    解决CPLEX安装后无法运行代码,报错乱码(错误显示:ÔËÐÐÅäÖá°配置 1¡±²»´æÔڡ£) CPLEX错误显示如下: 解决方法: 重命名"配置 1"为"Conf ...

  9. android 视频录制小例子,android 录制视频实例 VideoRecordDemo

    [实例简介] [实例截图] [核心代码] package com.example.videorecorddemo; import java.io.IOException; import java.ut ...

  10. 利用FFmpeg玩转Android视频录制与压缩

    本文为剑西独家授权发布,剑西也是做Android多媒体开发,算是同道中人,不过他主要集中在视频压缩,利用FFmpeg,能做很多事,但是做到效果好,却不多.今天看下他的分享,剑西的blog是:http: ...

最新文章

  1. 博客开源系统(待续......)
  2. Hibernate随机获取指定范围内的指定条目的记录
  3. 文章和随笔的标题好像没有HtmlEnCode。
  4. hdu 2048 神、上帝以及老天爷
  5. 用Python自动生成NBA巨星生涯数据曲线
  6. python与c的联系_Python与C的通信#
  7. 继裁员千人后 蔚来打算卖掉电动方程式车队
  8. 在iMac上建立一个git仓库
  9. IIS SSL证书 指定的登录会话不存在,可能已被终止 HRESULT:0x80070520
  10. sqldf包的使用使用-R
  11. 从python的random函数说起
  12. 知识竞赛的环节主题文件准备的四大步骤及重要提示
  13. 怎么样可以通过阿里云APP进行备案 阿里云备案一般多长时间
  14. Spring原理机制
  15. MicroStation软件与Terrasolid插件合集的安装方法
  16. mongodb mongoose 的使用
  17. 【写作中的复杂名词短语练习题】前置与后置修饰
  18. 2021-09-15小记西数3T蓝盘翻车
  19. Linux运行python文件出现以下错误:terminate called after throwing an instance of ‘std::runtime_error‘
  20. 在线代码离线翻译Chrome插件一马v0.0.8 2018-10-31

热门文章

  1. Parallels Desktop:pd虚拟机 17 for mac
  2. MATLAB R2021b for Mac(可视化数学分析软件)
  3. 如何在 iOS 15 和 macOS Monterey 的 Safari 中隐藏 IP 地址?
  4. macOS Big Sur中“通知中心”的小组件
  5. Millumin 3 for mac使用教程-创建一个简单的视频映射
  6. 通过EPPlus导出Excel文件
  7. windows server 2016 DC重置用户密码报错
  8. AI加持,计算机要拥有嗅觉了;GPU终于可用于Google Compute Engine | AI开发者头条
  9. [javase] 1.请从键盘随机输入10个整数保存到List中,并按倒序、从大到小的顺序显示出来...
  10. 使用redis作为缓存,数据还需要存入数据库中吗?