Ios 如何在不使用资源库的情况下从iPhone获取视频?

Ios 如何在不使用资源库的情况下从iPhone获取视频?,ios,objective-c,iphone,ipad,Ios,Objective C,Iphone,Ipad,-(无效)showVideoList { [自建资产库]; } -(作废)建筑资产图书馆 { assetsLibrary=[[AlassetLibrary alloc]init]; AlassetLibrary*notificationSender=nil; videoURLArray=[[NSMutableArray alloc]init]; NSString*最小系统版本=@“4.1”; NSString*systemVersion=[[UIDevice currentDevice]syst

-(无效)showVideoList
{
[自建资产库];
}
-(作废)建筑资产图书馆
{
assetsLibrary=[[AlassetLibrary alloc]init];
AlassetLibrary*notificationSender=nil;
videoURLArray=[[NSMutableArray alloc]init];
NSString*最小系统版本=@“4.1”;
NSString*systemVersion=[[UIDevice currentDevice]systemVersion];
if([systemVersion compare:minimumSystemVersion options:NSNumericSearch]!=传感器解除搜索)
notificationSender=资产库;
[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(AssetLibraryDidChange:)名称:AlasSetLibraryChangedNotification对象:notificationSender];
[自更新设置库];
}
-(作废)资产库变更:(NSNotification*)变更通知
{
[自更新设置库];
}
-(void)updateAssetLibrary
{
assetItems=[NSMutableArray阵列,容量:0];
AlassetLibrary*assetLibrary=[[AlassetLibrary alloc]init];
[assetLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup*组,布尔*停止)
{
国际单项体育联合会(小组)
{
[group SetAssetFilter:[AlasSetFilter allVideos]];
[组EnumerateAssetSingBlock:^(ALAsset*资产,NSU整数索引,布尔*停止)
{
如果(资产)
{
dic=[[NSMutableDictionary alloc]init];
ALAssetRepresentation*defaultRepresentation=[asset defaultRepresentation];
NSString*uti=[defaultRepresentation uti];
videoURL=[[asset valueForProperty:ALAssetPropertyURLs]valueForKey:uti];
mpVideoPlayer=[[MPMoviePlayerController alloc]initWithContentURL:videoURL];
NSString*title=[NSString stringWithFormat:@“%@%lu”,NSLocalizedString(@“视频”,无),[assetItems计数]+1];
[自执行选择器:@selector(imageFromVideoURL)];
[dic setValue:title forKey:@“VideoTitle”];//kName
[dic setValue:videoURL-forKey:@“videoURL”];//库尔
AssetBrowserItem*项=[[AssetBrowserItem alloc]initWithURL:videoURL标题:标题];
[资产添加对象:项目];
[videoURLArray addObject:dic];
NSLog(@“视频有信息:%@”,videoURLArray);
}
NSLog(@“指令值==>%@”,dic);
//NSLog(@“资产:%@”,资产);
NSLog(@“视频为%@”,videoURLArray);
} ];
}
//group==nil信号我们完成了迭代。
其他的
{
dispatch\u async(dispatch\u get\u main\u queue()^{
//[self-updateBrowserItemsAndSignalDelegate:资产];
//loadImgView.hidden=否;
//[微调器停止设置动画];
//[loadImgView removeFromSuperview];
//选择VideoBTN.userInteractionEnabled=YES;
});
}
}
故障块:^(N错误*错误)
{
NSLog(@“枚举资产库组时出错%@\n”,错误);
}];
}
-(UIImage*)来自视频URL的图像
{
UIImage*image=nil;
AVAsset*asset=[[AVURLAsset alloc]initWithURL:videoURL选项:nil];;
AVAssetImageGenerator*imageGenerator=[[AVAssetImageGenerator alloc]initWithAsset:asset];
imageGenerator.appliesPreferredTrackTransform=是;
//计算视频的中点时间
Float64 durationSeconds=CMTimeGetSeconds([资产持续时间]);
CMTime中点=CMTimeMakeWithSeconds(持续时间秒/2.0600);
//从中获取图像
n错误*错误=nil;
CMTime实际时间;
CGImageRef中途图像=[imageGenerator copyCGImageAtTime:中点实际时间:&实际时间错误:&错误];
如果(中途图像!=NULL)
{
//cgimage到uiimage
image=[[UIImage alloc]initWithCGImage:halfWayImage];
[dic设置值:图像分叉:@“图像缩略图”];//kImage
NSLog(@“指令值==>%@”,dic);
NSLog(@“视频为%@”,videoURLArray);
CGImageRelease(中途图像);
}
返回图像;
}
-(void)mediaPicker:(MPMediaPickerController*)mediaPicker didPickMediaItems:(MPMediaItemCollection*)mediaItemCollection
{
MPMediaItem*item=[[mediaItemCollection items]对象索引:0];
NSURL*url=[item valueForProperty:MPMediaItemPropertyAsetUrl];
[mediaPicker DismissViewControllerInitiated:是完成:无];
AVPlayerItem*playerItem=[AVPlayerItem playerItemWithURL:url];
AVPlayer*player=[[AVPlayer alloc]initWithPlayerItem:playerItem];
AVPlayerLayer*playerLayer=[AVPlayerLayer playerLayerWithPlayer:player];
playerLayer.frame=CGRectMake(0,0,10,10);
[玩家游戏];
[self.view.layer addSublayer:playerLayer];

}
为什么不使用该库?这是从iPhone\iPad获取照片/视频的推荐方法。

到目前为止,您尝试了哪些方法?我们不想浪费您的时间建议您知道不起作用的内容。我正在使用资产库,但它正在询问许可证我可以共享我的代码吗?您想对视频做什么?您只想在应用程序中播放它吗?@guruprasadGudluri
我正在使用资产库,但它正在请求许可。它应该问,这有什么不对?因为我正在做一个商业应用。你有什么解决方案可以用另一种方式来实现它吗?不,这就是解决方法。您将获得“权限”对话框,无法绕过它。是否可以从“集合”视图中访问它?