在Android中以编程方式更改相机录制编解码器



我使用以下代码在Android中录制相机。如何更改此处的默认编解码器(默认为H264(?

private Uri fileUri;
//...
private void recordVideo() {
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);
// set video quality
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file

// start the video capture Intent
startActivityForResult(intent, CAMERA_CAPTURE_VIDEO_REQUEST_CODE);
}

// ...

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE && resultCode == RESULT_OK) {
// play the video given the global fileUri 
}

您无法通过ACTION_VIDEO_CAPTURE意图实现这一点。你必须在你的应用程序中打开相机,然后自己录制视频。使用CameraX库的官方示例是一个很好的起点。

要控制编解码器,您需要额外的步骤。您可以借用这个答案,它强制使用h264,但您可以自由选择MediaCodec.createEncoderByType()

相关内容

最新更新