如何在 CustomTableView 中显示 ipad 库视频

Posted

技术标签:

【中文标题】如何在 CustomTableView 中显示 ipad 库视频【英文标题】:How to show ipad library videos in CustomTableView 【发布时间】:2012-11-02 07:58:49 【问题描述】:

我想从 ipad 视频库中获取所有视频列表并显示在表格视图控制器中,然后在应用程序中播放。有可能吗?

【问题讨论】:

【参考方案1】:

This Developer.apple documentation 解释了如何使用图像选择器控制器和委托来浏览和选择保存的图片和电影。如果标准的媒体浏览 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 

【讨论】:

不,我想在我的应用中列出视频。就像一个播放列表【参考方案2】:

是的,这是可能的。

您可以使用以下代码获取所有视频的资产网址:

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");  ]; 
         
    
;

您可以使用资产网址来获取该视频。 之后创建视频的缩略图并将其显示在 tableView 中。 您也可以使用资产 url 播放视频:

资产网址如下所示:assets-library://asset/asset.m4v?id=100&amp;ext=m4v

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

更多参考:

    AssetsLibrary MPMoviePlayerController

【讨论】:

但它从“照片库”而不是“视频应用”播种视频,其中包含我们使用 iTunes 同步的电影或歌曲等 @Hamdullahshah:这是不可能的。请用详细的描述提问以避免这样的误解:)

以上是关于如何在 CustomTableView 中显示 ipad 库视频的主要内容,如果未能解决你的问题,请参考以下文章

如何立即设置CustomTableView(CoreData)

将 customTableView 添加到未正确加载 json 数据的视图上

CustomTableView 从不更新

如何为 CustomTableView Cell 应用 layoutConstraints

如何更改 Xamarin.UWP 中 TableView TableSection 中的 TextSize 和大小写

如何在表格视图中显示数组值