J'essaie de lire une vidéo à partir d'un serveur à l'aide de Swift.
J'ai importé MediaPlayer framework, voici mon code:
import UIKit
import MediaPlayer
class VideoViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var url:NSURL = NSURL(string: "http://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v")
var moviePlayer = MPMoviePlayerController(contentURL: url)
moviePlayer.view.frame = CGRect(x: 20, y: 100, width: 200, height: 150)
self.view.addSubview(moviePlayer.view)
moviePlayer.fullscreen = true
moviePlayer.controlStyle = MPMovieControlStyle.Embedded
}
}
Je ne reçois une boîte noire que lorsque je lance dans le simulateur, mais aucune vidéo n'est lue, peu importe où j'essaie de charger une vidéo.
MISE À JOUR
Voici le code actuel
var url:NSURL = NSURL(string: "http://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v")
var moviePlayer = MPMoviePlayerController(contentURL: url)
moviePlayer.view.frame = CGRect(x: 20, y: 100, width: 200, height: 150)
moviePlayer.movieSourceType = MPMovieSourceType.File
self.view.addSubview(moviePlayer.view)
moviePlayer.prepareToPlay()
moviePlayer.play()
Ce code joue de manière intéressante ~ 2 secondes de vidéo avant de redevenir noir!
MISE À JOUR 2019, Swift 4:
MPMovieControlStyle 'était obsolète dans iOS 9.0: utilisez AVPlayerViewController dans AVKit.
Donc, en suivant les conseils, changeons-le. La réponse originale de 2016 est ci-dessous.
import UIKit
import AVKit
import AVFoundation
class ViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let url = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")!
playVideo(url: url)
}
func playVideo(url: URL) {
let player = AVPlayer(url: url)
let vc = AVPlayerViewController()
vc.player = player
self.present(vc, animated: true) { vc.player?.play() }
}
}
Résolu:
import UIKit
import MediaPlayer
class VideoViewController: UIViewController {
var moviePlayer:MPMoviePlayerController!
override func viewDidLoad() {
super.viewDidLoad()
let url:NSURL = NSURL(string: "http://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v")
moviePlayer = MPMoviePlayerController(contentURL: url)
moviePlayer.view.frame = CGRect(x: 20, y: 100, width: 200, height: 150)
self.view.addSubview(moviePlayer.view)
moviePlayer.fullscreen = true
moviePlayer.controlStyle = MPMovieControlStyle.Embedded
}
}
import AVKit
import AVFoundation
class VideoController: UIViewController
override func viewDidLoad()
{
let videoURL = NSURL(string: "VideoUr")
let player = AVPlayer(url: videoURL! as URL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}
}
Importez les bibliothèques:
import AVKit
import AVFoundation
import MediaPlayer
import AudioToolbox
Définissez delegaete comme ceci
AVPlayerViewControllerDelegate
Wrtie joli code où vous voulez jouer comme une action de bouton:
let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
let player = AVPlayer(url: videoURL!)
let playervc = AVPlayerViewController()
playervc.delegate = self
playervc.player = player
self.present(playervc, animated: true) {
playervc.player!.play()
}
100% de travail et de test
J'avais juste les mêmes problèmes ..
MPMoviePlayerController arrête de jouer après 5 secondes - Swift
Le problème est que votre var moviePlayer est hors de portée. En le déclarant en dehors de viewDidLoad comme @ Victor-Sigler l'a fait ci-dessus, vous empêchez le problème d'écran noir de se produire.