Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 48f3222d28 | |||
| a070f2c785 | |||
| 0935b0ec55 | |||
| 747f6bb56f | |||
| aea0881949 | |||
| df0e6caaaf | |||
| 3197515537 | |||
| 36cecee5bc | |||
| 3da484c5e2 | |||
| 59b9f3a5fe |
@@ -210,13 +210,19 @@
|
||||
TargetAttributes = {
|
||||
AF87202C1CA44FBD004C752C = {
|
||||
CreatedOnToolsVersion = 7.2;
|
||||
DevelopmentTeam = 35R365FS4Q;
|
||||
LastSwiftMigration = 0800;
|
||||
};
|
||||
AF8720401CA44FBD004C752C = {
|
||||
CreatedOnToolsVersion = 7.2;
|
||||
DevelopmentTeam = 35R365FS4Q;
|
||||
LastSwiftMigration = 0800;
|
||||
TestTargetID = AF87202C1CA44FBD004C752C;
|
||||
};
|
||||
AF87204B1CA44FBD004C752C = {
|
||||
CreatedOnToolsVersion = 7.2;
|
||||
DevelopmentTeam = 35R365FS4Q;
|
||||
LastSwiftMigration = 0800;
|
||||
TestTargetID = AF87202C1CA44FBD004C752C;
|
||||
};
|
||||
};
|
||||
@@ -350,6 +356,7 @@
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEVELOPMENT_TEAM = 35R365FS4Q;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
@@ -394,6 +401,7 @@
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = 35R365FS4Q;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
@@ -415,11 +423,13 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
DEVELOPMENT_TEAM = 35R365FS4Q;
|
||||
INFOPLIST_FILE = "VimeoPlayer-iOS-Example/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.vimeo.VimeoPlayer-iOS-Example";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "${SRCROOT}/VimeoPlayer-iOS-Example/Bridge.h";
|
||||
SWIFT_VERSION = 2.3;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -427,11 +437,13 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
DEVELOPMENT_TEAM = 35R365FS4Q;
|
||||
INFOPLIST_FILE = "VimeoPlayer-iOS-Example/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.vimeo.VimeoPlayer-iOS-Example";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "${SRCROOT}/VimeoPlayer-iOS-Example/Bridge.h";
|
||||
SWIFT_VERSION = 2.3;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
@@ -439,10 +451,12 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
DEVELOPMENT_TEAM = 35R365FS4Q;
|
||||
INFOPLIST_FILE = "VimeoPlayer-iOS-ExampleTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.vimeo.VimeoPlayer-iOS-ExampleTests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 2.3;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/VimeoPlayer-iOS-Example.app/VimeoPlayer-iOS-Example";
|
||||
};
|
||||
name = Debug;
|
||||
@@ -451,10 +465,12 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
DEVELOPMENT_TEAM = 35R365FS4Q;
|
||||
INFOPLIST_FILE = "VimeoPlayer-iOS-ExampleTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.vimeo.VimeoPlayer-iOS-ExampleTests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 2.3;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/VimeoPlayer-iOS-Example.app/VimeoPlayer-iOS-Example";
|
||||
};
|
||||
name = Release;
|
||||
@@ -466,6 +482,7 @@
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.vimeo.VimeoPlayer-iOS-ExampleUITests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 2.3;
|
||||
TEST_TARGET_NAME = "VimeoPlayer-iOS-Example";
|
||||
USES_XCTRUNNER = YES;
|
||||
};
|
||||
@@ -478,6 +495,7 @@
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.vimeo.VimeoPlayer-iOS-ExampleUITests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 2.3;
|
||||
TEST_TARGET_NAME = "VimeoPlayer-iOS-Example";
|
||||
USES_XCTRUNNER = YES;
|
||||
};
|
||||
@@ -502,6 +520,7 @@
|
||||
AF8720571CA44FBD004C752C /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
AF8720581CA44FBD004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayer-iOS-ExampleTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
@@ -510,6 +529,7 @@
|
||||
AF87205A1CA44FBD004C752C /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
AF87205B1CA44FBD004C752C /* Build configuration list for PBXNativeTarget "VimeoPlayer-iOS-ExampleUITests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
@@ -518,6 +538,7 @@
|
||||
AF87205D1CA44FBD004C752C /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
⚠️⚠️⚠️
|
||||
This library has been deprecated and will be removed in the future. Use [PlayerKit](https://github.com/vimeo/PlayerKit) instead.
|
||||
⚠️⚠️⚠️
|
||||
|
||||
# VIMVideoPlayer
|
||||
|
||||
`VIMVideoPlayer` is a simple wrapper around the [AVPlayer](https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayer_Class/index.html) and [AVPlayerLayer](https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayerLayer_Class/index.html#//apple_ref/occ/cl/AVPlayerLayer) classes.
|
||||
|
||||
@@ -161,9 +161,11 @@
|
||||
TargetAttributes = {
|
||||
AF871FFD1CA447E5004C752C = {
|
||||
CreatedOnToolsVersion = 7.2;
|
||||
DevelopmentTeam = 35R365FS4Q;
|
||||
};
|
||||
AF8720071CA447E5004C752C = {
|
||||
CreatedOnToolsVersion = 7.2;
|
||||
DevelopmentTeam = 35R365FS4Q;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -322,7 +324,9 @@
|
||||
AF8720131CA447E5004C752C /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 35R365FS4Q;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
@@ -340,6 +344,7 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = 35R365FS4Q;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
@@ -356,6 +361,7 @@
|
||||
AF8720161CA447E5004C752C /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEVELOPMENT_TEAM = 35R365FS4Q;
|
||||
INFOPLIST_FILE = VimeoPlayerTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.vimeo.VimeoPlayerTests;
|
||||
@@ -366,6 +372,7 @@
|
||||
AF8720171CA447E5004C752C /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEVELOPMENT_TEAM = 35R365FS4Q;
|
||||
INFOPLIST_FILE = VimeoPlayerTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.vimeo.VimeoPlayerTests;
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
|
||||
@class VIMVideoPlayer;
|
||||
|
||||
static const float TimeUpdateInterval = 0.1f;
|
||||
|
||||
@protocol VIMVideoPlayerDelegate <NSObject>
|
||||
|
||||
@optional
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
|
||||
static const float DefaultPlayableBufferLength = 2.0f;
|
||||
static const float DefaultVolumeFadeDuration = 1.0f;
|
||||
static const float TimeObserverInterval = 0.01f;
|
||||
|
||||
NSString * const kVideoPlayerErrorDomain = @"kVideoPlayerErrorDomain";
|
||||
|
||||
@@ -99,6 +98,8 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
self.muted = NO;
|
||||
self.looping = NO;
|
||||
|
||||
self.player.usesExternalPlaybackWhileExternalScreenIsActive = YES;
|
||||
|
||||
[self setVolume:1.0f];
|
||||
[self enableTimeUpdates];
|
||||
[self enableAirplay];
|
||||
@@ -164,7 +165,8 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
|
||||
[self resetPlayerItemIfNecessary];
|
||||
|
||||
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:asset automaticallyLoadedAssetKeys:@[NSStringFromSelector(@selector(tracks))]];
|
||||
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset: asset];
|
||||
|
||||
if (!playerItem)
|
||||
{
|
||||
[self reportUnableToCreatePlayerItem];
|
||||
@@ -642,7 +644,7 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
}
|
||||
|
||||
__weak typeof (self) weakSelf = self;
|
||||
self.timeObserverToken = [self.player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(TimeObserverInterval, NSEC_PER_SEC) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
|
||||
self.timeObserverToken = [self.player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(TimeUpdateInterval, NSEC_PER_SEC) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
|
||||
|
||||
__strong typeof (self) strongSelf = weakSelf;
|
||||
if (!strongSelf)
|
||||
@@ -719,12 +721,29 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
NSLog(@"Video player Status Failed: player item error = %@", self.player.currentItem.error);
|
||||
NSLog(@"Video player Status Failed: player error = %@", self.player.error);
|
||||
|
||||
// First, try to use the player error if it exists
|
||||
|
||||
NSError *error = self.player.error;
|
||||
|
||||
// Otherwise try to use the current item's error
|
||||
|
||||
if (!error)
|
||||
{
|
||||
error = self.player.currentItem.error;
|
||||
}
|
||||
else
|
||||
|
||||
// If there's a more specific underlyng error, use that
|
||||
|
||||
NSError *underlyingError = [error.userInfo objectForKey:NSUnderlyingErrorKey];
|
||||
|
||||
if (underlyingError)
|
||||
{
|
||||
error = underlyingError;
|
||||
}
|
||||
|
||||
// Finally, construct our own as a last resort
|
||||
|
||||
if (!error)
|
||||
{
|
||||
error = [NSError errorWithDomain:kVideoPlayerErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey : @"unknown player error, status == AVPlayerItemStatusFailed"}];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user