作为优质的短视频系统开发者,提高产品性能和增强用户体验是非常重要的,除此之外,为了使用户能够对产品保有一定的新鲜感,在短视频系统中加入了点击个人相册即可选取上传视频的功能。虽然看似是很基础且简单的功能,但是提现到短视频系统开发上就需要用源码来实现了。(以下源码仅供参考)
一、导入头文件

 #import <Photos/Photos.h>

二、设置监听相册变化代理并注册

PHPhotoLibraryChangeObserver
[[PHPhotoLibrary sharedPhotoLibrary] registerChangeObserver:self];

三、实现代理方法

- (void)photoLibraryDidChange:(PHChange *)changeInstance {dispatch_sync(dispatch_get_main_queue(), ^{if ([PublicObj havePhotoLibraryAuthority]) {[self getAlbumVideo];}[[PHPhotoLibrary sharedPhotoLibrary] unregisterChangeObserver:self];});
}

四、获取相册

PHFetchOptions *option = [[PHFetchOptions alloc] init];option.predicate = [NSPredicate predicateWithFormat:@"mediaType == %ld",PHAssetMediaTypeVideo];option.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];

//获取所有智能相册

  PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];PHFetchResult *streamAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumMyPhotoStream options:nil];PHFetchResult *userAlbums = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil];PHFetchResult *syncedAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:nil];PHFetchResult *sharedAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumCloudShared options:nil];NSArray *arrAllAlbums = @[smartAlbums, streamAlbums, userAlbums, syncedAlbums, sharedAlbums];__block NSMutableArray *m_array = [NSMutableArray array];for (PHFetchResult<PHAssetCollection *> *album in arrAllAlbums) {[album enumerateObjectsUsingBlock:^(PHAssetCollection * _Nonnull collection, NSUInteger idx, BOOL *stop) {

//过滤PHCollectionList对象

  if (![collection isKindOfClass:PHAssetCollection.class]) return;

//过滤最近删除和已隐藏

 if (collection.assetCollectionSubtype > 215 ||collection.assetCollectionSubtype == PHAssetCollectionSubtypeSmartAlbumAllHidden) return;

//获取相册内asset result

 PHFetchResult<PHAsset *> *result = [PHAsset fetchAssetsInAssetCollection:collection options:option];NSString *title = collection.localizedTitle;//NSLog(@"===6.26===%@====%@==%ld",result,title,(long)collection.assetCollectionSubtype);if (!result.count) return;if (collection.assetCollectionSubtype==PHAssetCollectionSubtypeSmartAlbumVideos) {[result enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {NSMutableDictionary *m_dic = [NSMutableDictionary dictionary];PHAsset *phAsset = (PHAsset *)obj;//NSLog(@"===88=%@",phAsset);NSString *position = [NSString string];if ([PublicObj judgeAssetisInLocalAblum:phAsset]) {position = @"location";}else{position = @"iCloud";}[m_dic setObject:position forKey:@"position"];[self getVideoPathFromPHAsset:phAsset Complete:^(NSString *filePatch, NSString *dTime) {if (filePatch && dTime) {[m_dic setObject:filePatch forKey:@"filePath"];[m_dic setObject:dTime forKey:@"time"];}}];[self getVideoImageFromPHAsset:phAsset Complete:^(UIImage *image) {if (!image) {image = [UIImage imageNamed:@"公共-无数据"];}[m_dic setObject:image forKey:@"cover"];}];[m_array addObject:m_dic];}];}}];
}_albumArray = [NSArray arrayWithArray:m_array];

以上,albumArray就是我们得到的相册中所有的视频,待短视频系统开发完成后即可在前端APP中体验到该功能。由此可见,在开发过程中不仅需要注意技术实现问题,还需要注意区别ios和Android系统。想要了解其他的内容可直接关注作者,后续会继续分享相关内容文章。
声明:本文由作者原创,转载请注明原文出处、作者及原文链接。

短视频系统开发时如何实现在iOS系统相册中选取视频相关推荐

  1. SAP系统开发时查询库存的方…

    原文地址:SAP系统开发时查询库存的方法作者:conan 如果系统在集团层级启用了批次管理,那么对于某个物料是否启用了批次管理,要检查MARA表的XCHPF字段,如果值为X,则说明启用了批次管理,如果 ...

  2. Android Studio App开发之使用摄像机录制视频和从视频库中选取视频的讲解及实战(附源码)

    运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一.使用摄像机录制视频 与音频类似,通过系统摄像机可以很方便的录制视频,只要指定摄像动作为MediaStore.ACTION_VIDEO_CAPT ...

  3. 积分商城系统开发_专业提供积分商城系统定制解决方案

    积分商城系统开发_专业提供积分商城系统定制解决方案 一.什么是积分商城? 1.积分商城的第一种理解,偏重于"积分".即积分商城是专门为消化"积分"这一奖励而特设 ...

  4. 使用IMS系统开发研发周工作任务跟踪系统+项目工时汇报系统

    现状:研发秘书目前使用Excel每周收集各研发人员本周项目进度数据和工时投入数据,然后再汇总后给研发领导审批,审批后再将每个项目工时汇总统计给财务,作为财务系统中月度研发费用摊销的依据. 问题:分散式 ...

  5. iOS RTMP 视频直播开发笔记(5)- iOS H.264 实时硬编码实现原理

    iOS RTMP 视频直播开发笔记(5)- iOS H.264 实时硬编码实现原理 网上有两个实现,GDCL – AVEncoder 和 IFVideoPicker. IFVideoPicker 使用 ...

  6. ios 获取相册第一个视频_历史上第一个视频游戏

    ios 获取相册第一个视频 重点 (Top highlight) Looking closely at the oscilloscope, you what function the picture ...

  7. 多媒体——视频——从视频库中选取视频

    从视频库中选取视频 系统自带的相册既保存图片又保存视频,这意味着用户能够从中选择已有的视频. 打开视频库之前,需要指定数据类型为视频,相关代码代码示例如下: Intent intent = new I ...

  8. 鸿蒙系统能超过ios多少年,未来3年,鸿蒙系统能与iOS系统媲美吗,能否超越iOS系统?...

    要回答这个问题,还得从事件的缘由说起.任正非之前表示:华为鸿蒙系统最多三年就能媲美iOS系统.于是就有了这个问题的由来,下面开始答题. 梦想还是要有的,万一实现了呢?我觉得鸿蒙想要花三年媲美iOS系统 ...

  9. 《嵌入式系统数字视频处理权威指南》——第1章 现实世界中的视频

    本节书摘来自华章计算机<嵌入式系统数字视频处理权威指南>一书中的第1章,作者:(美)Michael Parker Suhel Dhanani 更多章节内容可以访问云栖社区"华章计 ...

最新文章

  1. AndoridSQLite数据库开发基础教程(10)
  2. 柜子里的人笑出了声...
  3. hdu5040 不错的广搜旋转的摄像头
  4. JavaScript 的性能优化:加载和执行
  5. 在线教育音视频技术探索与应用
  6. Linux自动化安装cobbler
  7. html视频标签略缩图,JS可以截取video的标签视频缩略图吗?
  8. 线程池参数到底要怎么配?
  9. 简单理解极大似然估计MLE
  10. Windows获取本机主机IP信息
  11. js 文本加密 php解密,JavaScript加密和PHP解密
  12. 【Java从0到架构师】git 核心原理和分支管理
  13. 编码之道:是谁制造了混乱
  14. DevExpress v18.1新版亮点——WPF篇(一)
  15. 2019年9月全国程序员工资统计,值得参考
  16. 计算机英语单词大全txt,计算机英语词汇大全.txt
  17. 用python如何制作表格_Python中用xlwt制作表格实例讲解
  18. 根据时间段自动调节pulseaudio音量
  19. 八爪鱼导出到mysql数据库_八爪鱼采集器怎么将数据导出数据库?
  20. python判断数值为空_python判断是空的实例分享

热门文章

  1. FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇三
  2. 【Opencv】目标追踪——高斯混合模型分离算法(MOG)
  3. Mockito的简单使用
  4. 观《哪吒之魔童降世》有感
  5. python输出古诗词_python爬虫——爬取古诗词
  6. Get请求后端并带参数
  7. 如何用2SC5200晶体管制作音频放大器
  8. 大数据常见面试题 Hadoop篇(2)
  9. When Observable completes without emitting, toPromise() will successfully resolve with undefined.
  10. 电子杂志+php,phpwind推电子杂志《站长天下》 网罗站长故事