0

ipad ビデオ ライブラリからすべてのビデオ リストを取得し、テーブル ビュー コントローラーで表示して、アプリ内で再生したい。出来ますか?

4

2 に答える 2

0

この Developer.apple ドキュメントでは、イメージ ピッカー コントローラーとデリゲートを使用して、保存した写真やムービーを参照および選択する方法について説明しています。標準のメディア ブラウジング UI がニーズに合わない場合は、UIKit と Assets Library フレームワークを使用して完全にカスタム ソリューションを作成できます。

メディア タイプイメージ ピッカー コントローラーが保存された動画、静止画像、またはその両方を表示するかどうかを指定するには、必要なタイプの識別子を含む配列に mediaTypes プロパティを設定します。配列の要素の有効な値は、kUTTypeImage と kUTTypeMovie です。

iPhone または iPod touch でメディア ブラウザ インターフェイスを全画面表示する

 -(BOOL) startMediaBrowserFromViewController: (UIViewController*) controller

               usingDelegate: (id <UIImagePickerControllerDelegate,

                                   UINavigationControllerDelegate>) delegate {



    if (([UIImagePickerController isSourceTypeAvailable:

                 UIImagePickerControllerSourceTypeSavedPhotosAlbum] == NO)

            || (delegate == nil)

            || (controller == nil))

        return NO;



    UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];

    mediaUI.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;



    // Displays saved pictures and movies, if both are available, from the

    // Camera Roll album.

     mediaUI.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil];



    // Hides the controls for moving & scaling pictures, or for

    // trimming movies. To instead show the controls, use YES.

    mediaUI.allowsEditing = NO;



    mediaUI.delegate = delegate;



    [controller presentModalViewController: mediaUI animated: YES];

    return YES;

}

- (IBAction) showSavedMediaBrowser {

    [self startMediaBrowserFromViewController: self

                                    usingDelegate: self];

}

選択したメディアのデリゲート メソッド

- (void) imagePickerController: (UIImagePickerController *) picker

            didFinishPickingMediaWithInfo: (NSDictionary *) info {
}
于 2012-11-02T08:40:19.683 に答える
0

はい、可能です。

次のコードを使用して、すべてのビデオのアセット URL を取得できます。

NSMutableArray* assetURLs = [[NSMutableArray alloc] init];

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

void (^assetEnumerator)( ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop)
{
    if(result != nil)
    {
        if([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypeVideo])
        {
            [assetURLs addObject:[result valueForProperty:ALAssetPropertyURLs]];

            NSLog(@"result is:%@",result);
            NSURL *url= (NSURL*) [[result defaultRepresentation]url]; 

            [library assetForURL:url
                     resultBlock:^(ALAsset *asset)
             {
                      // do stuff here
             }
             failureBlock:^(NSError *error){ NSLog(@"test:Fail"); } ]; 
        } 
    }
};

アセット URL を使用してそのビデオを取得できます。その後、動画のサムネイルを作成し、tableView に表示します。また、アセット URL を使用してビデオを再生することもできます。

アセットの URL は次のようになります。assets-library://asset/asset.m4v?id=100&ext=m4v

NSString *urlAddress = @"assets-library://asset/asset.m4v?id=100&ext=m4v";
NSURL *movieURL= [NSURL URLWithString:urlAddress];
MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL: movieURL];

詳細については、次を参照してください。

  1. 資産ライブラリ
  2. MPMoviePlayerコントローラー
于 2012-11-03T15:42:56.490 に答える