显示存储在文档目录中的所有视频

时间:2012-07-09 07:22:54

标签: iphone objective-c ios5 nsdocument alassetslibrary

我将视频存储在照片库的文档目录中。现在我想显示存储在我的文档目录中的所有视频..但我不知道它是如何可能的??? 实际上我想要显示所有视频,就像它在照片库中打开一样(单行四个视频)..当我点击任何视频时...视频开始播放......

任何人都可以帮助我,这是显示从文档目录到ViewController的所有视频的最佳方式.... 感谢名单......

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
 {
    NSURL * movieURL = [info valueForKey:UIImagePickerControllerMediaURL] ;
    NSData * movieData = [NSData dataWithContentsOfURL:movieURL];
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [documentPaths objectAtIndex:0];
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[[self imageNameTextField]text]];
    fullPath = [fullPath stringByAppendingFormat:@".MOV"];
    [ movieData writeToFile:fullPath atomically:YES]; 

}

3 个答案:

答案 0 :(得分:2)

我建议您使用开源网格视图控件。你可以在GitHub找到它们。例如,BDDynamicGridViewController很有趣。但它不是唯一的选择。还有AQGridView

此外,有一个流行的开源库,名为Three20,它有升级,称为Nimbus。此库具有用于显示照片网格的自定义控件。您可以使用相同的方式显示视频缩略图网格。例如,尝试this

在您设法使用或创建网格视图控件之后,您将需要视频的缩略图生成器。为此目的使用this topic

答案 1 :(得分:0)

要访问设备上照片库中存储的视频,您需要使用资源库。以下代码显示如何访问照片库中的第一个视频:

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];


// Enumerate just the photos and videos group by using ALAssetsGroupSavedPhotos.

[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {


// Within the group enumeration block, filter to enumerate just videos.

[group setAssetsFilter:[ALAssetsFilter allVideos]];


// For this example, we're only interested in the first item.

[group enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndex:0] options:0

       usingBlock:^(ALAsset *alAsset, NSUInteger index, BOOL *innerStop) {

       // The end of the enumeration is signaled by asset == nil.

       if (alAsset) {

           ALAssetRepresentation *representation = [alAsset defaultRepresentation];

           NSURL *url = [representation url];

           AVAsset *avAsset = [AVURLAsset URLAssetWithURL:url options:nil];

           // Now you have the AV asset for the video.

        }

      }];

    }

     failureBlock: ^(NSError *error) {

     // Typically you should handle an error more gracefully than this.

     NSLog(@"No groups");

     }];


[library release];

此示例位于AVFoundation编程指南中,有关Apple developer website

的更多详细信息

答案 2 :(得分:0)

我为我的一个客户做了同样的项目。我可以告诉你这个想法,但不能告诉你代码。这个想法是在拍摄或保存视频时拍摄每个视频的起始帧并将其保存为PNG图像作为视频的图标。通过这种方式,您将获得每个视频的图标。将所有图像保存在不同的文件夹中,使每个图像都可以与其视频链接。现在通过以下代码

从文档文件夹中检索所有视频
NSFileManager *filemgr;
filemgr = [NSFileManager defaultManager];
filelist = [filemgr contentsOfDirectoryAtPath:path error:nil];

* filelist是NSArray

以同样的方式检索视频的图标。

制作按钮的网格视图。将按钮的图像设置为视频图标。显示视频名称。点击视频后,打开一个新的视图控制器,让视频播放器在那里播放视频。