【问题标题】:MediaPlayer() audio stuttering(android)MediaPlayer() 音频口吃(android)
【发布时间】:2013-03-04 14:37:52
【问题描述】:

我在我的 Android 应用程序中使用 MediaPlayer 功能从远程服务器流式传输实时音频流。但是音频断断续续,口吃。问题不在于我的互联网,因为当我在计算机上播放提要时,它可以完美播放。可能是什么问题?*注意:流是实时的。 这是我正在使用的代码:

MediaPlayer mp = new MediaPlayer();
    try{
    mp.setDataSource("http://radiotool:80/feed 342.mp3");//hardcoded for testing purposes
    mp.prepare();
    mp.start();
    }
    catch(Exception e)
    {Log.d("Error came up man",", check the internet connection and stuff..");

【问题讨论】:

  • 您是否尝试过流式传输其他 mp3 文件?也许问题出在这个mp3上,只是猜测。
  • 是的,我尝试了很多不同的直播,都有相同的卡顿问题,但正常的 mp3 文件(如歌曲)播放完美......
  • 断断续续和口吃多久?就像,你听到一个 300 毫秒的阻塞,然后是 100 毫秒的静音,然后是 300 毫秒的音频?或者,它播放 1-3 秒,停止 1-3 秒,然后再播放?你怎么知道这不是连接问题,也许是 WiFi 问题?你的缓冲区有多大?
  • 是的,我听到 300 毫秒的音频和 100 毫秒的静音,就像那样。我知道 Wi-Fi 不是问题,因为当我在计算机上播放谷歌浏览器中的提要时,它可以完美播放。来自其他网站的流式歌曲(在模拟器上)也可以完美播放。但是我想播放的提要卡顿了。是因为直播是直播而不是歌曲吗?
  • 直播,预先录制,没有任何区别。如果您正在通过相同的协议播放某些内容,则播放器不知道。唯一的区别是直播流最初可能不会发送一个巨大的缓冲区。通常,这无关紧要。试试这个流:143.226.75.100/waug_mp3_128k 它有一个很大的缓冲区,可以尽快刷新到客户端。

标签: android media-player audio-streaming live-streaming


【解决方案1】:

您要链接的流没有在流的开头发送大量数据缓冲区。通常这不是问题,因为客户端负责确定播放速率、观察数据传输速率并相应地管理客户端缓冲区。这就是为什么当我给你一个链接来尝试使用大缓冲区时,这不是问题。

基本上,音频丢失是由于不断的缓冲区欠载造成的。要解决此问题,您需要增加缓冲区大小。现在看来这是不可能的,但另一种方法可能是manage the HTTP client yourself and proxy the data to the MediaPlayer。该链接很旧......希望从那时起有人已经想出了如何以另一种方式做到这一点。我不是 Android 开发者,所以我不能肯定地告诉你。

我首先要做的是致电mp.prepareAsync(),然后在 MediaPlayer 告诉您它已准备好启动后等待 2 秒。我有一种预感,数据将继续在后台缓冲,直到您真正调用 .start()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 2015-02-11
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多