从未调用过AVAssetResourceLoaderDelegate

时间:2017-11-27 11:03:02

标签: ios swift avfoundation avplayer

我正在尝试访问视频中下载的字幕的内容。

我试图通过实施shouldWaitForLoadingOfRequestedResource delegate来做到这一点(如果你想到另一种方法,请告诉我)。不幸的是import UIKit import AVKit import AVFoundation class ViewController: UIViewController, AVAssetResourceLoaderDelegate var player: AVPlayer! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func viewDidAppear(_ animated: Bool) { let videoURL = URL(string: "https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_example_ts/master.m3u8") let asset = AVURLAsset(url: videoURL! as URL, options: nil) asset.resourceLoader.setDelegate(self, queue: DispatchQueue.main) let item = AVPlayerItem(asset: asset) let player = AVPlayer(playerItem: item) let playerViewController = AVPlayerViewController() playerViewController.player = player self.present(playerViewController, animated: true) { playerViewController.player!.play() } } func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool { NSLog("This method is never called") return true } } 从未被称为

def logsuccess(request):
    if request.user.is_authenticated():
        id = request.user.id
        return render(request, "loginsuccess.html", {'uid': id})
    else:
        return render(request, "failed.html", {})

1 个答案:

答案 0 :(得分:0)

您需要将@"http"替换为@"anyname"

NSURLComponents *components = [[NSURLComponents alloc] initWithURL:url resolvingAgainstBaseURL:NO];
components.scheme = @"anyname";

和info.plist url add key-Value urltypes scheme:@"anyname"