我需要實現H264編碼和配置MediaCodec如下的Android MediaCodec似乎被忽略指定KEY_BIT_RATE值
MediaCodec codec = MediaCodec.createEncoderByType("video/avc");
MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", resolution.getWidth(), resolution.getHeight());
mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1);
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 1000000);
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE,30);
codec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
比特率被設置爲百萬,這是由網絡的限制所限定的要求。當我在Samsung Galaxy J7上測試時,我預計輸出1000 kbps。但是當我在三星Galaxy Grand 2 Duos(android 4.4)或華爲Nexus 6P(android 7.1.2)等特定設備上測試相同的代碼時,我發現編碼器每秒輸出高達5兆字節,這意味着編解碼器完全忽略了每秒1000000比特的指定值。它出什麼問題了?有沒有辦法強制編碼器使用這個指定的值?
我想你也給納秒時間戳的編碼器,這是你的問題的真正原因。納秒時間戳將幀率的度量單位更改爲每秒幀數。這意味着您需要將比特率的度量單位更改爲每秒千比特以保持測量的正確性和正確的行爲。無論如何,謝謝你的回答,讓我有正確的想法。 –
我確認我正在交付編解碼器微秒,所以我想我們只是看着兩個類似症狀的不同問題。我不排除我做錯了 - 這就是爲什麼我只是加倍檢查我的時間戳 - 但現在我在爲我的問題指責OEM。很高興你的問題更容易理清。 –
我遇到了與moto c plus相同的問題。我相信微秒會進入而不是納秒。沒有面對與我測試過的任何其他設備(15件東西)的這個問題。 –