学向勤中得,萤窗万卷书。这篇文章主要讲述Android录制视频报错setVideoSize called in a invalid state 1相关的知识,希望能为你提供帮助。
录制视频时想获取手机支持的录制视频的分辨率,使用代码如下:
List<
Camera.Size>
videoSize = camera.getParameters().getSupportedVideoSizes();
Iterator<
Camera.Size>
itos = videoSize.iterator();
while (itos.hasNext()) {
Camera.Size curSize = itos.next();
int curSupporSize = curSize.width * curSize.height;
int fixPictrueSize = setFixPictureWidth * setFixPictureHeight;
if (curSupporSize >
fixPictrueSize) {
setFixPictureWidth = curSize.width;
setFixPictureHeight = curSize.height;
}
}
mediaRecorder.setVideoSize(setFixPictureWidth,
setFixPictureHeight);
出现了两次错误,一次是录制视频时调用camera.getParameters()时报
parameters is empty
,这是由于在camera.unlock()之后调用了该函数,将其在unlock之前获取就ok了。 还有一个错误就是
setVideoSize called in a invalid state 1
,进入setVideoSize函数中可以发现抛出异常的条件说明 /**
* Sets the width and height of the video to be captured.Must be called
* after setVideoSource(). Call this after setOutFormat() but before
* prepare().
*
* @param width the width of the video to be captured
* @param height the height of the video to be captured
* @throws IllegalStateException if it is called after
* prepare() or before setOutputFormat()
*/
public native void setVideoSize(int width, int height)
throws IllegalStateException;
【Android录制视频报错setVideoSize called in a invalid state 1】
IllegalStateException if it is called after prepare() or before setOutputFormat()
表示如果setVideoSize在prepare() 之后或者setOutputFormat()之前调用的话就会出现该异常,即是说要求setVideoSize函数在prepare()之前以及setOutputFormat()之后调用。 查了下代码,发现我调用setVideoSize竟然是在setOutputFormat()之前,改到setOutputFormat()之后就ok了。
推荐阅读
- Android快速实现动态模糊效果
- 如何保证android程序进程不到万不得已的情况下,不会被结束
- Android uid和pid安全机制
- Android——动画的分类
- Android Java Mail与Apache Mail发送邮件对比
- Python中的列联表介绍和用法示例
- Java中的参数传递技术和示例介绍
- Infosys认证考试| InfyTQ
- 算法设计(最长回文序列| DP-12)