簡體   English   中英

MediaCodec編碼數據太大

[英]MediaCodec encode data too big

我使用MediaCodec對攝像機數據進行編碼,當我在名為Vivo X5 Pro(android 5.0,API 21)的設備上使用它時,MediaCodec編碼的數據大小大於90000,通常在其他設備上約為15000。更改媒體格式的參數,也無效。 我還發現,當我在Vivo X5 Pro(android 5.0,API 21)上使用MediaCodec.getOutputFormat()方法獲取格式時,它具有7個數據,比其他正常情況多一個數據,它名為“ buffer-size”,其值為1048576,這會影響MediaCodec編碼嗎? 如何使用Vivo X5 Pro(android 5.0,API 21)編碼常規數據大小? 謝謝幫忙!!!

    MediaCodec mEncoder = MediaCodec.createEncoderByType(MediaFormat.MIMETYPE_VIDEO_AVC);
    MediaFormat format = MediaFormat.createVideoFormat(MediaFormat.MIMETYPE_VIDEO_AVC, 320, 568);
    format.setInteger(MediaFormat.KEY_BIT_RATE, 320 * 568 * 2);
    format.setInteger(MediaFormat.KEY_FRAME_RATE, 20);
    format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1);
    format.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, 320 * 568);

PS:但是,我更改了參數Vivo X5 Pro(android 5.0,API 21)編碼的數據大小仍然大於90000。

確保以正確的單位(微秒)為輸入幀傳遞正確的時間戳,否則編碼器可以為每個幀分配太少/很多位-請參閱https://stackoverflow.com/a/20663056/3115956以獲得更長的時間對此的解釋。

您是否嘗試過降低/提高比特率參數以查看其是否實際上改變了輸出大小? 否則,編碼器可能會因為不遵守該參數而被破壞。 (此外,第一個輸出數據包的大小可能無法完全反映輸出流的總平均比特率。因此,即使第一個幀可能太大,后面的幀也有可能彌補它。)

暫無
暫無

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

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