Нет звука при потоковой передаче ac3 с помощью Android MediaPlayer

Я написал очень простое приложение, которое перебирает список видео и передает их с сервера nodejs.

Я просто выполняю базовую настройку потокового видео с помощью Android MediaPlayer API, и все отлично работает, кроме объемного звука.

С Dolby Digital (ac3) я вообще не слышу звука. Я попробовал aac 5.1 и получил звук, но он был преобразован в стерео.

public void setupVideoView(Uri videoAddress) {
    emVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mediaPlayer) {
            // Prepared Listener
        }
    });
    emVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
        @Override
        public boolean onError(MediaPlayer mp, int what, int extra) {
            // Error Listener
        }
    });
    emVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
            setupVideoView(Uri.parse(video_url));
        }
    });
    emVideoView.setVideoURI(videoAddress);
}

Я искал часы и не смог найти решение. Я ожидаю, что Android, если аудиокодек не поддерживается, просто пропустит его, чтобы что-то еще в цепочке могло его декодировать. Может я не совсем понимаю как это работает? Любая помощь приветствуется.


person Euroclydon37    schedule 26.09.2016    source источник


Ответы (1)


Если аудиокодек недоступен на устройстве, Android MediaPlayer не сможет его декодировать. LibVLC может конвертировать аудио в LPCM. Кроме того, я считаю, что ExoPlayer поддерживает перекодирование звука, но требует гораздо больше усилий.

person Redshirt    schedule 26.09.2016
comment
Я знаю, что устройство поддерживает это, потому что я тестировал с VLC. Ac3 отлично с этим справился. - person Euroclydon37; 26.09.2016
comment
Что такое устройство? - person Redshirt; 26.09.2016
comment
Это телевизор Сони Бравиа. Я подключил его к ресиверу Sony. Кроме того, aac указан на сайте разработчиков Android как изначально поддерживаемый объемным звуком до 5.1, но меня смутило только стерео. Ffmpeg подтверждает, что файл 5.1. - person Euroclydon37; 26.09.2016
comment
Трек AC3, воспроизводимый с VLC, не является хорошим показателем того, что поддерживает устройство. VLC, скорее всего, выводит звук как LPCM, а не через AC3. Показывал ли ваш ресивер аудиоформат, который он обрабатывает? - person Redshirt; 26.09.2016
comment
Для ac3 не сказано. С aac это говорит о линейном PCM. Не уверен, почему он преобразуется, если Android изначально поддерживает его до 5.1. - person Euroclydon37; 26.09.2016
comment
Я неправильно понял ваш вопрос. При тестировании с VLC было указано Dolby Digital. С моим приложением все было так, как описано в моем комментарии выше. - person Euroclydon37; 26.09.2016
comment
На самом деле, я был неправ. VLC воспроизводит ac3 5.1 на NVidia Shield... НЕ на телевизоре. Он преобразуется в LPCM на телевизоре. Но штатный плеер телевизора его не конвертирует. Он правильно играет. - person Euroclydon37; 26.09.2016