我正在重构一段记录视频(来自摄像头)的代码,通常在3到30秒之间,以减少视频的整体大小(以字节为单位)。
我们之前使用的是CamcorderProfile
,但它没有为我们的应用程序提供足够的粒度,因此我现在已经过渡到手动调整所有设置(音频源,视频源,视频帧率,音频编码器等) )。
问题是我无法找到一种可靠的方法来选择最佳视频大小,因为(据我所知)并不存在所有Android设备支持的通用大小列表。我希望视频尽可能接近480x360px,因为我们将视频推送到Amazon Elastic Transcoder,它可以制作各种格式的视频480x360px(mp4,webm等)。
以下是我的一般想法的代码片段:
List<Camera.Size> sizes = camera.getParameters().getSupportedVideoSizes();
Camera.Size s;
//
// select size from sizes???
//
recorder = new MediaRecorder();
camera.stopPreview();
camera.unlock();
recorder.setCamera(camera);
// configure recorder
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
// WHAT IS THE SIZE??
recorder.setVideoSize(s.width, s.height);
recorder.setVideoFrameRate(15);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
我已经查看了此处的各种帖子以及4.4 - 6.0的Android兼容性定义文档。
非常感谢任何想法或资源。