相关疑难解决方法(0)

Swift - 从iOS PHAsset播放视频

我想播放PHAsset从iOS相册中收集的视频.PHAsset视频nsurl(/sf/answers/2456990021/)对我自己的应用程序有效,可以说MyPlayer几分钟/块.当我将图像/视频复制到MyPlayers自己的沙箱中nsurl时,它始终有效.在我看来,

我需要将每个视频从临时PHAssetnsurl 复制到MyPlayers沙箱(appgroup/documents),然后才能使用沙箱相对nsurl播放视频.

如果是这种情况,所有其他玩家如何在飞行中播放长视频?如果有任何其他方式播放视频而不复制到应用程序沙箱,请让我知道方式.

video nsurl ios swift phasset

16
推荐指数
3
解决办法
6133
查看次数

同步将PHAsset(视频)转换为AVAsset

我需要使用AVAsset对象,以便使用AVPlayer和AVPlayerLayer播放它.我开始使用Photos框架,因为不推荐使用AssetsLibrary.现在我到了我有一个PHAsset对象数组的点,我需要将它们转换为AVAsset.我尝试通过PHFetchResult枚举并使用PHAsset的本地化描述分配新的AVAsset,但是当我播放时它似乎没有显示任何视频.

    PHAssetCollection *assetColl = [self scaryVideosAlbum];

    PHFetchResult *getVideos = [PHAsset fetchAssetsInAssetCollection:assetColl options:nil];

    [getVideos enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) {
            NSURL *videoUrl = [NSURL URLWithString:asset.localizedDescription];
            AVAsset *avasset = [AVAsset assetWithURL:videoUrl];
            [tempArr addObject:avasset];
    }];
Run Code Online (Sandbox Code Playgroud)

我假设本地化描述不是视频的绝对URL.

我还偶然发现了PHImageManager和requestAVAssetForVideo,但是,当涉及到视频时,options参数没有isSynchrounous属性,image参数就是这种情况.

        PHVideoRequestOptions *option = [PHVideoRequestOptions new];
        [[PHImageManager defaultManager] requestAVAssetForVideo:videoAsset options:option resultHandler:^(AVAsset * _Nullable avasset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {
Run Code Online (Sandbox Code Playgroud)

有同步方法吗?

谢谢.

video ios avasset photosframework

11
推荐指数
2
解决办法
1万
查看次数

Phasset + AfNetworking上传多个视频

目前我正在使用以下代码上传视频:

  NSURLRequest *urlRequest =  [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:[[entity uploadUrl]absoluteString] parameters:entity.params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [UploadModel getAssetData:entity.asset resultHandler:^(NSData *filedata) {
          NSString *mimeType =[FileHelper mimeTypeForFileAtUrl:entity.fileUrl];
        //  NSError *fileappenderror;

        [formData appendPartWithFileData:filedata name:@"data" fileName: entity.filename mimeType:mimeType];

    }];

} error:&urlRequestError];
Run Code Online (Sandbox Code Playgroud)

GetAssetData方法

+(void)getAssetData: (PHAsset*)mPhasset resultHandler:(void(^)(NSData *imageData))dataResponse{ 

            PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
            options.version = PHVideoRequestOptionsVersionOriginal;

            [[PHImageManager defaultManager] requestAVAssetForVideo:mPhasset options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {

                if ([asset isKindOfClass:[AVURLAsset class]]) {
                    NSURL *localVideoUrl = [(AVURLAsset *)asset URL];
                    NSData *videoData= [NSData dataWithContentsOfURL:localVideoUrl];
                    dataResponse(videoData);

                }
            }];
    }
Run Code Online (Sandbox Code Playgroud)

这种方法的问题是,无论何时上传大/多个视频文件,应用程序都会耗尽内存.我想这是因为请求NSDATA(aka filedata …

iphone objective-c ios afnetworking phasset

8
推荐指数
2
解决办法
5117
查看次数

PHAsset + AFNetworking.无法将文件上传到真实设备上的服务器

目前我正在使用以下代码将文件上传到服务器

NSURLRequest *urlRequest =  [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:[[entity uploadUrl]absoluteString] parameters:entity.params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

    // Get file url 
    [UploadModel getAassetUrl:entity.asset resultHandler:^(NSURL *fileUrl) {

    NSError *fileappenderror;
    // Append
                [formData appendPartWithFileURL:fileUrl name:@"data" error:&fileappenderror];

                if (fileappenderror) {
                  [Sys MyLog: [fileappenderror localizedDescription] ];
                }
            }];

        } error:&urlRequestError];
Run Code Online (Sandbox Code Playgroud)

/*getAassetUrl*/

+(void)getAassetUrl: (PHAsset*)mPhasset resultHandler:(void(^)(NSURL *imageUrl))dataResponse{

    PHImageRequestOptions * requestOption = [[PHImageRequestOptions alloc] init];
    requestOption.synchronous = YES;
    requestOption.deliveryMode = PHImageRequestOptionsDeliveryModeFastFormat;

        [[PHImageManager defaultManager] requestImageDataForAsset:mPhasset options:requestOption resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {

        dataResponse([info objectForKey:@"PHImageFileURLKey"]);

    }];
}
Run Code Online (Sandbox Code Playgroud)

这种方法适用于模拟器,但在真实设备上失败:空文件很可能由于无法从本地存储读取而上载到服务器.日志显示通知

注意:Sandbox:MyApp(213)拒绝文件读取数据/private/var/mobile/Media/DCIM/101APPLE/IMG_1570.PNG

我相信这个笔记意味着app无法通过指定的路径访问该文件.此外,我尝试了一种替代方法,通过附加NSData来上传文件,NSData是从请求PHAsset数据返回的.但是这种方法在大型媒体文件的情况下是不可用的.因为整个文件都被加载到内存中. …

iphone objective-c ios afnetworking phasset

2
推荐指数
1
解决办法
3246
查看次数