ipad ビデオ ライブラリからすべてのビデオ リストを取得し、テーブル ビュー コントローラーで表示して、アプリ内で再生したい。出来ますか?
2 に答える
この 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 {
}
はい、可能です。
次のコードを使用して、すべてのビデオのアセット 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];
詳細については、次を参照してください。