Bei der Verarbeitung von Live-Videos müssen Sie char in einem Container speichern, während Sie es herausnehmen und abspielen. Android-Benutzer haben es mithilfe einer Warteschlange implementiert, aber die iOS-Warteschlange scheint diese Funktion nicht zu haben Ein OC-Objekt und das anschließende Speichern im Array werden durch Durchlaufen des Arrays abgerufen und abgespielt. Natürlich muss das Durchlaufen des Arrays zunächst in einem Unterthread platziert werden, aber es muss sein Nach einer Weile wird das Array kontinuierlich durchlaufen. Habt ihr eine gute Möglichkeit, diese Funktion zu lösen?
// Dies fügt dem Array ein Array hinzu
memcpy(p, data, ilen);
NSData *data= [NSData dataWithBytes:p length:ilen];
// Dies durchläuft das Array
[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++再到云终端需要过程 所以我们这需要处理