【问题标题】:No audio when streaming ac3 with Android MediaPlayer使用 Android MediaPlayer 流式传输 ac3 时没有音频
【发布时间】:2016-09-26 17:26:55
【问题描述】:

我编写了一个非常简单的应用程序,它遍历视频列表并从 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 audio surround dolby


    【解决方案1】:

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

    【讨论】:

    • 我知道该设备支持它,因为我使用 VLC 进行了测试。 Ac3 玩得很好。
    • 设备是什么?
    • 这是一台索尼 Bravia 电视。我已经将它连接到索尼接收器。此外,aac 在 Android 的开发者网站上被列为原生支持高达 5.1 环绕声,但只有立体声让我感到困惑。 ffmpeg 确认文件是 5.1。
    • 使用 VLC 播放的 AC3 曲目并不能很好地表明设备支持什么。 VLC 更有可能将音频输出为 LPCM,而不是通过 AC3。您的接收器是否显示了它正在处理的音频格式?
    • 对于ac3,没说。对于 aac,它表示线性 PCM。如果 Android 原生支持最高 5.1,不知道为什么要转换它。
    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2016-05-12
    • 2012-02-25
    • 2010-12-11
    • 1970-01-01
    相关资源
    最近更新 更多