android - MediaRecorder.setVideoFrameRate() 没有任何效果

标签 android video mediarecorder android-mediarecorder frame-rate

我正在尝试让我的 Android 应用程序以较低的帧速率录制视频(以减小文件大小)。

这是我的 MediaRecorder 配置代码:

m_mediaRecorder = new MediaRecorder();
m_mediaRecorder.setCamera(mCamera);
m_mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);

CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
m_mediaRecorder.setOutputFormat(profile.fileFormat);
m_mediaRecorder.setVideoEncodingBitRate(profile.videoBitRate);
m_mediaRecorder.setVideoEncoder(profile.videoCodec);
m_mediaRecorder.setVideoSize(640, 480);
m_mediaRecorder.setVideoFrameRate(10);

m_mediaRecorder.setOrientationHint((int) orientationListener.getPreviewRotation(null));
m_mediaRecorder.setOutputFile(videoDirectory + "/" + uuid + ".mp4");

try {
    m_mediaRecorder.prepare();
    m_mediaRecorder.start();
} catch (Exception e) {
    e.printStackTrace();
}

视频确实录制成功,但无论我尝试什么,帧率似乎都固定在 30 fps。 m_mediaRecorder.setVideoFrameRate(10); 无效。 (如果我将 videoBitRate 设置为较低的值,这会减小文件大小,但也会降低每个单独帧的质量 - 这是我们不想做的事情。)

(备案 - Android 6.0.1;SDK 版本 21。)

我错过了什么?

谢谢, 鲁文

最佳答案

    mediaRecorder.setCaptureRate(20);
    mediaRecorder.setVideoFrameRate(20);

我成功了,请尝试一下。谢谢!

关于android - MediaRecorder.setVideoFrameRate() 没有任何效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42488853/

相关文章:

android - 在 Android 中使用 H.265 HEVC 编码视频

android - 使用MediaRecorder android时如何在前后摄像头之间切换

java - 错误 : Non-static method 'findViewById(int)' cannot be referenced from a static context

css - YouTube 背景

android - 如何居中线性布局

java - 我怎样才能在java中获得视频长度

javascript - 自定义 HTML5 视频控件 - Escape 按钮不会触发全屏切换功能

android - 为什么 MediaRecorder 的 start() 方法会抛出 IllegalStateException?

java - 如何检测用户何时将一个 wifi 连接切换到另一 wifi?

android - 如何访问 Android TV 设备上的应用程序日志?