2015-12-17 2 views
0

Я использую AudioTrack для воспроизведения аудиофайла .wav. Все в порядке, но на данный момент я жестко закодировал битовую глубину аудиофайла при инициализации объекта AudioTrack в STATIC_MODE.Получение битовой скорости или битовой глубины аудиофайла wav

mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, mSampleRate, mChannels, 
      AudioFormat.ENCODING_PCM_16BIT, dataSize, AudioTrack.MODE_STATIC); 

Я хочу, чтобы получить бит глубины/битрейт файла .wav программно, а затем установить кодировку в AudioTrack объекта. Я пытался использовать MediaExtractor и MediaFormat, но это дает мне только следующую информацию:

mediaFormat:{mime=audio/raw, durationUs=10080000, channel-count=1, channel-mask=0, sample-rate=16000} 

В документации MediaFormat, он говорит, что KEY_BIT_RATE является кодер только. Означает ли это, что я могу использовать этот параметр только при кодировании необработанных бит PCM. Если да, то каким может быть любой другой способ программно читать битрейт/бит-глубину? Я уже пытался получить информацию для одного и того же файла на терминале, используя двоичный код mediainfo, и он дает мне правильную глубину бит.

+0

Есть решения? Вы можете поделиться им? – kAmol

+0

Пока нет ... Я все еще предполагаю, что знаю бит-глубину аудиофайла. – Swapnil

+0

Значит, вы даете стандартное значение, например, 8, 16 и т. Д.? – kAmol

ответ

0
MediaExtractor mediaExtractor = new MediaExtractor(); 
    try { 
     mediaExtractor.setDataSource(path); 
     return mediaExtractor.getTrackFormat(0).getInteger("bit-per-sample"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
Смежные вопросы