我在 23+ api 上发现了这个异常。在 api 22 及更低版本上,一切正常。你能帮我找到解决办法吗?
我正在使用 23 api 目标并尝试了不同的配置,但仍然有问题
E/MediaRecorder: start failed: -2147483648
W/System.err: java.lang.RuntimeException: start failed. W/System.err: at android.media.MediaRecorder.start(Native Method)
W/System.err: at com.ksy.recordlib.service.recoder.RecoderVideoSource.prepare(RecoderVideoSource.java:105)
W/System.err: at com.ksy.recordlib.service.recoder.RecoderVideoSource.run(RecoderVideoSource.java:173)
W/System.err: at java.lang.Thread.run(Thread.java:818)
我发现,崩溃的原因是我的输出
>try {
> this.piple = ParcelFileDescriptor.createPipe();
>} catch (IOException e) {
> e.printStackTrace();
>}
>mediaRecorder.setOutputFile(this.piple[1].getFileDescriptor());
我该如何解决这个问题?
Best Answer-推荐答案 strong>
由于 Android API 级别 = 23,因此在编码 MPEG4 视频时不再可能使用不可搜索的文件描述符(ParcelFileDescriptor 也是如此)。可以在 commit 中看到MPEG4Writer 已被修改为在检测到不可查找的文件描述符时打印错误并退出。
为方便起见,在下面粘贴提到的代码:
// Verify mFd is seekable
off64_t off = lseek64(mFd, 0, SEEK_SET);
if (off < 0) {
ALOGE("cannot seek mFd: %s (%d)", strerror(errno), errno);
release();
}
关于android - MediaRecorder:启动失败:-2147483648,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/34317655/
|