当前位置: 首页 > 知识库问答 >
问题:

Android-ICS 4.0中的MediaPlayer缓冲区大小

颛孙航
2023-03-14
final Socket client = (setup above)

// encrypted file input stream
final CipherInputStream inputStream = getInputStream(file);

// setup the socket output stream
final OutputStream output =  client.getOutputStream();

// Writing the header
final String httpHeader = buildHttpHeader(file.length());
final byte[] buffer = httpHeader.getBytes("UTF-8");
output.write(buffer, 0, buffer.length);

int writtenBytes = 0;
int readBytes;
final byte[] buff = new byte[1024 * 12]; // 12 KB

while (mIsRunning && (readBytes = inputStream.read(buff)) != -1) {
    output.write(buff, 0, readBytes);
    writtenBytes += readBytes;
}

output.flush();
output.close();
private String buildHttpHeader(final int contentLength) {
    final StringBuilder sb = new StringBuilder();

    sb.append("HTTP/1.1 200 OK\r\n");
    sb.append("Content-Length: ").append(contentLength).append("\r\n");
    sb.append("Accept-Ranges: bytes\r\n" );
    sb.append("Content-Type: audio/mpeg\r\n");
    sb.append("Connection: close\r\n" );
    sb.append("\r\n");

    return sb.toString();
}
mCurrentPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mCurrentPlayer.setDataSource(url);
mCurrentPlayer.prepareAsync();

虽然我认为这个API更改请求在我来之前就已经存在了,所以我不会建议任何人屏住呼吸。

共有1个答案

澹台昆
2023-03-14

是否可以看到您开始()MediaPlayer的代码?

您使用的是stream_music音频流类型吗?

player.setAudioStreamType(AudioManager.STREAM_MUSIC);

您是否也在Player.PrepareAsync();和player.prepare();?

player.setAudioStreamType(AudioManager.STREAM_MUSIC); 
player.setDataSource(src); 
player.prepare(); 
player.start(); 
player.pause(); 
player.setOnPreparedListener(new OnPreparedListener() {     
@Override
                public void onPrepared(MediaPlayer mp) {
                    player.start();                
                }
          });
 类似资料:
  • 我正在Android上开发在线流媒体播放器。我发现mediaplayer永远不会停止缓冲!它读取100%的缓冲区,并不断地做一些“事情”,因为流只能被读取一次,没有任何剩余的缓冲区...我看到了 我看到的日志消息:

  • 我想在我的小libgdx游戏中使用框架缓冲区。 游戏使用了,我修改了s摄像头,使其使用50宽31高的视口。然后我将的投影矩阵设置为。这样做,我有一个分辨率独立的游戏,我可以使用我自己的“世界单位”,而不是使用像素。 但是现在,如果我创建一个,我必须给它一个大小。我必须给它摄像机视口的大小还是屏幕的大小(以像素为单位)? 而且,当我渲染的东西,我可以渲染他们在,这意味着渲染在几乎在游戏窗口的中间?

  • 本文向大家介绍修改Android Studio 的 Logcat 缓冲区大小操作,包括了修改Android Studio 的 Logcat 缓冲区大小操作的使用技巧和注意事项,需要的朋友参考一下 找到 Android Studio的安装目录\bin\idea.properties 文件 将文件中的idea.cycle.buffer.size=1024 改成 例如: idea.cycle.buffe

  • 问题内容: 构造函数中的缓冲区大小是什么意思? 当我编写程序时: 输出: 然后,缓冲区大小是什么意思,正如我希望的那样,它只能读取两个字符。但事实并非如此。 问题答案: 顾名思义,缓冲输入。这意味着它会在将输入源传递给您之前从输入源读取到缓冲区。此处的缓冲区大小是指其缓冲的字节数。 从大多数来源读取输入非常慢。仅2个字节的缓冲区将损害性能,因为您的程序很可能大部分时间都在等待输入。缓冲区大小为2时

  • 问题内容: 根据文档,使用默认缓冲区大小,而第二个构造函数允许设置缓冲区大小。 public BufferedReader(Reader in) 创建使用默认大小的输入缓冲区的缓冲字符输入流。 但是,文档没有提到默认的缓冲区大小是多少。 BufferedReader的默认缓冲区大小是多少? 问题答案: 默认缓冲区大小为8192个字符 http://developer.android.com/ref

  • 根据文档,使用默认缓冲区大小,而第二个构造函数,允许设置缓冲区大小。 公共缓冲区读取器(读取器输入) 创建使用默认大小的输入缓冲区的缓冲字符输入流。 但是,文档没有提到默认缓冲区大小。 BufferedReader的默认缓冲区大小是多少?