Użycie AVPlayera zwraca błąd „połączenie inne niż wielościeżkowe”

14

Używam AVKit do odtwarzania adresu URL YouTube.

Mam ten kod w akcji przycisku:

 @IBAction func trailerButtonAction(_ sender: Any) {
    guard let youtubeUrl = youtubeURL else { return }
    let player = AVPlayer(url: youtubeUrl)
    let playerViewController = AVPlayerViewController()
    playerViewController.player = player

    present(playerViewController, animated: true) {
        player.play()
    }
}

Adres URL jest prawidłowy, ale po naciśnięciu przycisku film nie przestaje się ładować i pojawia się ten komunikat w obszarze debugowania:

nw_endpoint_flow_copy_multipath_subflow_counts Wywoływane przy połączeniu innym niż wiele ścieżek

Edytować:

Odkryłem, że AVPlayer nie obsługuje adresu URL youtube

Alex Giatrakis
źródło
Mam ten sam problem. Film nie jest odtwarzany i otrzymuję go jako wynik. Czy byłeś w stanie to naprawić?
Matias Barrios
Wydaje mi się, że to problem: developer.apple.com/documentation/foundation/...
Matias Barrios
okej, rozumiem To problem z siecią. spróbuj tego filmu: clips.vorwaerts-gmbh.de/big_buck_bunny.mp4
Matias Barrios
Teraz Ι nie dostał poprzedniego błędu. Rozumiem: NSURLConnection zakończyło się błędem - kod -1002
Alex Giatrakis 18.10.19
To na pewno twoje połączenie. Czy możesz spróbować z innego połączenia
Matias Barrios

Odpowiedzi:

5

Powiedziałbym, że ten dziennik niekoniecznie jest istotny. Wystąpił ten błąd podczas próby odtwarzania na symulatorze, ale nie działo się to na prawdziwym urządzeniu.

CMash
źródło
1
Potwierdzony. To rozwiązało dla mnie sprawę.
krlbsk
2

Jednym z obejść byłoby użycie symulatora 12.4.x, ponieważ nie wykazuje on tego problemu. Tylko symulatory 13.x pokazują ten błąd. Często zdarza się, że spowalnia Symulator do pełzania, aż wszystkie żądane ścieżki zostaną buforowane.

Aby temu zaradzić podczas testów, albo się nie włączam, AVPlayeralbo buforuję tylko krótki utwór.

Aby zmniejszyć liczbę błędów, spróbuj zainicjować swój AVPlayerpodobny sposób:

var avPlayer : AVPlayer = AVPlayer()

Może to zmniejszyć błędy o 30%.

StarPlayrX
źródło