【问题标题】:How every one does mp3 streaming?mp3 流媒体是如何每个人的?
【发布时间】:2010-12-30 03:54:35
【问题描述】:

我正在为 android 编写 java 代码。问题是如何事先获取 mp3 文件大小及其音频长度,以便我可以设置进度条/搜索条。响应搜索事件。

答案可以是头文件或算法中的简单信息。

我正在使用 androids mediaplayer 进行流式传输,唯一的问题是寻求这两个都需要上述内容。

感谢任何帮助。

我还尝试使用此菜鸟代码手动查看 mp3 文件并获取标题以解码 mp3 长度。

total = ucon.getContentLength(); //ucon is an HTTPURLconnection
is= ucon.getInputStream();

byte[] buffer = new byte[1024];  

is.read(buffer , 0, 1024);


int offset = 1024;
int loc = 2000;
//FrameLengthInBytes = 144 * BitRate / SampleRate + Padding
while(loc == 2000 && offset< total)
{
    for(int i = 0 ; i <1024 ;i++ )
    {
        if((int)buffer[i] == 255)
        {
            if((int)buffer[i+1] >= 224) 
             {
                 loc = i+1; 
                 break;
             }
        }
    }

    is.read(buffer , 0, 1024);
    offset = 1024 + offset;         
}

找不到标记 mp3 标头的模式 (11111111 111xxxxx)。尝试了不同的文件。找不到其他事情可做。

更新 2

现在我知道我不必搜索 mp3 标头而是 ID3v2 标头。但是在流式传输文件和在 Android 上仍然完成。我真的希望有人能提供帮助,并且有很多程序在做这些事情,我想知道为什么我必须这样做。

【问题讨论】:

  • 您使用的是什么 MP3 库?向我们展示您的代码并描述您遇到的问题。
  • 你从哪里流式传输?互联网还是文件?
  • 我在 Android 设备上使用 mediaplayer() 流式传输 mp3,并将其与 mediacontroller ("developer.android.com/reference/android/widget/…) 连接。问题是 mediacontroller() 无法设置 mp3 歌曲长度。它给出了以下错误:未发送缓冲状态,因为持续时间未知。仍然一无所获。
  • groups.google.com/group/android-developers/browse_thread/thread/… 这与我面临的错误相同。如果你们建议我尝试重写 mediacontroller 或 mediaplayer 类,但我只是一个新开发人员,需要大量帮助。
  • 听起来如果不下载整个文件就无法获得音频长度stackoverflow.com/questions/624741/…

标签: java android streaming mp3


【解决方案1】:

嗯,我从来不知道 ID3 标签系统。

【讨论】:

    猜你喜欢
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多