6

カスタム画像ピッカーを使用してタイム ラプスを選択しています。選択したタイム ラプスの URL を取得して、タイム ラプスを再生できるようにしたいと考えています。

- (void)qb_imagePickerController:(QBImagePickerController *)imagePickerController didFinishPickingAssets:(NSArray *)assets {
for (PHAsset *asset in assets) {



    NSURL *url = [NSURL URLWithString: assetURLgoesHere];
    AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:url options:nil];
    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:avAsset];
    AVPlayer *videoPlayer = [AVPlayer playerWithPlayerItem:playerItem];


    [videoPlayer play];

}

[self dismissViewControllerAnimated:YES completion:NULL];
}

これは私が現時点で持っているものですが、アセットの URL を取得する必要があります。

普段はswiftを使っていますが、このカスタム画像ピッカーはobjective-cで書かれています。だから私は客観的な初心者のビットです

更新されたコード

- (void)qb_imagePickerController:(QBImagePickerController *)imagePickerController didFinishPickingAssets:(NSArray *)assets {
for (PHAsset *asset in assets) {

    - (PHImageRequestID)requestAVAssetForVideo:(PHAsset *)asset options:(PHVideoRequestOptions *)options resultHandler:(void (^)(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info))resultHandler

    NSURL *url = [NSURL URLWithString: asset];
    AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:url options:nil];
    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:avAsset];
    AVPlayer *videoPlayer = [AVPlayer playerWithPlayerItem:playerItem];


    [videoPlayer play];

}

[self dismissViewControllerAnimated:YES completion:NULL];
}
4

6 に答える 6

7

を使用する必要がありますPHImageManager

クラスのsharedInstanceを使用し、このメソッドをPHAsset、オプション、および完了ブロック ハンドラーと共に呼び出します。

- (PHImageRequestID)requestAVAssetForVideo:(PHAsset *)asset options:(PHVideoRequestOptions *)options resultHandler:(void (^)(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info))resultHandler

ハンドラーは、URL ではなく、 にAVAsset使用する必要がある を提供します。AVPlayerItem

例:

[[PHImageManager defaultManager] requestAVAssetForVideo:asset options:nil resultHandler:^(AVAsset *avAsset, AVAudioMix *audioMix, NSDictionary *info) {
  // Use the AVAsset avAsset
  AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:avAsset];
  AVPlayer *videoPlayer = [AVPlayer playerWithPlayerItem:playerItem];
}];

アプリケーションフローをさらに妨害する可能性がある非同期に注意してください。

于 2015-11-22T18:30:18.393 に答える
0

からのビデオ URL について言えば、 Swift 2PHAssetでユーティリティ関数を用意したことがあります(からのビデオの再生)。この回答を共有すると、誰かを助けるかもしれません。PHAsset

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

この回答を確認してください

于 2016-09-20T21:47:19.613 に答える