簡體   English   中英

如何使用 camera2 api 獲取視頻錄制的確切分辨率列表?

[英]How to get the exact resoutions list for Video recording using camera2 api?

我正在為 android 制作自定義相機應用程序。我正在使用 camera2 API 錄制視頻。

但我想獲取設備支持的分辨率列表。 這樣我就可以根據支持的視頻分辨率錄制視頻並將確切的大小傳遞給:

mediaRecorder.setVideoSize(height,width)

我使用了 2 個選項來獲取攝像機分辨率列表

1 使用 StreamConfigurationMap:

val characteristics = cameraManager.getCameraCharacteristics(cameraId)
val map: StreamConfigurationMap? = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP)
val sizes = map?.getOutputSizes(ImageFormat.YUV_420_888)

但它在某些設備中為我提供了 4K 分辨率,該設備不支持錄制視頻。 我也用過map?.getOutputSizes(MediaRecorder::class.java) ,但它也提供 4K 分辨率,該設備不支持視頻錄制。

2 使用 CamcorderProfile:

val has4KResolution = CamCorderProfile.hasProfile(deviceId, CamcorderProfile.QUALITY_2160P)

我在某些支持4K分辨率的設備上出錯。

有沒有其他解決方案,我可以通過它獲取/獲取相機支持的視頻分辨率?

任何其他想法也將不勝感激。

CamcorderProfile列出了設備制造商希望支持的視頻錄制尺寸,因此這是最簡單的查看方式。

對於其他用例,相機可能支持比這更高的分辨率,因此從相機本身看尺寸並不是非常可靠。

如果您查詢MediaCodecList的視頻編碼器或類似的,則可能有其他(可能更大)尺寸可用。 但是迭代該列表並找出支持的編碼器類型和大小是一些工作。

因此,堅持使用 CamcorderProfile 所說的受支持是最安全的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM