當我使用MediaRecorder錄製視頻時,我要設置視頻大小。但Camera getParameters()返回getSupportedVideoSizes爲null,並且getSupportedPreviewSizes很好,它將返回1920x1088,1280x960, 1280x720,960x540,720x540,720x480,640x480,352x288,320x240,176x144。如何,如果我設置MediaRecorder的值視頻大小,綁定SurfaceView的屏幕將凍結幾秒鐘後,當我開始record.So,我該怎麼辦?如何在getSupportedVideoSizes返回null時設置視頻大小
0
A
回答
1
我的豆蔻的解決方法是這樣的:
public void setVideoSize(int width, int height) {
// Just set Preview size...
Camera.Parameters params = getParameters();
List<Camera.Size> sizes = params.getSupportedPreviewSizes();
Camera.Size preferred = params.getPreferredPreviewSizeForVideo();
if (preferred == null) {
preferred = sizes.get(0);
}
Camera.Size optimalPreview = Util.getOptimalPreviewSize(mContext, sizes,
width, height);
setPreviewSize(optimalPreview.width, optimalPreview.height);
}
其中Util.getOptimalPreviewSize是:
/**
* Returns the optimal preview size for photo shots
*
* @param currentActivity
* @param sizes
* @param widthImage
* @param heightImage
* @return
*/
public static Size getOptimalPreviewSize(Activity currentActivity,
List<Size> sizes, int widthImage, int heightImage) {
final double ASPECT_TOLERANCE = 0.05;
double targetRatio = 0;
if (sizes == null) return null;
Camera.Size optimalSize = null;
double minDiff = Double.MAX_VALUE;
// Recupero le dimensioni dello schermo per confrontare le dimensioni della
// preview con quelle dello schermo, in modo tale che a video veda esattamente ciò che poi
// andrò a fotografare
int widthScreen = currentActivity.getWindow().getDecorView().getWidth();
int heightScreen = currentActivity.getWindow().getDecorView().getHeight();
targetRatio = (double) widthImage/heightImage;
if (Util.getDisplayRotation(currentActivity) == 0 || Util.getDisplayRotation(currentActivity) == 180) {
int temp = heightScreen;
heightScreen = widthScreen;
widthScreen = temp;
}
int targetHeight = heightScreen;
for (Camera.Size size : sizes) {
double ratio = (double) size.width/size.height;
if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue;
if (Math.abs(size.height - targetHeight) < minDiff) {
if (size.width <= widthScreen && size.height <= heightScreen) {
optimalSize = size;
minDiff = Math.abs(size.height - targetHeight);
}
}
}
if (optimalSize == null) {
minDiff = Double.MAX_VALUE;
for (Camera.Size size : sizes) {
if (Math.abs(size.height - targetHeight) < minDiff) {
optimalSize = size;
minDiff = Math.abs(size.height - targetHeight);
}
}
}
return optimalSize;
}
與相機的旋轉(不在畫面!!)和圖像的尺寸根據/視頻捕捉它會發現最好的預覽大小的視頻/圖像
0
最後我解決了這個問題,預覽紋理視圖是我的活動的頂部,還有一些其他behi ND。我在java代碼中設置了textureview的寬度和高度,但是如果我用dp將它設置爲XML,那麼一切正常,那麼預覽紋理視圖(寬度和高度)與記錄視頻(寬度和高度)之間的關係如何,
相關問題
- 1. 在OSMF中設置視頻大小
- 2. 如何設置特定的大小嵌入視頻在WordPress
- 3. Cookie設置後返回null?
- 4. 如何設置動態視頻/ quicktime大小?
- 5. managedQuery(Media.EXTERNAL_CONTENT_URI,projection,null,null,null);在設備上運行時返回null
- 6. 爲什麼上傳視頻時,開放圖API返回NULL?
- 7. 在Qt中設置視頻控件的大小
- 8. 音頻錄製返回null
- 9. WebdriverJS設置視口大小
- 10. 爲什麼NSDateFormatter在12小時的時間設置下會在24小時當地人返回NULL?
- 11. 當COUNT小於1時返回NULL
- 12. Hive小時函數返回NULL
- 13. PHP - 在if語句中設置變量時返回NULL
- 14. 位置返回NULL
- 15. 獲取並設置返回Null
- 16. 如何配置Spring的RestTemplate在返回404 HTTP狀態時返回null
- 17. decodeByteArray()大致90%的時間返回null
- 18. 如何設置JPanel大小?
- 19. 如何設置UICollectionViewCell大小
- 20. 如何設置CustomView大小?
- 21. 如何設置JDesktopPane大小
- 22. Registry.CreateSubKey何時返回null?
- 23. 如何將arrayList的大小設置爲null?
- 24. 無法設置YouTube視頻的修復大小
- 25. 無法設置視頻大小; IllegalStateException失敗。如何使它工作?
- 26. 當數據透視SQL選擇返回0時,設置值爲NULL行
- 27. @@ IDENTITY沒有時SCOPE_IDENTITY如何返回null?
- 28. 如何設置在調整大小
- 29. 如何在HTML中設置SVG大小
- 30. 如何在Xamarin中設置DialogFragment大小?