отображать все видео, хранящиеся в каталоге документов

Я сохранил видео в папке с документами из библиотеки фотографий. Теперь я хочу показать все видео, которые хранятся в моем каталоге документов ... но я не знаю, как это возможно ??? На самом деле я хочу отображать все видео так, как будто они открыты в библиотеке фотографий (четыре видео в одной строке) ... и когда я нажимаю на любое видео ... видео начинает воспроизводиться ...

Кто-нибудь может мне помочь, это лучший способ показать все видео из каталога документов в 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]; 

}

person Rox    schedule 09.07.2012    source источник
comment
Ваш каталог документов содержит только видео MOV или любой другой файл?   -  person Sanchit Paurush    schedule 09.07.2012
comment
Что ж, в этом случае вы можете получить все файлы из каталога документов. Вы знаете, как это сделать? или я должен сказать вам его код?   -  person Sanchit Paurush    schedule 09.07.2012
comment
да, я знаю, как это сделать ...   -  person Rox    schedule 09.07.2012
comment
Я просто хочу отобразить их в контроллере просмотра   -  person Rox    schedule 09.07.2012


Ответы (3)


Я рекомендую вам использовать элемент управления grid-view с открытым исходным кодом. Вы можете найти их на GitHub. Например, интересен BDDynamicGridViewController. Но это не единственный вариант. Также существует AQGridView.

Кроме того, существует популярная библиотека с открытым исходным кодом, которая называется Three20, и для нее есть обновление под названием Nimbus. В этой библиотеке есть настраиваемый элемент управления для отображения сетки фотографий. Вы можете использовать то же самое для отображения сетки миниатюр видео. Например, попробуйте это.

После того, как вам удастся использовать или создать элемент управления представлением сетки, вам понадобится генератор эскизов для видео. Для этого используйте эту тему .

person Denis Kutlubaev    schedule 09.07.2012

Чтобы получить доступ к видео, хранящимся в библиотеке фотографий на устройстве, вам необходимо использовать библиотеку активов. В следующем коде показано, как получить доступ к первому видео в библиотеке фотографий:

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

person werner    schedule 09.07.2012
comment
Спасибо Вернер ... но я хочу получить видео из каталога документов - person Rox; 09.07.2012
comment
хорошо, это означает, что вам нужно дублировать или перемещать их, не так ли? , поэтому я предпочитаю показывать их прямо из библиотеки фотографий. Как вы их покажете? Возможно, вам потребуется создать миниатюру, чтобы отобразить их. AQGridView - хорошая библиотека для отображения их в вашем собственном ViewController. - person werner; 09.07.2012
comment
да, я хочу переместить видео из библиотеки фотографий, и когда я записываю любое видео, оно также сохраняется в моем каталоге документов ... и я не знаю, как отображать все фильмы ... поэтому я задал этот вопрос - person Rox; 09.07.2012

Я сделал такой же проект для одного из своих клиентов. Я могу рассказать вам идею, но не могу назвать код. Идея состоит в том, чтобы при съемке или сохранении видео взять начальный кадр каждого видео и сохранить его как изображение PNG в качестве значка видео. Таким образом вы получите значок каждого видео. Сохраните все изображения в разных папках таким образом, чтобы каждое изображение могло быть связано с его видео. Теперь извлеките все видео из папки с документами с помощью кода ниже

NSFileManager *filemgr;
filemgr = [NSFileManager defaultManager];
filelist = [filemgr contentsOfDirectoryAtPath:path error:nil];

* список файлов - это NSArray

Таким же образом получите значки видео.

Сделайте вид кнопок в виде сетки. Установите изображения кнопок как значки видео. Показать названия видео. При нажатии на видео откройте новый контроллер просмотра и включите видеоплеер для воспроизведения видео там.

person Sanchit Paurush    schedule 09.07.2012
comment
не могли бы вы объяснить, как я могу сохранить начальный кадр каждого видео и сохранить его как значок видео .... - person Rox; 09.07.2012
comment
codza.com/extracting-frames-from-movies-on-iphone Эта ссылка поможет вам извлечь кадр из видео - person Sanchit Paurush; 09.07.2012
comment
вы также можете использовать это stackoverflow.com/questions/1259316/ - person Sanchit Paurush; 09.07.2012