通过UDP将H264编码的.mov文件发送到iOS上的客户端

通过UDP将H264编码的.mov文件发送到iOS上的客户端,ios,objective-c,sockets,avfoundation,Ios,Objective C,Sockets,Avfoundation,整个ios视频发送/流媒体模式似乎有点模糊和暴露。我尝试执行的任务类似于在观看YouTube视频时如何为客户播放视频 我想做的基本上很简单: 我的服务器上有一个预编码的.mov文件 我想寄 该文件通过UDP套接字传输到客户端 这就是我迷路的地方: 如何分解.mov文件以正确地通过 插座我需要分解成帧吗?如果是,怎么做 现在,我正在从该文件创建一个NSData对象,并将其分解成块,然后通过套接字发送,如下所示: NSURL *fileURL = [[NSBundle mainBundle]

整个ios视频发送/流媒体模式似乎有点模糊和暴露。我尝试执行的任务类似于在观看YouTube视频时如何为客户播放视频

我想做的基本上很简单:

  • 我的服务器上有一个预编码的.mov文件
  • 我想寄 该文件通过UDP套接字传输到客户端
  • 这就是我迷路的地方:

  • 如何分解.mov文件以正确地通过 插座我需要分解成帧吗?如果是,怎么做
  • 现在,我正在从该文件创建一个NSData对象,并将其分解成块,然后通过套接字发送,如下所示:

    NSURL *fileURL = [[NSBundle mainBundle]
                          URLForResource:@"test1" withExtension:@"mov"];
    NSData *newData = [NSData dataWithContentsOfURL:fileURL];
    
    int index = 0;
    int totalLen = (int)[newData length];
    
    while (index < totalLen) {
    
        int space = (totalLen - index > 9216) ? 9216 : totalLen - index;
        NSData *chunk = [newData subdataWithRange:NSMakeRange(index, space)];
        [udpSocket sendData:chunk toAddress:clientAddress withTimeout:-1 tag:2];
        index += 9216;
    
    }
    
    - (void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data
      fromAddress:(NSData *)address withFilterContext:(id)filterContext{
    
    /* Append nsdata packets from socket until all the file has been received */
    [videoData appendData:data];
    
    
    if([data length] < 9216){
        /* Marks EOF. Start playing the video */
        [self playVideoData];
    }
    
        -(void)playVideoData{
    
        NSURL* fileURL = [[NSURL alloc] init];
        [videoData writeToURL:fileURL atomically:YES];
    
        AVURLAsset *asset = [AVURLAsset URLAssetWithURL:fileURL options:nil];
    
        NSString *tracksKey = @"tracks";
    
        /** Normal AVURLAsset video playing here... */
    
        }