Brightcove bietet aktive Unterstützung für das neueste iOS SDK in der neuesten öffentlichen Version der folgenden iOS-Versionen:
Brightcove bietet passive Unterstützung für die folgenden iOS-Versionen:
Das Core SDK ist für Arabisch (ar), Englisch (en), Französisch (fr), Deutsch (de), Japanisch (ja), Koreanisch (ko), Spanisch (es), vereinfachtes Chinesisch (zh-Hans) und traditionell lokalisiert Chinesisch (zh-Hant). Um die Vorteile einer Lokalisierung nutzen zu können, muss Ihre App auch für dieselbe Sprache und dasselbe Gebietsschema lokalisiert werden. Weitere Informationen finden Sie im Abschnitt „Benutzerdefinierte Lokalisierung“.
Alle SDK-Komponenten – die Kern- und Plugin-Frameworks – werden mit derselben Versionsnummer veröffentlicht. Wenn Sie eine einzelne Komponente aktualisieren, aktualisieren Sie alle Komponenten auf dieselbe Version.
Bei Projekten, die Xcode 12 auf Apple Silicon M1 und Universal Frameworks (.framework) verwenden, wird beim Erstellen des Projekts für den arm64-Simulator ein Build-Fehler zurückgegeben.
*ld: building for iOS Simulator, but linking in dylib built for iOS, file for architecture arm64*
Um für einen arm64-Simulator zu erstellen, stellen Sie sicher, dass arm64
zu Ihrer Build-Einstellung „Ausgeschlossene Architekturen“ für Any iOS Simulator SDK
auf der Registerkarte „Build-Einstellungen“ Ihres Anwendungsziels hinzugefügt wurde.
Version 6.10.0 des Brightcove Player SDK fügt Unterspezifikationen für den Kern und jedes Plugin zur Unterstützung von XCFrameworks hinzu. Der Standardwert für jede Unterspezifikation ist /XCFramework
.
Podspec-Name | Subspec-Namen |
---|---|
Brightcove-Player-Core | Brightcove-Player-Core/Framework Brightcove-Player-Core/XCFramework |
Brightcove-Player-DAI | Brightcove-Player-DAI/Framework Brightcove-Player-DAI/XCFramework |
Brightcove-Player-FreeWheel | Brightcove-Player-FreeWheel/Framework Brightcove-Player-FreeWheel/XCFramework |
Brightcove-Player-GoogleCast | Brightcove-Player-GoogleCast/Framework Brightcove-Player-GoogleCast/XCFramework |
Brightcove-Player-IMA | Brightcove-Player-IMA/Framework Brightcove-Player-IMA/XCFramework |
Brightcove-Player-Omniture | Brightcove-Player-Omniture/Framework Brightcove-Player-Omniture/XCFramework |
Brightcove-Player-Pulse | Brightcove-Player-Pulse/Framework Brightcove-Player-Pulse/XCFramework |
Brightcove-Player-SSAI | Brightcove-Player-SSAI/Framework Brightcove-Player-SSAI/XCFramework |
Brightcove-Player-OpenMeasurement | - |
Version 6.12.0 des Brightcove Player SDK aktualisiert die Podspezifikationen Brightcove-Player-FreeWheel
und Brightcove-Player-Omniture
um die dynamische Version von BrightcovePlayerSDK
zu installieren.
Podspec-Name | Framework-Typ | Abhängigkeit |
---|---|---|
Brightcove-Player-Core | dynamisch | - |
Brightcove-Player-DAI (verfügbar seit 6.12.7) | dynamisch | Brightcove-Player-Core |
Brightcove-Player-FreeWheel | dynamisch | Brightcove-Player-Core für iOS, Brightcove-Player-Core für tvOS |
Brightcove-Player-GoogleCast | statisch | Brightcove-Player-Core |
Brightcove-Player-IMA | dynamisch | Brightcove-Player-Core |
Brightcove-Player-Omniture | dynamisch | Brightcove-Player-Core |
Brightcove-Player-Pulse | dynamisch | Brightcove-Player-Core |
Brightcove-Player-SSAI | dynamisch | Brightcove-Player-Core, Brightcove-Player-OpenMeasurement (nur für Open Measurement) |
Brightcove-Player-OpenMeasurement (verfügbar seit 6.10.0) | dynamisch | - |
Die Unterstützung für FairPlay-geschützte Videos ist in das Kernframework BrightcovePlayerSDK integriert. Ausführliche Informationen zur Verwendung von FairPlay mit dem Brightcove Native Player SDK finden Sie im FairPlay-Handbuch.
Die Unterstützung für Sidecar-Untertitel ist in das Kernframework BrightcovePlayerSDK integriert. Ausführliche Informationen zur Verwendung von Sidecar-Untertiteln mit dem Brightcove Native Player SDK finden Sie im Leitfaden zu Sidecar-Untertiteln.
Seit Version 6.0.0 ermöglicht Ihnen das Brightcove Native Player SDK das Herunterladen von HLS-Videos, einschließlich der mit FairPlay-Verschlüsselung geschützten, für die spätere Wiedergabe, egal ob online oder offline. Ausführliche Informationen finden Sie im App-Entwicklerhandbuch:
iOS-App-Entwicklerhandbuch zum Herunterladen und Offline-Wiedergeben von Videos mit FairPlay
Das Brightcove Player SDK stellt Installationspakete für iOS und tvOS als dynamische Bibliotheken bereit, die als Frameworks und XCFrameworks gepackt sind. Die Bereitstellung wird auf iOS 12.0 und höher unterstützt.
Sie können CocoaPods verwenden, um das Brightcove Player SDK zu Ihrem Projekt hinzuzufügen. Die neuesten Brightcove-Player-Core
Podspecs finden Sie hier. Die Podspec unterstützt sowohl iOS als auch tvOS.
Wenn Sie Brightcove CocoaPods in Ihrem Projekt verwenden, fügen Sie source 'https://github.com/brightcove/BrightcoveSpecs.git'
am Anfang Ihrer Poddatei hinzu.
Name.
source ' https://github.com/CocoaPods/Specs '
source ' https://github.com/brightcove/BrightcoveSpecs.git '
platform :ios, ' 12.0 '
use_frameworks !
target ' MyVideoPlayer ' do
pod ' Brightcove-Player-Core '
end
Das Framework kann durch Anhängen der /Framework
Unterspezifikation an den Pod installiert werden.
source ' https://github.com/CocoaPods/Specs '
source ' https://github.com/brightcove/BrightcoveSpecs.git '
platform :ios, ' 12.0 '
use_frameworks !
target ' MyVideoPlayer ' do
pod ' Brightcove-Player-Core/Framework '
end
Wenn Sie Ihre Installation aktualisieren, empfiehlt es sich, die lokale Kopie Ihres BrightcoveSpecs-Repositorys zu aktualisieren, damit Sie lokal über die neuesten Podspecs verfügen, genau wie Sie Ihr CococaPods-Master-Repository aktualisieren würden. Wenn Sie pod update
im Terminal ausführen, geschieht dies normalerweise automatisch. Alternativ können Sie explizit mit pod repo update
aktualisieren.
So fügen Sie das Brightcove Player SDK manuell zu Ihrem Projekt hinzu:
BrightcovePlayerSDK.framework
oder BrightcovePlayerSDK.xcframework
zu Ihrem Projekt hinzu. Stellen Sie sicher, dass Sie die Version verwenden, die Ihrem Ziel entspricht, iOS oder tvOS.BrightcovePlayerSDK.framework
/ BrightcovePlayerSDK.xcframework
bash ${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/BrightcovePlayerSDK.framework/strip-frameworks.sh
. Aktivieren Sie „Skript nur bei der Installation ausführen“. Dadurch werden nicht benötigte Architekturen aus dem Build entfernt, was für die Einreichung im App Store wichtig ist. Dieser Schritt ist bei Verwendung von XCFramework nicht mehr notwendig.bash ${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/BrightcovePlayerSDK.framework/strip-frameworks.sh
. Aktivieren Sie „Skript nur bei der Installation ausführen“. Dadurch werden nicht benötigte Architekturen aus dem Build entfernt, was für die Einreichung im App Store wichtig ist.arm64
zu Ihrer Build-Einstellung „Ausgeschlossene Architekturen“ für Any iOS Simulator SDK
hinzugefügt wurde.Als Referenz finden Sie hier alle SDK-Komponenten und entsprechenden URLs, die Ihnen beim Auffinden und Herunterladen der neuesten Versionen helfen:
Komponente | URL |
---|---|
Brightcove-Player-Core | https://github.com/brightcove/brightcove-player-sdk-ios/tags |
Brightcove-Player-DAI | https://github.com/brightcove/brightcove-player-sdk-ios-dai/tags |
Brightcove-Player-FreeWheel | https://github.com/brightcove/brightcove-player-sdk-ios-fw/tags |
Brightcove-Player-GoogleCast | https://github.com/brightcove/brightcove-player-sdk-ios-googlecast/tags |
Brightcove-Player-IMA | https://github.com/brightcove/brightcove-player-sdk-ios-ima/tags |
Brightcove-Player-Omniture | https://github.com/brightcove/brightcove-player-sdk-ios-omniture/tags |
Brightcove-Player-Pulse | https://github.com/brightcove/brightcove-player-sdk-ios-pulse/tags |
Brightcove-Player-SSAI | https://github.com/brightcove/brightcove-player-sdk-ios-ssai/tags |
So fügen Sie das Brightcove Player SDK mit Swift Package Manager zu Ihrem Projekt hinzu:
https://github.com/brightcove/brightcove-player-sdk-ios.git
einHinweis: Für Swift Package Manager wird nur das dynamische XCFramework unterstützt.
Das Brightcove Player SDK für iOS kann importiert werden mit:
import BrightcovePlayerSDK;
Video mit dem Brightcove Player SDK für iOS abspielen:
// ** Customize these values with your own account information **
let kAccountId = " ... "
let kPolicyKey = " ... "
let kVideoId = " ... "
let sdkManager = BCOVPlayerSDKManager . sharedManager ( )
let playbackController = sdkManager . createPlaybackController ( )
self . playbackController = playbackController // store this to a strong property
view . addSubview ( playbackController . view )
let playbackService = BCOVPlaybackService ( withAccountId : kAccountId ,
policyKey : kPolicyKey )
let configuration = [
BCOVPlaybackService . ConfigurationKeyAssetID : kVideoId
]
playbackService . findVideo ( withConfiguration : configuration ,
queryParameters : nil ) { ( video : BCOVVideo ? ,
jsonResponse : Any ? ,
error : Error ? ) in
if let video {
self . playbackController ? . setVideos ( [ video ] )
self . playbackController ? . play ( )
}
}
Sie müssen verhindern, dass der Controller am Ende der Methode automatisch freigegeben wird. Eine übliche Methode hierfür ist das Speichern eines Verweises auf den Controller in einer starken Instanzvariablen.
Seit Version 5.1.0 ist die Brightcove PlayerUI vollständig in das Core SDK-Framework integriert. PlayerUI bietet direkt nach dem Auspacken einen umfassenden Satz an Steuerelementen für Wiedergabe und Werbung.
Die PlayerUI lässt sich schnell einrichten, zeigt Werbesteuerelemente für SSAI, Pulse und FreeWheel an und kann durch die Erstellung eigener Layouts angepasst werden.
Befolgen Sie die nachstehenden Richtlinien zum Einrichten der PlayerUI-Steuerelemente.
Erstellen Sie eine Eigenschaft in Ihrem UIViewController, um den BCOVPUIPlayerView zu verfolgen. Die BCOVPUIPlayerView enthält sowohl die Ansicht des Playback-Controllers als auch die Ansicht der Steuerelemente.
// PlayerUI's Player View
var playerView : BCOVPUIPlayerView ?
Erstellen Sie die BCOVPUIBasicControlView und dann die BCOVPUIPlayerView. Hier verknüpfen wir den Playback Controller (und damit alle von ihm abgespielten Videos) mit den Steuerelementen.
// Create and configure Control View.
let controlView = BCOVPUIBasicControlView . withVODLayout ( )
playerView = BCOVPUIPlayerView ( playbackController : self . playbackController , options : nil )
// Add BCOVPUIPlayerView to your video view.
if let playerView {
videoView . addSubview ( playerView )
}
Sie müssen das Layout für die Player-Ansicht einrichten. Dies können Sie mit dem automatischen Layout oder dem älteren Springs & Struts-Ansatz tun.
Stellen Sie die Player-Ansicht so ein, dass sie bei der Größenänderung dem Videocontainer aus Ihrem Layout ( videoView
) entspricht.
playerView . frame = videoView . bounds
playerView . autoresizingMask = [ . flexibleHeight , . flexibleWidth ]
Setzen Sie translatesAutoresizingMaskIntoConstraints
für BCOVPUIPlayerView auf false
.
playerView . translatesAutoresizingMaskIntoConstraints = false
Fügen Sie dann die Einschränkungen für das Layout hinzu; Stellen Sie den oberen, rechten, linken und unteren Anker Ihres BCOVPUIPlayerView so ein, dass er dem von videoView
entspricht
NSLayoutConstraint . activate ( [
playerView . topAnchor . constraint ( equalTo : videoView . topAnchor ) ,
playerView . rightAnchor . constraint ( equalTo : videoView . rightAnchor ) ,
playerView . bottomAnchor . constraint ( equalTo : videoView . bottomAnchor ) ,
playerView . leftAnchor . constraint ( equalTo : videoView . leftAnchor )
] )
Mit der BCOVPUIPlayerViewOptions
-Klasse können Sie einige Verhaltensweisen von BCOVPlayerUI bei der Initialisierung anpassen. Sie können Folgendes anpassen:
jumpBackInterval
Die Zeit in Sekunden, die der Spieler zurück sucht, wenn die Schaltfläche „Zurück springen“ gedrückt wird.
hideControlsInterval
Die Zeit in Sekunden nach dem letzten Berührungsereignis, bevor die Steuerelemente ausgeblendet werden.
hideControlsAnimationDuration
Die Zeit in Sekunden, die benötigt wird, bis die Steuerelemente ausgeblendet werden.
showControlsAnimationDuration
Die Zeit in Sekunden, die benötigt wird, bis die Steuerelemente animiert und sichtbar sind.
learnMoreButtonBrowserStyle
Einstellung, die bestimmt, ob durch Tippen auf die Schaltfläche „Mehr erfahren“ in einer Anzeige der Clickthrough-Link in einem externen Browser (Standardeinstellung) oder einem internen Browser angezeigt wird.
presentingViewController
Die UIViewController-Unterklasse, die zum Präsentieren anderer Ansichts-Controller (z. B. des Ansichts-Controllers für die Untertitelauswahl) verwendet wird.
automaticControlTypeSelection
Gibt an, ob BCOVPUIPlayerView
automatisch einen BCOVPUIBasicControlView
-Typ basierend auf dem Medientyp auswählen soll oder nicht. Wenn dieser Wert auf true
gesetzt ist, wird die an den BCOVPUIPlayerView
-Initialisierer übergebene BCOVPUIBasicControlView
-Eigenschaft ignoriert.
Video- und Audiostreams
basicControlViewWithVODLayout
basicControlViewWithLiveLayout
basicControlViewWithLiveDVRLayout
Nur-Audio-Streams
basicControlViewWithAODLayout
basicControlViewWithLiveAudioLayout
basicControlViewWithLiveDVRAudioLayout
HINWEIS: automaticControlTypeSelection
wählt Layouts aus den von BCOVPlayerUI bereitgestellten aus, sodass benutzerdefinierte Steuerelemente und Layouts überschrieben werden. automaticControlTypeSelection
und die Anpassung der Player-Benutzeroberfläche sind nicht kompatibel.
Optionen können mit der folgenden Methode festgelegt werden:
let manager = BCOVPlayerSDKManager . sharedManager ( )
let playbackController = manager . createPlaybackController ( )
let options = BCOVPUIPlayerViewOptions ( )
options . jumpBackInterval = 5
let playerView = BCOVPUIPlayerView ( playbackController : playbackController ,
options : options )
Zur Unterstützung verschiedener Videotypen stehen drei Layouts zur Verfügung:
BCOVPUIControlLayout basicVODControlLayout
ist ein grundlegendes Layout für allgemeine On-Demand-Videostreams.
BCOVPUIControlLayout basicLiveControlLayout
ist ein Layout für Live-Videos.
BCOVPUIControlLayout basicLiveDVRControlLayout
ist ein Layout für Live-Videostreams mit DVR-Steuerelementen.
Normalerweise legen Sie sofort nach der Erstellung Ihrer BCOVPUIPlayerView
ein neues Layout fest, Sie können aber auch jederzeit ein neues Layout festlegen. Sie können beispielsweise ein neues VOD-Layout wie folgt festlegen:
playerView ? . controlsView . layout = BCOVPUIControlLayout . basicVOD ( )
Zusätzlich zu den Standardlayouts können Sie Ihre eigenen, stark angepassten Layouts erstellen, indem Sie ein neues BCOVPUIControlLayout
mit Ihrem eigenen Design instanziieren. Beachten Sie jedoch, dass automaticControlTypeSelection
Layouts aus den von BCOVPlayerUI bereitgestellten auswählt und daher benutzerdefinierte Steuerelemente und Layouts überschrieben werden. automaticControlTypeSelection
und die Anpassung der Player-Benutzeroberfläche sind nicht kompatibel.
Erstellen Sie zunächst mit BCOVPUIBasicControlView layoutViewWithControlFromTag:width:elasticity:
die Steuerelemente, die in Ihr Layout eingefügt werden sollen. Jedes Steuerelement ist in einer BCOVPUILayoutView
verpackt, die den Steuerelementabstand bestimmt.
Sie können die width
jeder Layoutansicht auf die Standardbreite festlegen (die auf der Art des Steuerelements basiert) oder Ihre eigene Breite angeben.
Verwenden Sie das elasticity
, um zu bestimmen, um wie viel die Breite der Layoutansicht, die das Steuerelement enthält, angepasst wird, um die Steuerleiste auszufüllen.
Hier finden Sie Beispiele für die Erstellung verschiedener grundlegender Steuerelemente.
// Create various standard layout views
// Standard play/pause button
let playbackLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . buttonPlayback ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
// Standard jump back button
let jumpBackButtonLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . buttonJumpBack ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
// Current time indicator
let currentTimeLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . labelCurrentTime ,
width : kBCOVPUILayoutUseDefaultValue
elasticity : 0.0 )
// Time separator - typically the '/' character
let timeSeparatorLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . labelTimeSeparator ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
// Video duration label
let durationLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . labelDuration ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
// Slider bar used for seeking through the video
// The elasticity is set to 1 so that it can resize to fill available space
let progressLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . sliderProgress ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 1.0 )
// Closed caption button
// This button is initially hidden ('removed'), and will be shown
// if closed captions or audio tracks are available.
let closedCaptionLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . buttonClosedCaption ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
closedCaptionLayoutView ? . isRemoved = true
// The full-screen button
let screenModeLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . buttonScreenMode ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
// AirPlay button
// This button is initially hidden ('removed'), and will be shown
// if AirPlay devices are available.
let externalRouteLayoutView = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . viewExternalRoute ,
width : kBCOVPUILayoutUseDefaultValue ,
elasticity : 0.0 )
externalRouteLayoutView ? . isRemoved = true
// Empty view - used as a spacer
let spacerLayoutView1 = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . viewEmpty ,
width : 1.0 ,
elasticity : 1.0 )
// Empty view - used as a spacer
let spacerLayoutView2 = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . viewEmpty ,
width : 1.0 ,
elasticity : 1.0 )
// Empty view - will have a custom UIImageView added as a subview
let logoLayoutView1 = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . viewEmpty ,
width : 88.0 ,
elasticity : 1.0 )
// Empty view - will have a custom UIImageView added as a subview
let logoLayoutView2 = BCOVPUIBasicControlView . layoutViewWithControl ( from : BCOVPUIViewTag . viewEmpty ,
width : 36.0 ,
elasticity : 1.0 )
Beachten Sie, dass Sie auch eine leere Layoutansicht erstellen können, in der Sie Ihre eigene Ansicht (Logo, Steuerelement, nichts usw.) platzieren können. Dieser Code zeigt, wie man ein UIImage
Logo in dem oben erstellten logoLayoutView1 platziert.
// Create logo image inside an image view for display in control bar.
let logoImage1 = UIImage ( named : " myLogo " )
let logoImageView1 = UIImageView ( image : logoImage1 )
logoImageView1 . autoresizingMask = [ . flexibleWidth , . flexibleHeight ]
logoImageView1 . contentMode = . scaleAspectFit
logoImageView1 . frame = logoLayoutView1 . frame
// Add image view to our empty layout view.
logoLayoutView1 . addSubview ( logoImageView1 )
Da nun verschiedene Steuerelemente in Layoutansichten gepackt sind, sind sie in Arrays angeordnet, von denen jedes eine einzelne Zeile von Steuerelementen darstellt, also eine Steuerleiste. Beachten Sie, dass Sie unterschiedliche Layouts für die Ausrichtung im Hoch- und Querformat haben können, sodass Sie normalerweise zwei verschiedene Anordnungen von Steuerleisten einrichten.
Im Standardlayout für die Querformatausrichtung werden Steuerelemente in einem einzelnen Array angeordnet, und dieses Array wird dann in einem anderen Array gespeichert, das den gesamten Steuerelementsatz darstellt.
let standardLayoutLine1 = [
playbackLayoutView ,
jumpBackButtonLayoutView ,
currentTimeLayoutView ,
timeSeparatorLayoutView ,
durationLayoutView ,
progressLayoutView ,
spacerLayoutView1 ,
logoLayoutView1 ,
spacerLayoutView2 ,
closedCaptionLayoutView ,
screenModeLayoutView ,
externalRouteLayoutView
]
let standardLayoutLines = [ standardLayoutLine1 ]
Im kompakten Layout für die Hochformatausrichtung werden zwei Arrays von Steuerelementen erstellt, eines für jede Zeile. Diese Arrays werden in ein anderes Array gepackt, das das kompakte Layout darstellt.
Beachten Sie, dass für die meisten Steuerelemente in jedem Layout genau dieselben Objekte verwendet werden. Wenn dies erledigt ist und Sie zwischen Hoch- und Querformat wechseln, wird das Objekt mithilfe einer sanften Animation an seine neue Position verschoben.
let compactLayoutLine1 = [
currentTimeLayoutView ,
progressLayoutView ,
durationLayoutView
]
let compactLayoutLine2 = [
playbackLayoutView ,
jumpBackButtonLayoutView ,
spacerLayoutView1 ,
closedCaptionLayoutView ,
screenModeLayoutView ,
externalRouteLayoutView ,
logoLayoutView2
]
let compactLayoutLines = [
compactLayoutLine1 ,
compactLayoutLine2
]
Da es nun zwei Layoutkonfigurationen gibt (eine für volle Breite und eine für kompakte Breite), können Sie schließlich ein neues BCOVPUIControlLayout
Objekt erstellen und es in der Steuerungsansicht des Players festlegen.
let customLayout = BCOVPUIControlLayout . init ( standardControls : standardLayoutLines ,
compactControls : compactLayoutLines )
playerView ? . controlsView . layout = customLayout
Wenn Sie Steuerelemente haben, die Sie häufig ein- oder ausblenden müssen, können Sie die removed
Eigenschaft in der Layoutansicht dieses Steuerelements festlegen. Wenn Sie Ihre Steuerelemente geändert haben, rufen Sie setNeedsLayout
in der controlView von playerView auf:
logoLayoutView1 ? . isRemoved = true
playerView ? . controlsView . setNeedsLayout ( )
Sie können auch mehrere allgemeine BCOVPUIControlLayout
Eigenschaften anpassen:
controlBarHeight
legt die Größe jeder Reihe von Steuerelementen fest.horizontalItemSpacing
legt den Abstand zwischen den einzelnen BCOVPUILayoutView
in jeder Steuerleiste fest.compactLayoutMaximumWidth
bestimmt, welcher Satz von Steuerelementen verwendet wird. Wenn die Steuerelementansicht kleiner als compactLayoutMaximumWidth
ist, wird der kompakte Steuerelementsatz verwendet, andernfalls werden die Standardsteuerelemente verwendet. Um den Satz angezeigter Steuerelemente zu ändern, müssen Sie ein neues BCOVPUIControlLayout
erstellen und installieren. Neue Steuerungen können jederzeit installiert werden.
Weitere Beispiele für die PlayerUI-Anpassung finden Sie im Beispielcode im PlayerUI-Ordner des BrightcoveOS-GitHub-Repositorys:
https://github.com/BrightcoveOS/ios-player-samples
Das Brightcove Native Player SDK enthält integrierte Steuerelemente für die Wiedergabe in tvOS auf Apple TV. Ausführliche Informationen zur Verwendung der integrierten TV-Player-Benutzeroberfläche mit dem Brightcove Native Player SDK finden Sie in unserem TV-Player-Handbuch.
Aktivieren Sie die AirPlay-Funktionalität, indem Sie die Eigenschaft setAllowsExternalPlayback
auf Ihrem BCOVPlaybackController
auf true
setzen. Die AirPlay-Schaltfläche wird in den Wiedergabesteuerungen angezeigt, wenn AirPlay-Geräte in Ihrem Netzwerk gefunden werden.
Derzeit ist IMA das einzige Werbe-Plugin, das AirPlay unterstützt, und zwar nur bei Verwendung von Pre-Roll- und/oder Post-Roll-Anzeigen. Die Verwendung von AirPlay mit den Werbe-Plugins Pulse, SSAI oder FreeWheel kann zu unerwartetem Verhalten führen.
Wenn Sie auch AirPlay 2 unterstützen und die Auswahl mehrerer Geräte für die Audioausgabe ermöglichen möchten, müssen Sie einige zusätzliche Dinge tun. Zuerst müssen Sie AVAudioSession konfigurieren, damit Sie die routeSharingPolicy
festlegen können. Zum Beispiel:
do {
try AVAudioSession . sharedInstance ( ) . setCategory ( . playback , mode : . moviePlayback , policy : . longFormVideo )
} catch {
print ( " Error setting AVAudioSession category " )
}
Sie müssen außerdem mindestens einen Wiedergabebefehl über MPRemoteCommandCenter
konfigurieren. Zumindest sollten Sie sowohl pauseCommand
als auch playCommand
konfigurieren. Zum Beispiel:
let center = MPRemoteCommandCenter . shared ( )
center . pauseCommand . addTarget { _ in
playbackController . pause ( )