2014-09-29 72 views
2

我使用MediaCodec編碼攝像頭的視頻設置:什麼是有效的比特率用於MediaCodec

MediaFormat format = MediaFormat.createVideoFormat("video/avc", width, height); 
     format.setInteger(MediaFormat.KEY_BIT_RATE, 250000); 
     format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1); 
     format.setInteger(MediaFormat.KEY_FRAME_RATE, 15); 
     format.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface); 
     _mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); 

什麼我發現的是,根據該決議,我給它有一些最低有效比特率來設置。如果我設置了低於這個數值的比特率,它完全被忽略。如果我將比特率設置在這個不可見的閾值之上,它將按預期工作。我想要做的是查詢我可以爲KEY_BIT_RATE設置的最小比特率是用於任何給定的分辨率。當我設置一個沒有任何影響的比特率時,不會引發任何錯誤或任何錯誤。

回答

1

最小比特率是谷歌對供應商需要支持的分辨率要求的一部分:https://source.android.com/compatibility/android-cdd.pdf。 看5.2

對於其他決議行爲是未定義的。未列在文檔中的解決方案還可能引入其他意外問題,因爲未包含在Google認證測試(CTS)中,並且不能保證設備供應商使其正常工作

並且在android中沒有API來檢查最小支持比特率精確分辨率

+2

這似乎並沒有真正回答這個問題。 CDD表示設備必須支持以最低比特率進行編碼,但這並不意味着設備不允許低於最低要求的比特率。最低要求在那裏,因此可以保證達到一定的質量水平。 – cyngus 2015-06-27 01:24:59

+0

同意該文件描述了對硬件設備的要求,而不是對應用程序的要求。 – Ernest 2016-01-19 11:40:14

0

合理限制內的任何比特率都是有效的。您可以使用在線視頻比特率calculator來計算所需的比特率。最小閾值可以通過編解碼器的特定實現來設置。