如何在iOS中播放视频PHAsset? [英] How to Play Videos PHAsset in iOS?

查看:890
本文介绍了如何在iOS中播放视频PHAsset?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想播放PHAsset中的视频,该视频是从iOS照片收集的. PHAsset视频nsurl( https://stackoverflow.com/a/35099857/1084174 )对我有效自己的应用程序让MyPlayer停留片刻/片刻.当我仅将图像/视频复制到自己的MyPlayers沙箱中时,nsurl始终有效.在我看来,

I want to play video from PHAsset, collected from iOS Photos. PHAsset video nsurl (https://stackoverflow.com/a/35099857/1084174) is valid to my own application lets say MyPlayer for few moments/blocks. When I am copying the image/video into MyPlayers own sandbox only then the nsurl becomes always valid. It seems to me,

我需要将每个视频从临时PHAsset nsurl复制到MyPlayers 沙箱(appgroup/documents),只有这样我才能播放视频 沙箱相对nsurl.

I need to copy each video from temporary PHAsset nsurl to MyPlayers sandbox (appgroup/documents) and only then I can play the video with sandbox relative nsurl.

如果是这种情况,所有其他播放器如何动态播放长视频?如果还有其他方法可以播放视频而不将其复制到应用程序沙箱中,请告诉我.

If this is the case how do all other player play long videos on the fly? If there is any other way to play video without copying to apps sandbox, please let me know the way.

推荐答案

经过几天的实验,终于找到了解决方案,

After several days experiment finally I come upon a solution,

import AVKit

来自PHAsset

static func playVideo (view:UIViewController, asset:PHAsset) {

        guard (asset.mediaType == PHAssetMediaType.Video)

            else {
                print("Not a valid video media type")
                return
        }

        PHCachingImageManager().requestAVAssetForVideo(asset, options: nil, resultHandler: {(asset: AVAsset?, audioMix: AVAudioMix?, info: [NSObject : AnyObject]?) in

            let asset = asset as! AVURLAsset

            dispatch_async(dispatch_get_main_queue(), {

                let player = AVPlayer(URL: asset.URL)
                let playerViewController = AVPlayerViewController()
                playerViewController.player = player
                view.presentViewController(playerViewController, animated: true) {
                    playerViewController.player!.play()
                }
            })
        })
    }

来自AppLocalUrl

static func playVideo (view:UIViewController, appLocalUrl:NSURL) {

        dispatch_async(dispatch_get_main_queue(), {

            let player = AVPlayer(URL: appLocalUrl)
            let playerViewController = AVPlayerViewController()
            playerViewController.player = player
            view.presentViewController(playerViewController, animated: true) {
                playerViewController.player!.play()
            }
        })
    }

这篇关于如何在iOS中播放视频PHAsset?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆