douban / DOUAudioStreamer

A Core Audio based streaming audio player for iOS and macOS
BSD 3-Clause "New" or "Revised" License
2.77k stars 556 forks source link

网络差,播放时,如果没有缓冲完成,直接快进,需要等全部缓冲完成才可以播放 #131

Open ghost opened 8 years ago

ghost commented 8 years ago

网络差,播放时,如果没有缓冲完成,直接快进,需要等全部缓冲完成才可以播放 我音频30M,需要30M全部缓冲,这个肯定不行 能不能直接从当前设置的时间开始缓冲,播放

ghost commented 8 years ago

少一个seek to time啊

snowimba commented 8 years ago

这个我也碰到了,内部缓冲多少播放的判断很迷,自己找找应该可改好

ghost commented 8 years ago

@snowimba 你要改好了,告诉我,阿里嘎多

icharlie2014 commented 8 years ago

设置currentTime即可

ghost commented 8 years ago

@icharlie2014 我没说不能设置,设置了,会缓存完整个音频文件,再开始播放 网速要是差的话,很明显

snowimba commented 8 years ago

http://7xqzul.com1.z0.glb.clouddn.com/58E43095-53B3-4AEA-BA37-ADB6B20AF388.png DOUAudioDecoder.m 这个文件下面的345-367行就是判断是否是缓存状态的,只要改这里就行了,我没看懂他一堆数值的计算,所以最简单的方法就是把这里注释掉,然后在外面自己判断是否是缓存状态就行。我尝试了注释后自己写判断也一样可行。不会再有那种要完全缓存完才能播放的问题了~希望可以帮助到你~!

ghost commented 8 years ago

@snowimba 非常感谢,我赶紧改了试试。

snowimba commented 8 years ago

如果你注释了这里就必须要自己在外面写缓存逻辑,暂停播放和开始播放,要不会有问题。如果你自己改好了他的这个逻辑,也希望能告诉下我~谢谢,一堆数字计算实在看的头大······

ghost commented 8 years ago

@snowimba 我能说我现在弄了两套,https://github.com/tumtumtum/StreamingKit 这个还行,还算比较稳定 就是没找见缓存在哪儿

snowimba commented 8 years ago

这个我也看了,不过我们这边需求是必须要缓存~~~

ghost commented 8 years ago

@snowimba 我们也要加,暂时先延后了,没那么重要。我得先找见怎么清缓存,不然缓存大的吓人

weiminghuaa commented 7 years ago

seek to progress: 0.457143 milliseconds:150597

[DOUAudioDecoder seekToTime:] 计算的结果: frames:6641327.700000 packets:5765.041406 packetNumebr:5765

[DOUAudioDecoder decodeOnce] 计算的结果: dataOffset = 130 expectedDataLength = 5,271,013 receivedDataLength = 199,972 packetNumber = 5,798 bytesPerPacket = 1,052 packetDataOffset = 6,099,496

packetDataOffset > expectedDataLength

造成seek异常,是否是_decodingContext.inputFormat.mSampleRate和mFramesPerPacket的问题,导致计算packetNumber错误?@lembacon
重现音频:http://file.xrkcdn.com/group1_M00_00_16_wKgerFYKUaOATxylAFBt5TLplxI994.mp3