1
我有一個使用MediaCodec和MediaExtractor的工作解決方案,但6mb MP3的解碼需要15秒+ 15秒的AAC編碼。總共> 30秒。我需要非常快的東西< 10秒。任何人都知道更快捷的解什麼是解碼MP3文件然後在Android上編碼爲AAC的最快方式?
編輯
我的瓶頸是來自Mediacodec本身。他們提供的字節緩衝區太小。當設置MediaFormat到AAC時,InputBytebuffers一次只有4096個字節對我來說太慢了。它適用於流式傳輸,但不適用於文件到文件。
我切換到一個C語言解碼器,在3秒內解碼,而不是15秒。但編碼器仍需要15秒。任何人都有一個C庫AAC編碼器,也可以添加ADTS頭文件?
我這樣做,但我的瓶頸是從Mediacodec本身。他們提供的字節緩衝區太小。一次只有4096個字節對我來說太慢了。我切換到一個C解碼器,在3秒內解碼,而不是15秒。但編碼器仍需要15秒。任何人都有一個C庫aac編碼器? –
這聽起來有點像您正在同步使用MediaCodec API - 在傳遞一個4096字節的緩衝區作爲輸入之後,您是否在傳遞下一個輸入緩衝區之前等待一個輸出緩衝區?您需要儘可能提供儘可能多的輸入緩衝區,並且只會消耗輸出緩衝區,以便從MediaCodec獲得適當的性能 - 請參閱http://stackoverflow.com/a/34940871/3115956以獲取更長的解釋。 – mstorsjo
這是我的編碼器http://pastebin.com/uvCwKjGi的邏輯。當我在ACC中將MediaFormat設置爲Encoder時。我這樣做'inputBuffers = encoder.getInputBuffers();'(因爲我需要API 16)我只有4個輸入緩衝區可用容量爲4096字節。 –