web-dev-qa-db-fra.com

Impossible de lire un fichier mp3 via HTTP via AVPlayer

J'essaie de lire un fichier MP3 via AVPlayer:

let url = URL(string: "http://transom.org/wp-content/uploads/2004/03/stereo_40kbps.mp3?_=7")!
let asset = AVURLAsset(url: url)
let item = AVPlayerItem(asset: asset)
let player = AVPlayer(playerItem: item)
player.play()

Mais j'obtiens le prochain journal:

2017-09-26 21:57:07.906598+0300 MyApp[7558:1177816] CredStore - performQuery - Error copying matching creds.  Error=-25300, query={
    class = inet;
    "m_Limit" = "m_LimitAll";
    "r_Attributes" = 1;
    sync = syna;
}

Je suppose que cela est dû à iOS 11 et Xcode 9, mais je ne sais pas comment résoudre ce problème.

9
Alexander Perechnev

Le problème semble être lié à la sécurité d'App Transport. Après l'avoir activée, cela a bien fonctionné avec les jeux de code suivants dans iOS 11,
L'URL ci-dessus que vous avez fournie semble également avoir un lien https associé. Veuillez utiliser le lien https ou autoriser la sécurité d'App Transport.

let avPlayerVC = AVPlayerViewController()
        let url = URL(string: "https://transom.org/wp-content/uploads/2004/03/stereo_40kbps.mp3?_=7")!
        let asset = AVURLAsset(url: url)
        let item = AVPlayerItem(asset: asset)
        let player = AVPlayer(playerItem: item)
        avPlayerVC.player = player

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

Mais ici, j'ai utilisé AVPlayerViewController et la même instance d’AVPlayer que celle que vous avez utilisée dans votre code.
Je ne sais pas comment vous utilisez AVPlayer dans votre cas, mais le cas ci-dessus a bien fonctionné.

1
Bharath

même erreur.
J'ai résolu le problème avec le travail côté serveur.
supprime l’en-tête HSTS "Strict-Transport-Security: max-age = 31536000" de la réponse http, disparaît de l’erreur et fonctionne correctement. Je ne connais pas la cause ..
requête: https: //abc.../aaaa.mp3

1
modeverv

J'ai rencontré le même problème, nous avons essayé de définir tous les en-têtes côté serveur sur inactive/active  

Enfin, unset range a été défini sur inactive, puis cela a fonctionné.

0
sreekanth reddy