使用 Android MediaPlayer 流式传输 ac3 时没有音频

No audio when streaming ac3 with Android MediaPlayer

我编写了一个非常简单的应用程序,它循环播放视频列表并从 nodejs 服务器流式传输它们。

我正在使用 Android MediaPlayer API 进行基本的视频流设置,一切都很好,除了环绕声。

使用杜比数字 (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,如果不支持音频编解码器,将简单地传递它,以便链下的其他东西可以解码它。也许我不完全理解它是如何工作的?非常感谢任何帮助。

如果音频编解码器在设备上不可用,则 Android MediaPlayer 无法对其进行解码。 LibVLC 可以将音频转换为 LPCM。另外,我相信 ExoPlayer 支持重新编码音频,但需要更多的努力。