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

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

【问题讨论】:

    标签: iphone ios ios5


    【解决方案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];
    

    更多参考:

    1. AssetsLibrary
    2. MPMoviePlayerController

    【讨论】:

    • 但它从“照片库”而不是“视频应用”播种视频,其中包含我们使用 iTunes 同步的电影或歌曲等
    • @Hamdullahshah:这是不可能的。请用详细的描述提问以避免这样的误解:)
    猜你喜欢
    • 2012-05-05
    • 2011-03-12
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    相关资源
    最近更新 更多