Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每个人是如何进行mp3流媒体的?_Java_Android_Streaming_Mp3 - Fatal编程技术网

Java 每个人是如何进行mp3流媒体的?

Java 每个人是如何进行mp3流媒体的?,java,android,streaming,mp3,Java,Android,Streaming,Mp3,我正在用java为android编写代码。问题是如何获得mp3文件大小及其音频长度,以便我可以设置我的进度条/搜索条。对事件作出反应 答案可以是头文件或算法中的简单信息 我正在使用androids mediaplayer来流媒体,唯一的问题是寻找需要上述两个方面的东西 感谢您的帮助 我还试着手动查看mp3文件,并用这个noob代码获取标题来解码mp3长度 total = ucon.getContentLength(); //ucon is an HTTPURLconnection is= uco

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

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

我正在使用androids mediaplayer来流媒体,唯一的问题是寻找需要上述两个方面的东西

感谢您的帮助

我还试着手动查看mp3文件,并用这个noob代码获取标题来解码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;         
}
total=ucon.getContentLength()//ucon是一个HTTPURLconnection
is=ucon.getInputStream();
字节[]缓冲区=新字节[1024];
读(缓冲区,0,1024);
int偏移量=1024;
int loc=2000;
//FrameLengthInBytes=144*比特率/采样率+填充
而(loc==2000&&offset
找不到标记mp3头的模式(
111111111xxxxx
)。尝试了不同的文件。找不到别的事做了

更新2


现在我知道我不必搜索mp3头,而是ID3v2头。但在安卓系统上传输文件时,它仍然可以完成。我真的希望有人能帮助我,现在有很多程序都在做这些事情,我想知道为什么我要这么辛苦。

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

你用的是什么MP3库?向我们展示你的代码,并描述你被困的地方。你从哪里来?互联网还是文件?我正在android上使用android设备的mediaplayer()播放mp3,并将其与mediacontroller(“)连接。问题是mediacontroller()无法设置mp3歌曲的长度。它会出现以下错误:由于持续时间未知,因此未发送缓冲状态。仍然没有任何结果。这与我面临的错误相同。如果你们建议我尝试重写mediacontroller或mediaplayer类,但我只是一名新开发人员,将需要大量帮助。听起来好像你无法获得aud不下载整个文件的io长度