我正试图在我的Nexus5x上捕捉慢动作视频。我是这样配置媒体记录器的:
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问题是,捕获的视频不是我的设备支持的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);1/4由于CamcorderProfile.QUALITY_HIGH_SPEED_HIGH公布的帧率为120,我想要捕获一个30 fps的视频,如这里文档中所述。
公共int videoFrameRate 在API级别8中添加以每秒帧为单位的目标视频帧速率。 如果应用程序通过setProfile(CamcorderProfile)配置视频记录,而不指定任何其他MediaRecorder编码参数,则这是每秒录制的目标视频输出帧速率。例如,对于高速质量配置文件(从QUALITY_HIGH_SPEED_LOW到QUALITY_HIGH_SPEED_2160P),这是视频记录和播放的帧速率。如果应用程序打算创建具有高速质量配置文件的慢动作用例,则必须通过setVideoFrameRate(int)设置与期望的输出(回放)帧速率相对应的不同视频帧速率。例如,如果在QUALITY_HIGH_SPEED_720P中广告240 for,并且应用程序打算创建1/8因子的慢动作录制视频,应用程序必须通过setVideoFrameRate(Int)设置30 for。如果不这样做,将导致具有正常速度播放帧率的高速视频(上面的示例为240 for)。如果应用程序打算使用MediaCodec编码器进行视频记录,则必须按照此CamcorderProfile设置MediaFormat的每个单独字段。
发布于 2016-03-02 12:08:44
mMediaRecorder.setVideoFrameRate(QUALITY_HIGH_SPEED_LOW);或
mMediaRecorder.setVideoFrameRate(QUALITY_HIGH_SPEED_HIGH);https://stackoverflow.com/questions/35116159
复制相似问题