gpt4 book ai didi

android - 如何为 Pantech Element 指定正确的编解码器?

转载 作者:行者123 更新时间:2023-11-29 01:57:50 24 4
gpt4 key购买 nike

我们正在构建一个使用 MediaRecorder 在 Android 上录制视频的应用程序,它在大多数硬件平台上都能完美运行。然而,Pantech 的 Element 平板电脑已被证明是一个挑战。当平板电脑运行 Android 2.3.1 时,应用程序在 MediaRecorder.start() 上崩溃。所以我们将平板电脑升级到 4.0.4,它不再崩溃了。

但是,现在它创建了文件,但创建的文件无法通过平板电脑或 PC 打开。我很确定存在编解码器问题,但我发现在 Android 上指定编解码器是一种令人抓狂的体验。

这是我们的 MediaRecorder 代码:

mRecorder = new MediaRecorder();

mCamera = Camera.open();

mCamera.unlock();

mRecorder.setCamera(mCamera);mRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);mRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));mRecorder.setOutputFile(fileToSave);mRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());mRecorder.prepare();mRecorder.start(); //this calls just fine, but crashes a second later

这是我们的应用程序录制视频时的 ADB 日志: enter image description here

下面是 Element 上的 Camcorder 应用程序记录视频时的 ADB 日志: enter image description here

所以我能从中了解到的是,当我们调用 .start() 时,我们得到一个 ERROR(0x80001009, 0) 并且 OMX IL 处于状态 3。
我不确定“17 级”和“19 级”是什么意思,但这是两个日志之间的另一个区别。

非常感谢任何帮助,谢谢!

最佳答案

我认为 profile/level 指的是 H.264 profile 和 level(虽然不是通常编码的方式:常见的 H.264 级别是 3.2、4.1,通常编码为 32、41;然后 17 是??) .如果为真,则它会受到您为 mediarecorder 提供的其他设置的影响,尤其是分辨率、比特率和 fps。

mMediaRecorder.setVideoFrameRate(mFPS);
mMediaRecorder.setVideoEncodingBitRate(mBitrate);
mMediaRecorder.setVideoSize(mWidth, mHeight);

我还注意到您从未设置输出格式。试试这个:

mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

附言您也可以尝试省略对 mRecorder.setProfile() 的调用,看看日志中的配置文件是否发生变化,以及它是否有效。

关于android - 如何为 Pantech Element 指定正确的编解码器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14215842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com