NSUrlDomainError code -1002 "неподдерживаемый URL" - PullRequest
1 голос
/ 03 марта 2020

Я пытаюсь использовать эту библиотеку для включения кэширования моих видео. И я получаю эту ошибку:

Ошибка домена = NSURLErrorDomain Code = -1002 «неподдерживаемый URL» UserInfo = {NSLocalizedDescription = неподдерживаемый URL, NSErrorFailingURLStringKey = 4185c72 c -252e-4019-8c1 c -e30b4ccbe597 /, NSErrorFailingURLKey = 4185c72 c -252e-4019-8c1 c -e30b4ccbe597 /, _NSURLErrorRelatedURLSessionTaskErrorKey = ("LocalDataTask <850693155 * 86 * 86-F6 * 86B-86B-100 * 86-F6506-F-810-F-850-F-100 * 86B-86B-100-RU-100 * 86B-100) -650616650B650616550B650 1008 * Код, который вызывает эту проблему: </p>

  VIResourceLoaderManager *resourceLoaderManager = [VIResourceLoaderManager new];
  self.resourceLoaderManager = resourceLoaderManager;
  AVPlayerItem *playerItem = [resourceLoaderManager playerItemWithURL:url];
  return [self initWithPlayerItem:playerItem frameUpdater:frameUpdater];
}

Однако, если я удаляю строки, добавленные для этой библиотеки, чтобы работать, то она работает отлично (без кэширования), как это:

AVPlayerItem* item = [AVPlayerItem playerItemWithURL:url];
return [self initWithPlayerItem:item frameUpdater:frameUpdater];

URL-адрес, о котором идет речь, https://firebasestorage.googleapis.com/v0/b/app_domain/o/ed8f47cc-e9ee-43d0-848e-06edaaeaab70.mp4?alt=media&token=4185c72c-252e-4019-8c1c-e30b4ccbe597

Я немного изменил URL-адрес для обеспечения безопасности, но он воспроизводится в браузере и, как я уже сказал, работает без кеширующего кода.

Ответы [ 3 ]

0 голосов
/ 04 марта 2020

URL, который вы запрашиваете, возвращение 404 Не найдено!

0 голосов
/ 05 марта 2020

Я импортировал эту библиотеку в плагин Flutter, о котором вы упоминали, и смог успешно загрузить видео с действительного URL-адреса Firebase. Я добавил некоторые записи через mediaDownloader: didReceiveData: в классе VIResourceLoadingRequestWorker и похоже, что кэширование происходит правильно.

Обновлен initWithURL: frameUpdater: метод, теперь он выглядит так:

- (instancetype)initWithURL:(NSURL*)url frameUpdater:(FLTFrameUpdater*)frameUpdater
{
    VIResourceLoaderManager* resourceLoaderManager = [[VIResourceLoaderManager alloc] init];

// Uncomment this to test with an empty cache, so the manager will re-cache
//    [resourceLoaderManager cleanCache];

    AVPlayerItem* item = [resourceLoaderManager playerItemWithURL:url];

    self = [self initWithPlayerItem:item frameUpdater:frameUpdater];

    if (self)
    {
        self.resourceLoaderManager = resourceLoaderManager;
        self.resourceLoaderManager.delegate = self;
    }

    return self;
}
  • Посмотрите, может ли вышеперечисленные изменения работать на вас, но кажется, что это может быть что-то еще.
  • Попробуйте свой код с более простым тестовым URL-адресом откуда-нибудь и посмотрите, действительно ли это что-то делать с реальным URL (сомнительно, так как у меня был успех с другим видео URL Firebase, и вы сказали, что ваш определенно работает в браузере)
  • Добавьте тег для Flutter к вашему вопросу, чтобы кто-то, более знакомый с этой технологией, мог увидеть это и быть в состоянии помочь.
0 голосов
/ 03 марта 2020

В соответствии с описанием ошибки у вас есть дополнительный sla sh / в конце вашего URL:

NSErrorFailingURLStringKey=4185c72c-252e-4019-8c1c-e30b4ccbe597/

...