小编Sid*_*rth的帖子

Android使用CamcorderProfile捕获慢动作视频

我想在我的Nexus 5x上捕捉慢动作视频.这就是我配置媒体记录器的方式:

CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH_SPEED_HIGH);

mMediaRecorder = new MediaRecorder();

// Step 1: Unlock and set camera to MediaRecorder
mCamera.unlock();
mMediaRecorder.setCamera(mCamera);

// Step 2: Set sources
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

// Step 3: Set the high speed CamcorderProfile
mMediaRecorder.setProfile(profile);

// Step 4: Set output file
// Step 5: Prepare media recorder
// Step 6: Capture video
Run Code Online (Sandbox Code Playgroud)

问题是,捕获的视频不是我的设备支持的120 fps慢动作视频.它们是常规的29 fps视频.

我通过了这个答案,在官方文档中讨论了以下内容:

对于下面定义的所有高速配置文件((从QUALITY_HIGH_SPEED_LOW到QUALITY_HIGH_SPEED_2160P),它们与正常录制配置文件类似,只有更高的输出帧速率和比特率.因此,使用setProfile(CamcorderProfile)设置这些配置文件而不指定任何其他编码参数将生成高速视频,而不是具有不同捕获和输出(回放)帧速率的慢动作视频. 要记录慢动作视频,应用程序必须通过setVideoFrameRate(int)和setVideoEncodingBitRate适当地设置视频输出(回放)帧速率和比特率. (int)基于慢动作因子.如果应用程序打算使用MediaCodec编码器进行视频录制,则必须根据此CamcorderProfile类似地设置MediaFormat的每个单独字段.

我没有得到的是,setProfile已经使用从所选CamcorderProfile派生的参数调用了两个方法setVideoFrameRate和setVideoEncodingBitRate.为什么我需要再打电话给他们?我在这里错过了什么?

任何帮助将不胜感激.对于我的生活,我不能让这个工作!

编辑:我试过调用这样的方法,但它仍然捕获正常速度的视频:

mMediaRecorder.setVideoFrameRate(profile.videoFrameRate/4); 
mMediaRecorder.setVideoEncodingBitRate(profile.videoBitRate/4);
Run Code Online (Sandbox Code Playgroud)

1/4因为由CamcorderProfile.QUALITY_HIGH_SPEED_HIGH通告的帧速率是120,我想拍摄30 fps视频的文件中所述这里 …

android android-camera android-mediarecorder slowmotion

10
推荐指数
1
解决办法
1108
查看次数