1

フォト ライブラリからドキュメント ディレクトリにビデオを保存しました。今、ドキュメント ディレクトリに保存されているすべてのビデオを表示したい..しかし、どのようにそれが可能かわかりませんか??? 実際には、すべてのビデオをフォトライブラリで開いているように表示したい(1行に4つのビデオ)..そして、ビデオをクリックすると...ビデオの再生が開始されます...

ドキュメントディレクトリから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]; 

}
4

3 に答える 3

2

オープンソースのグリッド ビュー コントロールを使用することをお勧めします。それらは GitHub で見つけることができます。たとえば、BDDynamicGridViewControllerは興味深いものです。しかし、それが唯一の選択肢ではありません。AQGridViewもあります。

また、 Three20と呼ばれる人気のあるオープンソース ライブラリがあり、Nimbus と呼ばれるアップグレードがあります。このライブラリには、写真グリッドを表示するためのカスタム コントロールがあります。ビデオのサムネイルグリッドを表示するために同じものを使用できます。たとえば、これを試してください。

グリッド ビュー コントロールを使用または作成した後、ビデオのサムネイル ジェネレーターが必要になります。その目的のためにこのトピックを使用してください。

于 2012-07-09T07:36:16.883 に答える
0

私は私のクライアントの1人のために同じプロジェクトを作りました。アイデアはわかりますが、コードはわかりません。アイデアは、ビデオを撮ったり保存したりするときに、すべてのビデオの開始フレームを取り、それをビデオのアイコンとしてPNG画像として保存することです。このようにして、すべてのビデオのアイコンを取得します。各画像をそのビデオにリンクできるように、すべての画像を別のフォルダに保存します。次に、以下のコードでドキュメントフォルダからすべてのビデオを取得します

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

*filelistはNSArrayです

同様に、ビデオのアイコンを取得します。

ボタンのグリッドビューを作成します。ボタンの画像を動画のアイコンとして設定します。ビデオ名を表示します。ビデオをクリックしたら、新しいビューコントローラを開き、ビデオプレーヤーにビデオを再生させます。

于 2012-07-09T08:16:12.060 に答える
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デベロッパのWebサイトをご覧ください。

于 2012-07-09T07:40:09.190 に答える