2015-04-03 322 views
4

我想從使用Camera2 API(Android 5.0版本中添加)的Android fron-facing相機以4:3的寬高比捕捉視頻。它工作正常,除非相機有16:9傳感器陣列(作爲三星Galaxy S5上的前置攝像頭)。在這種情況下,圖像看上去就像是16:9圖像被捕獲並擠壓到由MediaRecorder提供的4:3表面。通過android camera2 API捕捉4:3相機圖片與16:9傳感器陣列相機

根據文檔,只要將MediaRecorder的尺寸設置爲由getOutputSizes(MediaRecorder.class)提供的尺寸之一,就不需要任何其他配置。相機應自動裁切照片,以適應MediaRecorder表面的大小。

我測試的情況也反轉了 - 在4:3傳感器陣列(Nexus-5的前置攝像頭)上錄製16:9視頻。它工作正常 - 圖片裁剪爲16:9寬高比。

我認爲這是android API中的一個錯誤,但希望看看是否有什麼我在這裏錯過。

重現該問題的最簡單方法是使用camera2Basic示例應用程序,該應用程序由google提供,其中change切換爲使用前置攝像頭和4:3大小進行預覽。它在Nexus-5上正常工作,但在三星Galaxy S5上提供了延伸圖像。 Samsung Galaxy S5(android 5.0)上camera2Basic應用程序的截圖。

enter image description here

+0

你是否想過如何解決這個問題?或者在這種情況下什麼都不能做? – Droidwala 2017-02-03 10:23:50

+1

@Droidwala我還沒有找到任何解決方法。 – 2017-02-03 15:07:59

回答

0

你可以(也應該)使用內置裁剪功能選擇圖像的一個4x3的區域,如果它是16:9。也就是說,裁剪掉任何一方的「不必要的」像素。只需將CaptureRequest的字段/值添加到CaptureRequest.SCALER_CROP_REGION即可完成此操作。

該鏈接解釋了一點點,但你真正需要的是if語句來檢查傳感器的比率和一個小數學計算出你想選擇的區域的邊界。

+0

我用SCALER_CROP_REGION設置爲4:3進行了測試,但沒有幫助。圖片仍然拉伸。 – 2015-04-07 16:11:56