The SRG Media Player library for iOS provides a simple way to add a universal audio / video player to any application. It provides:
- A default player with the same look & feel as the standard iOS player, and automatic support for picture in picture for compatible devices.
- A set of overlays which can be combined to create the user interface you need.
- Support for segments. Those are simply sections of a video, defined by non-overlapping time ranges, which can be blocked or hidden.
- Support for on-demand, live and DVR streams.
- Support for 360° and cardboard playback.
- Ability to use several instances of the player at the same time.
The library is suitable for applications running on iOS 9 and above. The project is meant to be opened with the latest Xcode version (currently Xcode 10).
If you want to contribute to the project, have a look at our contributing guide.
The library can be added to a project using Carthage by adding the following dependency to your Cartfile:
github "SRGSSR/SRGMediaPlayer-iOS"
For more information about Carthage and its use, refer to the official documentation.
The library requires the following frameworks to be added to any target requiring it:
libextobjc: A utility framework.MAKVONotificationCenter: A safe KVO framework.SRGLogger: The framework used for internal logging.SRGMediaPlayer: The main library framework.
- Run
carthage updateto update the dependencies (which is equivalent tocarthage update --configuration Release). - Add the frameworks listed above and generated in the
Carthage/Build/iOSfolder to your target Embedded binaries.
If your target is building an application, a few more steps are required:
- Add a Run script build phase to your target, with
/usr/local/bin/carthage copy-frameworksas command. - Add each of the required frameworks above as input file
$(SRCROOT)/Carthage/Build/iOS/FrameworkName.framework.
- Run
carthage update --configuration Release-staticto update the dependencies. - Add the frameworks listed above and generated in the
Carthage/Build/iOS/Staticfolder to the Linked frameworks and libraries list of your target. - Also add any resource bundle
.bundlefound within the.frameworkfolders to your target directly. - Add the
-all_loadflag to your target Other linker flags.
When you want to use classes or functions provided by the library in your code, you must import it from your source files first.
Import the global header file using:
#import <SRGMediaPlayer/SRGMediaPlayer.h>or directly import the module itself:
@import SRGMediaPlayer;Import the module where needed:
import SRGMediaPlayerTo learn about how the library can be used, have a look at the getting started guide.
The library internally uses the SRG Logger library for logging, within the ch.srgssr.mediaplayer subsystem. This logger either automatically integrates with your own logger, or can be easily integrated with it. Refer to the SRG Logger documentation for more information.
Interface Builder can render custom controls dropped onto a storyboard or a xib. If you want to enable this feature for SRG Media Player controls, and after Carthage has been run, open the Carthage/Checkouts/SRGMediaPlayer-iOS/Designables directory, copy the SRGMediaPlayerDesignables.m file it contains to your project and add it to your target.
When dropping a media player control (e.g. SRGPictureInPictureButton) onto a storyboard or xib, Xcode will now build your project in the background and render the view when it is done.
If rendering does not work properly:
- Be sure that your project correctly compiles.
- If you still get
dlopenerrors, this means some frameworks are not available to Xcode when it runs your project for rendering. This usually means that thecopy-frameworksbuild phase described in the Carthage readme has not been setup properly. Be sure that all SRG Media Player dependencies are properly copied (see above framework list).
Since the SRGMediaPlayerDesignables.m must be copied to your project, you should update this file when updating the SRG Media Player library.
A Makefile provides several targets to build and package the library. The available targets can be listed by running the following command from the project root folder:
make help
Alternatively, you can of course open the project with Xcode and use the available schemes.
To test what the library is capable of, run the associated demo.
For information about changes introduced with version 2 of the library, please read the migration guide.
See the LICENSE file for more information.
