Überblick
Video Cloud-Kunden haben über Video Cloud Studio Zugriff auf ihre Mediendaten und Metadaten. Brightcove Player-Kunden geben die URL für ihre Medieninhalte an.
Video Cloud-Kunden
Als Video Cloud-Kunde können Sie auf Ihre in Video Cloud Studio gespeicherten Mediendaten zugreifen. Weitere Informationen finden Sie im Native Player SDK für iOS-Codebeispiele.
Mediendaten abrufen
Sie können Ihre Video- und Wiedergabelistendaten aus Ihrer Video Cloud-Bibliothek abrufen, indem Sie die Wiedergabe-API verwenden. Einzelheiten zur API finden Sie im Übersicht über die Wiedergabe-API dokumentieren.
-
Verwenden Sie die
BCOVPlaybackService
class-Methoden zum Abrufen Ihrer Videos und Wiedergabelisten aus der Playback-API von Brightcove. Ihre Anfragen können das Video/die Playlist liefernID
oderReferenceID
. Dieser Dienst stellt die URL-Anforderungen und analysiert die zurückgegebenen Daten. -
Für diese Anfrage benötigen Sie einen Richtlinienschlüssel. Wenn Sie mit Richtlinienschlüsseln nicht vertraut sind, lesen Sie die Übersicht über die Richtlinien-API dokumentieren.
Hier ist ein Beispiel für das Abrufen eines Videos mit dem
BCOVPlaybackService
Klasse in Swift:import UIKit import BrightcovePlayerSDK let kViewControllerPlaybackServicePolicyKey = "your policy key" let kViewControllerAccountID = "your account id" let kViewControllerVideoID = "your video id" class ViewController: UIViewController, BCOVPlaybackControllerDelegate { let sharedSDKManager = BCOVPlayerSDKManager.shared() let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: kViewControllerPlaybackServicePolicyKey) let playbackController :BCOVPlaybackController @IBOutlet weak var videoContainerView: UIView! required init?(coder aDecoder: NSCoder) { playbackController = (sharedSDKManager?.createPlaybackController())! super.init(coder: aDecoder) playbackController.delegate = self playbackController.isAutoAdvance = true playbackController.isAutoPlay = true } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. // Set up our player view. Create with a standard VOD layout. guard let playerView = BCOVPUIPlayerView(playbackController: self.playbackController, options: nil, controlsView: BCOVPUIBasicControlView.withVODLayout()) else { return } // Install in the container view and match its size. self.videoContainerView.addSubview(playerView) playerView.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ playerView.topAnchor.constraint(equalTo: self.videoContainerView.topAnchor), playerView.rightAnchor.constraint(equalTo: self.videoContainerView.rightAnchor), playerView.leftAnchor.constraint(equalTo: self.videoContainerView.leftAnchor), playerView.bottomAnchor.constraint(equalTo: self.videoContainerView.bottomAnchor) ]) // Associate the playerView with the playback controller. playerView?.playbackController = playbackController requestContentFromPlaybackService() } func requestContentFromPlaybackService() { playbackService?.findVideo(withVideoID: kViewControllerVideoID, parameters: nil) { (video: BCOVVideo?, jsonResponse: [AnyHashable: Any]?, error: Error?) -> Void in if let v = video { self.playbackController.setVideos([v] as NSArray) } else { print("ViewController Debug - Error retrieving video: \(error?.localizedDescription ?? "unknown error")") } } } }
Vollständige Beispiele finden Sie unter:
-
Die BCOVVideo -Objekt stellt Video-Metadateninformationen wie unten gezeigt bereit:
func requestContentFromPlaybackService() { playbackService?.findVideo(withVideoID: kViewControllerVideoID, parameters: nil) { (video: BCOVVideo?, jsonResponse: [AnyHashable: Any]?, error: Error?) -> Void in if let v = video { print("video name: \(v.properties["name"] as AnyObject)") print("video id: \(v.properties["id"] as AnyObject)") print("video thumbnail: \(v.properties["thumbnail"] as AnyObject)") print("video metadata: \(v.properties)") self.playbackController.setVideos([v] as NSArray) } else { print("ViewController Debug - Error retrieving video: \(error?.localizedDescription ?? "unknown error")") } } }
Obenstehendes
print()
-Methoden geben die folgenden Medieninformationen zurück:Videoobjekt
Mit geogefilterten Videos arbeiten
Das Brightcove Player SDK für iOS unterstützt geogefilterte Videos.
Es gibt zwei Möglichkeiten, wie Sie Ihren Videos Geofilter hinzufügen können, um zu steuern, in welchen Ländern sie angezeigt werden können (oder nicht):
Wenn Sie in Ihrer iOS-App ein Video mit Brightcoves BCOVPlaybackService
Klasse (Wiedergabe-API) in einem Land, das für dieses Video geofiltert ist, sollten Sie diese Meldung sehen:
Error Domain=kBCOVPlaybackServiceErrorDomain Code=3 "(null)"
UserInfo={kBCOVPlaybackServiceErrorKeyAPIHTTPStatusCode=403,
kBCOVPlaybackServiceErrorKeyAPIErrors=
{type = immutable, count = 1, values = (
0 : {type = immutable dict, count = 4,
entries =>
1 : message = {contents = "Access to this resource is forbidden by access policy."}
2 : {contents = "client_geo"} = us
4 : {contents = "error_subcode"} = {contents = "CLIENT_GEO"}
6 : {contents = "error_code"} = {contents = "ACCESS_DENIED"}
}
)}}
Brightcove Player-Kunden
Als Brightcove Player-Kunde geben Sie die URL für Ihre Video-Assets an.
Hier ist ein Beispiel für das Hinzufügen eines Arrays von Videos zum Wiedergabe-Controller und das Starten der Wiedergabe:
import UIKit
import BrightcovePlayerSDK
let kViewControllerAccountID = "your account id" // For Brightcove registration
class ViewController: UIViewController, BCOVPlaybackControllerDelegate {
let sharedSDKManager = BCOVPlayerSDKManager.shared()
let playbackController :BCOVPlaybackController
@IBOutlet weak var videoContainerView: UIView!
required init?(coder aDecoder: NSCoder) {
// Create the Brightcove playback controller
playbackController = (sharedSDKManager?.createPlaybackController())!
super.init(coder: aDecoder)
// Register your app with Brightcove
playbackController.analytics.account = kViewControllerAccountID
// Configure the player
playbackController.delegate = self
playbackController.isAutoAdvance = true
playbackController.isAutoPlay = true
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// Create an array of videos
var videoArray = [AnyObject]()
videoArray = [videoWithURL(url: NSURL(string: "https://solutions.brightcove.com/bcls/assets/videos/Great_Horned_Owl.mp4")!),
videoWithURL(url: NSURL(string: "https://solutions.brightcove.com/bcls/assets/videos/Great_Blue_Heron.mp4")!)]
// Set up the player view with a standard VOD layout.
guard let playerView = BCOVPUIPlayerView(playbackController: self.playbackController, options: nil, controlsView: BCOVPUIBasicControlView.withVODLayout()) else {
return
}
// Install in the container view and match its size.
self.videoContainerView.addSubview(playerView)
playerView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
playerView.topAnchor.constraint(equalTo: self.videoContainerView.topAnchor),
playerView.rightAnchor.constraint(equalTo: self.videoContainerView.rightAnchor),
playerView.leftAnchor.constraint(equalTo: self.videoContainerView.leftAnchor),
playerView.bottomAnchor.constraint(equalTo: self.videoContainerView.bottomAnchor)
])
// Associate the playerView with the playback controller.
playerView.playbackController = playbackController
// Load the video array into the player and start video playback
playbackController.setVideos(videoArray as NSArray)
playbackController.play();
}
func videoWithURL(url: NSURL) -> BCOVVideo {
// Set the delivery method for BCOVSources that belong to a video
let source:BCOVSource = BCOVSource(url: url as URL, deliveryMethod: kBCOVSourceDeliveryHLS, properties: nil)
let video = BCOVVideo.init(source: source, cuePoints: BCOVCuePointCollection.init(array: []), properties: [NSObject:AnyObject]())
return video!
}
}
Vollständige Beispiele finden Sie unter:
Sie haben jetzt ein grundlegendes Verständnis des Brightcove Player SDK für iOS. Als Nächstes können Sie die Schritte zum Erstellen einer App ausführen, die das Player SDK verwendet