ios 开发 如何浏览samba里的视频图片es文件浏览器 samba2

阅读权限20
在线时间 小时
我是菜鸟,请教各位如何使用upnp文件浏览和samba网络共享?万分感激。新买了个k360i,也是第一次接触,希望各位大虾帮帮小弟,鞠躬!
使用 (可批量传图、插入视频等)快速回复iOS 获取系统相册内视频与图片(AssetsLibrary篇) - 简书
iOS 获取系统相册内视频与图片(AssetsLibrary篇)
好些天没写点东西了,最近公司要做新项目,有点小忙。不想我的坚持就此中断,我把我前些天研究的东西拿出来给大家看看。这次整理的是AssetsLibrary和PhotoKit的使用。本人处女座,有点强迫症,之前写的项目里用的是AssetsLibrary写的调取相册内的媒体文件,但是Xcode总是报警告错误,虽然能够编译并展示效果,但是十几个警告错误挂在那,心里总不是滋味,所以我就研究了一下AssetLibrary和PhotoKit。在 iOS 8 出现之前,开发者只能使用 AssetsLibrary 框架来访问设备的照片库,这是一个有点跟不上 iOS 应用发展步伐以及代码设计原则但确实强大的框架,考虑到 iOS7 仍占有不少的渗透率,因此 AssetsLibrary 也是本文重点介绍的部分。而在 iOS8 出现之后,苹果提供了一个名为 PhotoKit 的框架,一个可以让应用更好地与设备照片库对接的框架。
一、AssetsLibrary 组成
AssetsLibrary 的组成比较符合照片库本身的组成,照片库中的完整照片库对象、相册、相片都能在 AssetsLibrary 中找到一一对应的组成,这使到 AssetsLibrary 的使用变得直观而方便。想要了解AssetsLibrary得从它的类开始。
AssetsLibrary: 代表整个设备中的资源库(照片库),通过 AssetsLibrary 可以获取和包括设备中的照片和视频
ALAssetsGroup: 映射照片库中的一个相册,通过 ALAssetsGroup 可以获取某个相册的信息,相
册下的资源,同时也可以对某个相册添加资源。
ALAsset: 映射照片库中的一个照片或视频,通过 ALAsset 可以获取某个照片或视频的详细信息,
或者保存照片和视频。
ALAssetRepresentation: ALAssetRepresentation 是对 ALAsset 的封装(但不是其子类),可以更方便地获取 ALAsset 中的资源信息,每个 ALAsset 都有至少有一个 ALAssetRepresentation 对象,可以通过 defaultRepresentation 获取。而例如使用系统相机应用拍摄的 RAW + JPEG 照片,则会有两个 ALAssetRepresentation,一个封装了照片的 RAW 信息,另一个则封装了照片的 JPEG 信息。
二、AssetsLibrary 的基本使用
AssetsLibrary 的功能很多,基本可以分为对资源的获取/保存两个部分,保存的部分相对简单,API 也比较少,因此这里不作详细介绍。获取资源的 API 则比较丰富了,一个常见的使用大量 AssetsLibrary API 的例子就是图片选择器(ALAsset Picker)。要制作一个图片选择器,思路应该是获取照片库-列出所有相册-展示相册中的所有图片-预览图片大图。首先是App 照片操作授权:
NSString *tipTextWhenNoPhotosA // 提示语
// 获取当前应用对照片的访问授权状态
ALAuthorizationStatus authorizationStatus = [ALAssetsLibrary authorizationStatus];
// 如果没有获取访问授权,或者访问授权状态已经被明确禁止,则显示提示语,引导用户开启授权
if (authorizationStatus == ALAuthorizationStatusRestricted || authorizationStatus == ALAuthorizationStatusDenied) {
NSDictionary *mainInfoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *appName = [mainInfoDictionary objectForKey:@"CFBundleDisplayName"];
tipTextWhenNoPhotosAuthorization = [NSString stringWithFormat:@"请在设备的\"设置-隐私-照片\"选项中,允许%@访问你的手机相册", appName];
// 展示提示语
如果已经获取授权,则可以获取相册列表:
_assetsLibrary = [[ALAssetsLibrary alloc] init];
_albumsArray = [[NSMutableArray alloc] init];
[_assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (group) {
[group setAssetsFilter:[ALAssetsFilter allPhotos]];
if (group.numberOfAssets & 0) {
// 把相册储存到数组中,方便后面展示相册时使用
[_albumsArray addObject:group];
if ([_albumsArray count] & 0) {
// 把所有的相册储存完毕,可以展示相册列表
// 没有任何有资源的相册,输出提示
} failureBlock:^(NSError *error) {
NSLog(@"Asset group not found!\n");
上面的代码中,遍历出所有的相册列表,并把相册中资源数不为空的相册 ALAssetGroup 对象的引用储存到一个数组中。这里需要强调几点:
iOS 中允许相册为空,即相册中没有任何资源,如果不希望获取空相册,则需要像上面的代码中那样手动过滤。
ALAssetsGroup 有一个 setAssetsFilter 的方法,可以传入一个过滤器,控制只获取相册中的照片或只获取视频。一旦设置过滤,ALAssetsGroup 中资源列表和资源数量的获取也会被自动更新。
整个 AssetsLibrary 中对相册、资源的获取和保存都是使用异步处理(Asynchronous),这是考虑到资源文件体积相当比较大(还可能很大)。例如上面的遍历相册操作,相册的结果使用 block 输出,如果相册遍历完毕,则最后一次输出的 block 中的 group 参数值为 nil。而 stop 参数则是用于手工停止遍历,只要把 *stop 置 YES,则会停止下一次的遍历。关于这一点常常会引起误会,所以需要注意。
现在,已经可以获取相册了,接下来是获取相册中的资源:
_imagesAssetArray = [[NSMutableArray alloc] init];
[assetsGroup enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if (result) {
[_imagesAssetArray addObject:result];
// result 为 nil,即遍历相片或视频完毕,可以展示资源列表
跟遍历相册的过程类似,遍历相片也是使用一系列的异步方法,其中上面的方法所输出的 block 中,除了 result 参数表示资源信息,stop 用于手工停止遍历外,还提供了一个 index 参数,这个参数表示资源的索引。一般来说,展示资源列表都会使用缩略图(result.thumbnail),因此即使资源很多,遍历资源的速度也会相当快。但如果确实需要加载资源的高清图或者其他耗时的处理,则可以利用上面的 index 参数和 stop 参数做一个分段拉取资源。例如:
NSUInteger _targetI // index 目标值,拉取资源直到这个值就手工停止拉取
NSUInteger _currentI // 当前 index,每次拉取资源时从这个值开始
_targetIndex = 50;
_currentIndex = 0;
- (void)loadAssetWithAssetsGroup:(assetsGroup *)assetsGroup {
[assetsGroup enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndex:_currentIndex] options:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
_currentIndex =
if (index & _targetIndex) {
// 拉取资源的索引如果比目标值大,则停止拉取
*stop = YES;
if (result) {
[_imagesAssetArray addObject:result];
// result 为 nil,即遍历相片或视频完毕
}// 之前拉取的数据已经显示完毕,需要展示新数据,重新调用 loadAssetWithAssetsGroup 方法,并根据需要更新 _targetIndex 的值
最后一步是获取图片详细信息,例如:
// 获取资源图片的详细资源信息,其中 imageAsset 是某个资源的 ALAsset 对象
ALAssetRepresentation *representation = [imageAsset defaultRepresentation];
// 获取资源图片的 fullScreenImage
UIImage *contentImage = [UIImage imageWithCGImage:[representation fullScreenImage]];
对于一个 ALAssetRepresentation,里面包含了图片的多个版本。最常用的是 fullResolutionImage 和 fullScreenImage。fullResolutionImage 是图片的原图,通过 fullResolutionImage 获取的图片没有任何处理,包括通过系统相册中“编辑”功能处理后的信息也没有被包含其中,因此需要展示“编辑”功能处理后的信息,使用 fullResolutionImage 就比较不方便,另外 fullResolutionImage 的拉取也会比较慢,在多张 fullResolutionImage 中切换时能明显感觉到图片的加载过程。因此这里建议获取图片的 fullScreenImage,它是图片的全屏图版本,这个版本包含了通过系统相册中“编辑”功能处理后的信息,同时也是一张缩略图,但图片的失真很少,缺点是图片的尺寸是一个适应屏幕大小的版本,因此展示图片时需要作出额外处理,但考虑到加载速度非常快的原因(在多张图片之间切换感受不到图片加载耗时),仍建议使用 fullScreenImage。
系统相册的处理过程大概也是如上,可以看出,在整个过程中并没有使用到图片的 fullResolutionImage,从相册列表展示到最终查看资源,都是使用缩略图,这也是 iOS 相册加载快的一个重要原因。
这里我整理一个demo,欢迎大家给予指正。demo链接如下:
由于时间有限,我还是将PhotoKit的内容放在下一篇。敬请期待。。。。iPhone和iPad上最棒的免费视频播放器 - 文章 - 伯乐在线
& iPhone和iPad上最棒的免费视频播放器
& 来源: &&&&
iOS应用的生态系统中有很大一部分是由付费软件组成,与此相比,Android阵营中的Google Play商店则没有那么多的付费应用。如此看来,iOS更像是Mac OS X,现在花上几块美刀买个app是稀疏平常的事情。
当然,对于手机或平板电脑上的视频播放器,你并不需要花费大量的金钱。个人而言,对于特殊的应用,我并不介意花费额外的金钱,但很多免费的应用已经能够满足我的移动应用需求了。视频播放器就是个例子。尽管这类应用中最火的那几个都是付费的,但仍然有一些非常棒的免费视频播放器可供我们选择。在这里我们会教你如何通过完全免费的iOS应用来满足你的视频播放需求。
我们之前也介绍过OPlayer,第一次是出现在Nancy Messieh的文章中()。中也提到过。多次提到OPlayer是有原因的,因为OPlayer真的是个非常棒的应用,是iOS设备上最棒的视频播放应用之一。通过iTunes从计算机传送视频文件到你的设备上,OPlayer可以作为一个标准的视频播放软件使用。此外,也可以通过无线网络或者FTP客户端来传输文件。如果你不想观看存放在本地的视频,那也没有问题。OPlayer能够通过HTTP、RTSP、MMS、FTP以及SAMBA来处理视频流。
总的来说,OPlayer有着优秀的视频格式兼容性,能轻松处理大多数的视频格式。免费版的OPlayer会在菜单中显示广告文本,它们是非侵入式的。你可以在iPhone上下载OPlayer Lite,或者在iPad上安装OPlayerHD Lite。
另一个高质量的视频应用是RockPlayer2。在最新版中,RockPlayer2实现了对流媒体频道的支持,但这个应用还是最适合播放本地的视频文件。你可以通过iTunes、HTTP、FTP或WebDAV将视频文件传送到iPhone或iPad上。RockPlayer2最有趣的一个特性是RockShare,通过这个功能你可以轻松地在各个兼容的设备间共享视频。
总的来说,RockPlayer2不仅仅只是个支持多种视频格式的播放器。但它对H.264(通常会封装到MP4和MKV容器中)的支持并不是完美无缺的,这一点上还能有很大的改进。免费版的RockPlayer2带有广告,支持iPhone和iPad。可以在应用中点击购买来去掉广告,只需要不到5美刀哦。
如果你不打算把视频保存在iPad上,那你一定要试试AirPlayit。它能够轻松地将视频从你的桌面计算机共享到iPhone或者iPad上。只需要在桌面计算机上下载并安装一个小型的服务器应用,选择你希望在网络中共享的文件夹就搞定了。这个服务器应用可以免费在官网上下载,支持Windows和Mac OS。
如果你要离线了,可以马上下载视频文件到本地。此外,AirPlayit还支持对不兼容的视频文件做格式转换。支持实时转换和离线转换。
iPad上我最喜欢的视频播放器之一是PlayerXtreme。免费版自带了很多功能,包括支持多种视频格式的回放。它也能完美地播放H.264视频文件。完整的支持格式列表可以在PlayerXtreme的iTunes页面上找到。
使用免费版的PlayerXtreme,你需要通过iTunes将视频文件传送到iPhone或iPad上。应用中的升级项目(每个升级需花费0.99美刀)允许你解锁无线视频传输、字幕支持、音效加强、网络驱动等等功能。
VLC Media Player使用起来相当的简单,支持的视频格式相当多。最大的缺点是你得通过SSH来传送视频文件到iPhone或iPad上。想知道怎么做么,看看就知道了。
VLC Media Player之前是可以通过app store获取的,但由于许可证不兼容的原因被下架了。遗憾呐,但这并不影响用户对它的喜爱。
你在iPhone和iPad上使用的免费视频播放应用是什么呢?在评论中和大家分享一下吧。
英文原文: ,编译:在线——
译文链接:/
【非特殊说明,转载请在正文中标注并保留原文链接、译文链接和译者等信息,谢谢合作!】
关于作者:
可能感兴趣的话题
能推荐些别的应用吗?比如音乐和交互形式特别新颖的.谢谢
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2017 伯乐在线查看:3978|回复:2
助理工程师
我想问下在我的应用里如何直接播放url上的视频文件
助理工程师
& & NSString *urlString = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
& & NSURL *movieUrl = [[[NSURL alloc] initWithString:urlString]autorelease];
& & moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieUrl];
初级工程师

我要回帖

更多关于 ios samba客户端 的文章

 

随机推荐