在处理直播视频中 需要一边保存 char到一个容器里 一边从里面取出来 然后播放 安卓人家实现了 用的是队列 但是iOS队列貌似没有这个功能 我试过把char转化为OC对象 然后保存到数组里面 通过遍历数组取出数据播放 当然遍历数组肯定是放在子线程的 这中实现方式刚开始是没有问题,但是需要不停的遍历数组,遍历一段时间自动就停下来,不遍历数组了
请问各位大神 这个功能有什么好的方法解决吗 下面是具体操作
// 这是往数组里面添加数组
char *p = new char[ilen + 1];
memcpy(p, data, ilen);
NSData *data= [NSData dataWithBytes:p length:ilen];
[clientManager.dataArr addObject:data];
// 这个是遍历数组
[clientManager.dataArr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
int fragment_type; NSLog(@"+++++++++++%lu",(unsigned long)clientManager.dataArr.count); NSData *data = clientManager.dataArr[0]; [clientManager.dataArr removeObjectAtIndex:0]; char* Framebuf= (char*)[data bytes]; NSLog(@"2<><><><><>>%s",Framebuf); int head_size = sizeof(FRAME_HEAD); FRAME_HEAD *frameHead = new FRAME_HEAD; memcpy(frameHead, Framebuf, head_size); int frameType = frameHead->iFrameType;
你这个怎么可以是进栈出栈呢?栈的特点是先进后出。直播数据你放入一个数组中,它不是流式的吗 一直在放入,你从0处一直往出拿,你用栈怎么可以实现。先进后出了,老的数据无法使用了
可以参考下面的方法
How do I make and use a Queue in Objective-C?
Objective-C 队列实现
不是直播 是回放 C++那面没法处理 发送命令到C++再到云终端需要过程 所以我们这需要处理