我使用自定义馈送代码在网络上流式传输一个MP3,而不是使用AudioFileStreamOpen
等API的AVAudioPlayer
(它只适用于URL)。
有没有办法估计一下这条流的长度?我知道我可以使用以下命令获得一个'elapsed‘属性:
if(AudioQueueGetCurrentTime(queue.audioQueue, NULL, &t, &b) < 0)
return 0;
return t.mSampleTime / dataFormat.mSampleRate;
但是创建进度条的总持续时间呢?这有可能吗?
附注:澄清-我确实知道MP3文件的实际大小,不知道它是否可以使用…我甚至会满足于只给我一个进度条的解决方案,而不是实际的播放时间/持续时间。
发布于 2010-03-26 14:31:40
如果您知道MP3文件的总大小,则可以计算每秒的位数,从而计算流的持续时间。如果是VBR,你可能需要平均几个MPEG帧。对于CBR,您可以简单地使用一个包的码率。
https://stackoverflow.com/questions/2517860
复制相似问题