zoukankan      html  css  js  c++  java
  • 视频播放器边下边播(保存到沙盒,显示进度)

    没怎么研究视频播放器,就在网上找了个,链接:https://github.com/835239104/KrVideoPlayerPlus

    下载AFNetworking,

    1.下载最新版的会报错,没有引入相关库

    2.AFSecurityPolicy.m中:注释了一部分代码

    #pragma mark - 这里改了 ------
    #warning - 这里改了 --------
    //#if !TARGET_OS_IOS && !TARGET_OS_WATCH
    //static NSData * AFSecKeyGetData(SecKeyRef key) {
    //    CFDataRef data = NULL;
    //
    //    __Require_noErr_Quiet(SecItemExport(key, kSecFormatUnknown, kSecItemPemArmour, NULL, &data), _out);
    //
    //    return (__bridge_transfer NSData *)data;
    //
    //_out:
    //    if (data) {
    //        CFRelease(data);
    //    }
    //
    //    return nil;
    //}
    //#endif
    
    static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) {
    //#if TARGET_OS_IOS || TARGET_OS_WATCH
        return [(__bridge id)key1 isEqual:(__bridge id)key2];
    //#else
    //    return [AFSecKeyGetData(key1) isEqual:AFSecKeyGetData(key2)];
    //#endif
    }

    3.实现边下边播(我用的是一边在网上看一边下载,所以会有点卡)

    /**
     * 下载文件
     */
    - (void)downloadFileURL:(NSString *)aUrl savePath:(NSString *)aSavePath fileName:(NSString *)aFileName tag:(NSInteger)aTag
    {
        NSFileManager *fileManager = [NSFileManager defaultManager];
        
        //检查本地文件是否已存在
        NSString *fileName = [NSString stringWithFormat:@"%@/%@", aSavePath, aFileName];
        
        //检查附件是否存在
        if ([fileManager fileExistsAtPath:fileName]) {
             [self addVideoPlayerWithURL:[NSURL fileURLWithPath:fileName]];
        }else{
            //创建附件存储目录
            if (![fileManager fileExistsAtPath:aSavePath]) {
                [fileManager createDirectoryAtPath:aSavePath withIntermediateDirectories:YES attributes:nil error:nil];
            }
    //         [self addVideoPlayerWithURL:[NSURL fileURLWithPath:fileName]];
            [self addVideoPlayerWithURL:[NSURL URLWithString:aUrl]];
            //下载附件
            NSURL *url = [[NSURL alloc] initWithString:aUrl];
            NSURLRequest *request = [NSURLRequest requestWithURL:url];
            
            AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
            operation.inputStream   = [NSInputStream inputStreamWithURL:url];
            operation.outputStream  = [NSOutputStream outputStreamToFileAtPath:fileName append:NO];
            
            //下载进度控制
            
             [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
             NSLog(@"is download:%f", (float)totalBytesRead/totalBytesExpectedToRead);
             }];
            
            //已完成下载
            [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    //            NSData *audioData = [NSData dataWithContentsOfFile:fileName];
                NSLog(@"完成下载");
                //设置下载数据到res字典对象中并用代理返回下载数据NSData
            } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                NSLog(@"下载失败");
                //下载失败
            }];
            
            [operation start];
        }
    }

    注意:从本度读取路径:[NSURL fileURLWithPath:fileName]

    在网上读取路径:[NSURL URLWithString:aUrl]

    Demo百度云下载链接:http://pan.baidu.com/s/1c0bL9dQ

    补充:iOS边下边播放 http://blog.csdn.net/zttjhm/article/details/38063605

    iOS视频压缩:http://blog.csdn.net/lookyou111/article/details/25625775

  • 相关阅读:
    ZOJ 1002 Fire Net (火力网)
    UVa OJ 117 The Postal Worker Rings Once (让邮差只走一圈)
    UVa OJ 118 Mutant Flatworld Explorers (变体扁平世界探索器)
    UVa OJ 103 Stacking Boxes (嵌套盒子)
    UVa OJ 110 MetaLoopless Sorts (无循环元排序)
    第一次遇到使用NSNull的场景
    NSURL使用浅析
    从CNTV下载《小小智慧树》
    NSDictionary and NSMutableDictionary
    Category in static library
  • 原文地址:https://www.cnblogs.com/hxwj/p/4742932.html
Copyright © 2011-2022 走看看