Vidéo/lecture audio en continu ne s'arrête pas même si UIWebView est fermé iPad
Je vois ce problème uniquement sur l'iPad. Les choses de la même fonctionne comme prévu sur l'iPhone.
Je suis de l'ouverture de l'URL à partir de mon application dans une UIWebView. Si l'URL est normal de la page web, il fonctionne bien comme prévu. Mais si l'URL est qu'à distance d'un fichier vidéo/audio, la UIWebView ouvre le lecteur par défaut qui est encore bonne.
Maintenant, quand je rejette la UIWebView (en cliquant sur le bouton Terminé sur le lecteur), le streaming ne s'arrête pas et l'audio/vidéo continue à jouer en arrière-plan (je ne peux pas le voir, mais il ne continuent de jouer dans le fond, peut l'entendre). Le UIViewController dans lequel la webview a été créé est également dealloced (je l'ai mis dans un journal d'instruction dans le dealloc méthode), mais le streaming ne s'arrête pas.
Quelqu'un peut-il m'aider sur le pourquoi de ce qui pourrait se passer? Et comment puis-je arrêter le streaming audio/vidéo lorsque la UIWebView est fermé?
Grâce.
Vous devez vous connecter pour publier un commentaire.
J'ai le même problème comme indiqué, mais dans ce cas, la vidéo n'arrête pas de jouer est une vidéo de Youtube, fixées à l'aide de l'objet/embed méthode.
J'ai passé un long moment à essayer de comprendre comment obtenir la vidéo pour arrêter la lecture et la seule solution que j'ai trouvé a été de dire la UIWebView pour charger une page vierge avant de rejeter le point de vue:
Modifier(2015-05-12): Comme mentionné par @chibimai ci-dessous, cette réponse par alloc_iNit fonctionne sur les mêmes lignes mais depuis que ma réponse est de 5 ans, et son seul 4 -- liés réponse peut-être plus applicable. Je ne fais plus l'iPhone dev de travail donc je ne peut pas déterminer ce qui est mieux de toute façon.
J'ai également trouvé ce comportement tout simplement parce que la vue web n'avait pas été libéré.
Je sais que c'est assez vieux thread, mais pour le bien de nouveaux développeurs comme moi.
Mon scénario a: j'ai été en utilisant split contrôleur, avec la liste des médias sur le master et le joueur dans le détail de la section du contrôleur
J'ai connu le même problème et essayé toutes sortes de solution de contournement.
J'ai enfin compris que le problème était simple, je tenais la référence du détail contrôleur de mon maître, et n'était pas libérer le plus tôt détail contrôleur. Un simple communiqué à la maîtrise, au bon endroit, le problème est réglé.
Je suis en train de travailler sur le même problème. J'ai trouvé que si vous définissez quelque chose comme ceci dans votre balise de script:
Puis dans votre UIViewController, ajouter:
Il semble vouloir mettre en pause/arrêter la lecture vidéo pendant quelques secondes, mais ensuite vous entendre l'audio continuer à jouer!
Mise à jour!
Il s'agit d'un bug avec le lecteur multimédia. Vous devez définir le temps de lecture à -1 pour le rendre vraiment arrêter.
J'ai juste eu un problème avec un fichier mp4 ouverture automatiquement dans media player à partir d'une page web sans possibilité de le fermer - bouton "Terminé" a été vu dans la vidéo en mode plein écran et simplement fermé en plein écran, donc je n'avais aucun moyen de revenir à la page web, sans l'ajout d'un bouton "Retour" de la barre de navigation. (sur l'iPhone, la vidéo a été d'ouvrir dans une fenêtre distincte avec le bouton "ok" de la prise de retour à la WebView avec la source de la page)
La solution de contournement qui m'a aidé à ouvrir le fichier vidéo dans un autre media player.
attraper l'ouverture d'un fichier MP4
où
ouvre la vidéo avec l'URL dans un lecteur multimédia dans une vue du modèle
n'oubliez pas d'ajouter MediaPlayer.cadre du projet et à l'importation
pour que le projet soit construit
PS. un grand merci à Viktor Gubrienko pour la solution
En fait, je préfère utiliser le lien nul pour résoudre le problème.
comme ceci:
grâce à votre thread sur cette question, j'ai été capable de trouver une solution qui résout complètement le problème, et je l'ai testé sur mon IPad, et pas seulement le simulateur. Cela résout également le problème avec la lecture audio. Ce n'est pas la solution permanente mais efficace de contourner.
Aperçu de la démarche:
Fondamentalement, tout ce qui est nécessaire est d'envoyer un fichier audio à la webView. J'ai fait une copie de l'IMac sous-marin.fichier m4v, j'ai appelé ping.m4v et de l'ajouter à mon xcode projet dans le dossier de ressources.
Puis au point quand je veux la vidéo /audio pour arrêter, je ne les étapes suivantes:
Maintenant vous devez également gérer l'erreur "204". Erreur 204 semble être juste un avertissement disant que webView va gérer ce fichier audio. Pour gérer l'erreur, j'ai ajouté cette ligne unique (voir >>>) pour
didFailLoadWithError
Enfin je tourne
webView.hidden = FALSE
avant l'affichage de mon côté Audio/Vidéo. De cette façon, la petite barre de lecture du fichier son n'est pas affiché sur l'écran. Il y a juste un soft de ping sonores... tout fichier audio de le faire...J'espère que cela aide...
C'est ce que j'utilise. Il n'journal de cette erreur "de la Désactivation d'une session audio qui a cours d'exécution I/O. Toutes les I/O doit être arrêtée ou en pause avant la désactivation de l'audio de la session." mais ne fermez le fichier audio à partir de la lecture (décoloration) et se souvient de la position de lecture.
Que l'affichage web n'avait pas été libéré, la vidéo continue à jouer sur le web afficher en arrière-plan.
Si vous avez besoin de libérer de la vue web en utilisant simplement ci-dessous le code qui fonctionne très bien pour moi.
J'espère que cela aide...
dans mon cas, à l'aide de loadHTMLString et pas loadRequest avec @"about:blank", résoudre le problème sur macOS
J'ai eu le même problème dans la vue de la Table où la vue de la table de la cellule a une webview qui permet de charger un fichier audio . Une fois que vous jouer et revenir à l'autre de l'écran de l'audio joue encore .
Solution : recharger la vue de la table dans viewWillDisappear(_:) de la table de la vue et le contrôleur audio, la lecture s'arrête une fois que vous accédez à un autre écran .