我正在努力制作一个渐进式下载音频播放器,它可以在播放音频时存储音频。
音频格式是流优化m4a
。
对于这个问题,我认为将带有流光的音频数据包放入内存中,不要将其保存到任何文件中以保持更快。
根据m4a文件的性质,我无法在磁盘上同时写入和读取文件...
所以我从远程源传输并解析音频包,然后将它们放入Singleton
NSMutableArray
......
当流媒体下载音像包时,播放器同时从NSMutableArray
读取和播放音频数据包......
平均文件大约有11000个音频包,因此数组的计数达到11000.
NSMutableDictionary * myDict = [[NSMutableDictionary alloc] init];
NSData *inputData = [NSData dataWithBytes:inInputData length:inPacketDescriptions[i].mDataByteSize];
[myDict setObject:inputData forKey:@"inInputData"];
NSNumber *numberBytes = [NSNumber numberWithInt:inNumberBytes];
[myDict setObject:numberBytes forKey:@"inNumberBytes"];
NSNumber *numberPackets = [NSNumber numberWithInt:inNumberPackets];
[myDict setObject:numberPackets forKey:@"inNumberPackets"];
NSNumber *mStartOffset = [NSNumber numberWithInt:inPacketDescriptions[i].mStartOffset];
NSNumber *mDataByteSize = [NSNumber numberWithInt:inPacketDescriptions[i].mDataByteSize];
NSNumber *mVariableFramesInPacket = [NSNumber numberWithInt:inPacketDescriptions[i].mVariableFramesInPacket];
[myDict setObject:mStartOffset forKey:@"mStartOffset"];
[myDict setObject:mDataByteSize forKey:@"mDataByteSize"];
[myDict setObject:mVariableFramesInPacket forKey:@"mVariableFramesInPacket"];
[sharedCache.baseAudioCache addObject:myDict];
我的问题是,在某些时候我会遇到死锁吗? 这是音频流的好习惯吗?
答案 0 :(得分:0)
我建议您在构建NSMutableArray之后使用NSArrays。
您也可以同步锁定NSMutableArray。
@synchronized(yourMutableArray) {
[yourMutableArray stuffMethod];
}