And*_*per 13 android android-camera android-mediarecorder slowmotion
如何在我的应用中捕捉慢动作视频?
我试过用
mMediaRecorder.setVideoFrameRate(100);
Run Code Online (Sandbox Code Playgroud)
但如果我将值设置为20或更多,应用程序崩溃IllegalStateException.
我已经研究了很多.正常视频在24到30 fps之间.要看慢动作视频,我们需要捕获100-120 fps,但设备不允许这样.但是我看到设备中的默认摄像头有一个慢动作选项.游戏商店中的应用程序也很少允许创建慢动作视频.我也尝试设置更高setCaptureRate(),但也可以拍摄普通模式视频.在少数几个地方提到慢动作电影可以通过OpenCV/JavaCV图书馆完成,但我不明白如何使用这些库来捕获android中的慢动作视频?
Bon*_*tti 11
从您提供的来源(CamcorderProfile),您所要做的就是每秒增加拍摄的图像:
mMediaRecorder.setVideoFrameRate(QUALITY_HIGH_SPEED_LOW);
Run Code Online (Sandbox Code Playgroud)
要么
mMediaRecorder.setVideoFrameRate(QUALITY_HIGH_SPEED_HIGH);
Run Code Online (Sandbox Code Playgroud)
因此,如果您每秒拍摄100张图像,并且每秒显示25帧,则记录的第二帧需要4秒才能显示
public static final int QUALITY_HIGH_SPEED_LOW
高速(> = 100fps)质量等级,对应于最低可用分辨率.
对于下面定义的所有高速配置文件((从QUALITY_HIGH_SPEED_LOW到QUALITY_HIGH_SPEED_2160P),它们与正常录制配置文件类似,只有更高的输出帧速率和比特率.因此,使用setProfile(CamcorderProfile)设置这些配置文件而不指定任何其他编码参数将生成高速视频,而不是具有不同捕获和输出(回放)帧速率的慢动作视频.要记录慢动作视频,应用程序必须通过setVideoFrameRate(int)和setVideoEncodingBitRate适当地设置视频输出(回放)帧速率和比特率. (int)基于慢动作因子.如果应用程序打算使用MediaCodec编码器进行视频录制,则必须根据此CamcorderProfile类似地设置MediaFormat的每个单独字段.
Nav*_*een -2
试试这个代码。它会有所帮助...
myCamera = getCameraInstance();
mediaRecorder = new MediaRecorder();
myCamera.unlock();
mediaRecorder.setCamera(myCamera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
mediaRecorder.setPreviewDisplay(mSurfaceView.getHolder().getSurface());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4986 次 |
| 最近记录: |