各种格式[
flv|mp3|xml|jpg]的web获取过程
flv
flv信息写在flv的文件头
flv如果信息不完整是无法返回flv的总时间长的
也就是有些
播放器看不到进度条
mp3
mp3的文件我不太了解 可能网上mp3不能得到总时间长度 是因为mp3末尾也存在数据信息或是必须
加载完毕才能算出它的时间长吧
引用一下:
引用:
小琢磨了一下mp3的格式,因为很想计算出其文件播放时长
根据RFC文档上的说法,只要知道文件的长度,播放的比特率(bitRate),采样率(Simpling Frequency Rate)以及 填充位数(Padding bits),以及“恒定每26ms能播放一数据帧” 的约定,就可以计算出播放时长
okay,要做的就是,了解mp3帧格式,获取比特率,采样率 以及 填充位数
在mp3文件的末尾,恒存在一个长度为128字节的ID3 Tag Version 1的标签,用以描述文件。如果愿意,还可以添加一个ID3 Tag Version 2到文件头,长度不固定,不过在其头部,会有10字节的描述头,里头标识出这个TAG结构的总长(含10字节),然后,接下来夹着的一直到TAG V1的部分,就是全部的数据帧。
假定这些帧是采取CBR格式,即固定帧长存储,则每一帧的帧头描述都是一样的,基于此,便可计算出所需要的数据
做一个类,来干这件事情:
引用:
另外ID3v1也不是横存,删除ID3v1后mp3文件同样可以播放的。
科学的做法,就是检测开头是否含有ID3,结尾是否含有TAG,来判断mp3文件是否含有ID3v2和ID3v1结构。
xml和string
通过服务器实时生成的xml档或是string档 是无法提供大小信息的,除非是得到一个存在的xml文件或是文本文件
jpg/gif/png读取
也是只有读取到全部的时候才会把装载的信息提供给container容器