exoplayer, равномерно выводите звук на обе стороны динамиков, выбирая левый/правый аудиоканал

Мне нужно использовать 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()» для нулевого объекта


person Pan Ng    schedule 20.04.2017    source источник
comment
доступ к частному полю не кажется хорошей идеей, только потому, что вы можете, не означает, что вы должны   -  person lelloman    schedule 21.04.2017
comment
См. принятый ответ здесь stackoverflow.com/questions/55117590/   -  person kev    schedule 18.03.2019