Мне нужно использовать explayer2 для потоковой передачи видеоконтента в мое приложение. Есть только одна звуковая дорожка, и левый канал отличается от правого. Предположительно, воспроизводится только одна сторона, а другая отключена (громкость установлена на 0). Я попробовал этот подход, используя:
AudioTrack.setVolume(float left, float right)
Проблема в том, что только одна сторона будет иметь звук. Можно ли манипулировать обработчиком звука таким образом, чтобы обе стороны использовали данные левой стороны (или обе стороны использовали данные правой стороны), чтобы он звучал так, как будто он все еще воспроизводится в стерео (даже если он использует только один канал). данные)?
Ход выполнения:
Я добился некоторого прогресса в этом.
Используя отражение Java, я смог получить доступ к полю com.google.android.exoplayer2.audio.AudioTrack внутри MediaCodecAudioRenderer.
Затем с помощью объекта AudioTrack я смог вызвать configure и установить новую карту каналов.
Теперь проблема в том, что я получаю случайное исключение NullPointerException, говорящее:
Попытка вызвать виртуальный метод «int android.media.AudioTrack.getPlayState()» для нулевой ссылки на объект
Попытка вызвать виртуальный метод «int android.media.AudioTrack.getPlaybackHeadPosition()» для нулевого объекта