Commit 1b41c8fe2d68b986f674009114b701a8117e7b6a
1 parent
fcc25a96
no message
Showing
7 changed files
with
102 additions
and
44 deletions
CNLivePlayer/Classes/Cache/CNLivePlayerCache.h
| @@ -66,14 +66,14 @@ NS_ASSUME_NONNULL_BEGIN | @@ -66,14 +66,14 @@ NS_ASSUME_NONNULL_BEGIN | ||
| 66 | 66 | ||
| 67 | 67 | ||
| 68 | /** | 68 | /** |
| 69 | - * 删除所有的磁盘换存文件 | ||
| 70 | - * 删除所有的磁盘缓存url | 69 | + * 删除所有的磁盘缓存url(YYCache) |
| 71 | */ | 70 | */ |
| 72 | + (void)player_RemoveAllUrlCache; | 71 | + (void)player_RemoveAllUrlCache; |
| 73 | 72 | ||
| 74 | 73 | ||
| 75 | /** | 74 | /** |
| 76 | - * 删除所有的磁盘缓存url和视频 | 75 | + * 删除所有的磁盘缓存url(YYCache) |
| 76 | + * 删除所有的磁盘缓存视频(KSYHTTPProxyService) | ||
| 77 | */ | 77 | */ |
| 78 | + (void)player_clearAllCache; | 78 | + (void)player_clearAllCache; |
| 79 | 79 |
CNLivePlayer/Classes/Cache/CNLivePlayerCache.m
CNLivePlayer/Classes/Player/CNLivePlayer.h
| @@ -21,12 +21,19 @@ | @@ -21,12 +21,19 @@ | ||
| 21 | 21 | ||
| 22 | NS_ASSUME_NONNULL_BEGIN | 22 | NS_ASSUME_NONNULL_BEGIN |
| 23 | 23 | ||
| 24 | +/* | ||
| 25 | + * 获取主播状态通知 | ||
| 26 | + */ | ||
| 24 | UIKIT_EXTERN NSString *const CNLiveHostStatusChangedNotification; | 27 | UIKIT_EXTERN NSString *const CNLiveHostStatusChangedNotification; |
| 25 | 28 | ||
| 26 | -// 成功回调 | 29 | +/* |
| 30 | + * 成功回调 | ||
| 31 | + */ | ||
| 27 | typedef void(^AuthSuccessBlock)(void); | 32 | typedef void(^AuthSuccessBlock)(void); |
| 28 | 33 | ||
| 29 | -// 失败回调 | 34 | +/* |
| 35 | + * 失败回调 | ||
| 36 | + */ | ||
| 30 | typedef void(^AuthFailureBlock)(NSDictionary *errorInfo); | 37 | typedef void(^AuthFailureBlock)(NSDictionary *errorInfo); |
| 31 | 38 | ||
| 32 | @interface CNLivePlayer : NSObject | 39 | @interface CNLivePlayer : NSObject |
| @@ -34,7 +41,7 @@ typedef void(^AuthFailureBlock)(NSDictionary *errorInfo); | @@ -34,7 +41,7 @@ typedef void(^AuthFailureBlock)(NSDictionary *errorInfo); | ||
| 34 | /* | 41 | /* |
| 35 | * 播放器类型 | 42 | * 播放器类型 |
| 36 | */ | 43 | */ |
| 37 | -@property (nonatomic, assign) CNLivePlayerType type; | 44 | +@property (nonatomic, assign, readonly) CNLivePlayerType type; |
| 38 | 45 | ||
| 39 | /* | 46 | /* |
| 40 | * 播放器 | 47 | * 播放器 |
| @@ -42,6 +49,15 @@ typedef void(^AuthFailureBlock)(NSDictionary *errorInfo); | @@ -42,6 +49,15 @@ typedef void(^AuthFailureBlock)(NSDictionary *errorInfo); | ||
| 42 | @property (nonatomic, strong) KSYMoviePlayerController *player; | 49 | @property (nonatomic, strong) KSYMoviePlayerController *player; |
| 43 | 50 | ||
| 44 | #pragma mark - 初始化方法 | 51 | #pragma mark - 初始化方法 |
| 52 | +/* | ||
| 53 | + * 初始化播放器并设置播放地址 | ||
| 54 | + * | ||
| 55 | + * url 视频url | ||
| 56 | + * | ||
| 57 | + */ | ||
| 58 | +- (instancetype)initWithContentURL:(NSURL *)url; | ||
| 59 | + | ||
| 60 | + | ||
| 45 | /* 初始化点播播放器 初始化成功后才能对播放器进行设置(如:自动播放、是否开启硬件解码等)和调用准备播放视频方法(prepareToPlay) | 61 | /* 初始化点播播放器 初始化成功后才能对播放器进行设置(如:自动播放、是否开启硬件解码等)和调用准备播放视频方法(prepareToPlay) |
| 46 | * | 62 | * |
| 47 | * videoId 视频Id | 63 | * videoId 视频Id |
| @@ -105,7 +121,7 @@ typedef void(^AuthFailureBlock)(NSDictionary *errorInfo); | @@ -105,7 +121,7 @@ typedef void(^AuthFailureBlock)(NSDictionary *errorInfo); | ||
| 105 | * 默认不静音 | 121 | * 默认不静音 |
| 106 | * [prepareToPlay]方法前设置即生效,也可以在播放过程中动态切换 | 122 | * [prepareToPlay]方法前设置即生效,也可以在播放过程中动态切换 |
| 107 | */ | 123 | */ |
| 108 | -@property(nonatomic) BOOL shouldMute; | 124 | +@property (nonatomic) BOOL shouldMute; |
| 109 | 125 | ||
| 110 | /** | 126 | /** |
| 111 | @abstract 是否循环播放 | 127 | @abstract 是否循环播放 |
| @@ -113,7 +129,7 @@ typedef void(^AuthFailureBlock)(NSDictionary *errorInfo); | @@ -113,7 +129,7 @@ typedef void(^AuthFailureBlock)(NSDictionary *errorInfo); | ||
| 113 | * 只在[prepareToPlay]调用前设置生效; | 129 | * 只在[prepareToPlay]调用前设置生效; |
| 114 | * 只有点播生效,直播场景请勿设置 | 130 | * 只有点播生效,直播场景请勿设置 |
| 115 | */ | 131 | */ |
| 116 | -@property(nonatomic) BOOL shouldLoop; | 132 | +@property (nonatomic) BOOL shouldLoop; |
| 117 | 133 | ||
| 118 | /** | 134 | /** |
| 119 | @abstract 指定逆时针旋转角度,只能是0/90/180/270, 不符合上述值不进行旋转 | 135 | @abstract 指定逆时针旋转角度,只能是0/90/180/270, 不符合上述值不进行旋转 |
| @@ -127,16 +143,16 @@ typedef void(^AuthFailureBlock)(NSDictionary *errorInfo); | @@ -127,16 +143,16 @@ typedef void(^AuthFailureBlock)(NSDictionary *errorInfo); | ||
| 127 | @discussion NO: 可以与其他后台播放共存,相互之间不会被打断 | 143 | @discussion NO: 可以与其他后台播放共存,相互之间不会被打断 |
| 128 | @discussion 默认为YES | 144 | @discussion 默认为YES |
| 129 | */ | 145 | */ |
| 130 | -@property(nonatomic) BOOL bInterruptOtherAudio; | 146 | +@property (nonatomic) BOOL bInterruptOtherAudio; |
| 131 | 147 | ||
| 132 | /* | 148 | /* |
| 133 | * 查询视频准备是否完成(只读) | 149 | * 查询视频准备是否完成(只读) |
| 134 | */ | 150 | */ |
| 135 | -@property(nonatomic, readonly) BOOL isPreparedToPlay; | 151 | +@property (nonatomic, readonly) BOOL isPreparedToPlay; |
| 136 | 152 | ||
| 137 | #pragma mark - 方法 | 153 | #pragma mark - 方法 |
| 138 | /* | 154 | /* |
| 139 | - * 获取主播状态(离开/已结束 | 155 | + * 获取主播状态(离开/已结束) |
| 140 | */ | 156 | */ |
| 141 | - (void)getHostStatus:(void(^)(BOOL result))result; | 157 | - (void)getHostStatus:(void(^)(BOOL result))result; |
| 142 | 158 |
CNLivePlayer/Classes/Player/CNLivePlayer.m
| @@ -52,6 +52,32 @@ NSString * const CNLivePlayerMsgReceiveNotification = @"CNLiveMsgToolsPlayerRece | @@ -52,6 +52,32 @@ NSString * const CNLivePlayerMsgReceiveNotification = @"CNLiveMsgToolsPlayerRece | ||
| 52 | NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChangedNotification"; | 52 | NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChangedNotification"; |
| 53 | 53 | ||
| 54 | #pragma mark - 初始化方法 | 54 | #pragma mark - 初始化方法 |
| 55 | +/* | ||
| 56 | + * 初始化播放器并设置播放地址 | ||
| 57 | + * | ||
| 58 | + * url 视频url | ||
| 59 | + * | ||
| 60 | + */ | ||
| 61 | +- (instancetype)initWithContentURL:(NSURL *)url { | ||
| 62 | + self = [super init]; | ||
| 63 | + if (self) { | ||
| 64 | + [UIApplication sharedApplication].idleTimerDisabled = YES; | ||
| 65 | + | ||
| 66 | + _contentType = @""; | ||
| 67 | + _contentId = @""; | ||
| 68 | + _idName = @""; | ||
| 69 | + | ||
| 70 | + [self addMovieNotificationObservers]; | ||
| 71 | + self.player = [[KSYMoviePlayerController alloc] initWithContentURL:url]; | ||
| 72 | + [self.view addSubview:self.player.view]; | ||
| 73 | + _player.view.frame = self.view.bounds; | ||
| 74 | + _player.view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; | ||
| 75 | + _player.shouldEnableKSYStatModule = NO; | ||
| 76 | + | ||
| 77 | + } | ||
| 78 | + return self; | ||
| 79 | +} | ||
| 80 | + | ||
| 55 | /* 初始化点播播放器 初始化成功后才能对播放器进行设置(如:自动播放、是否开启硬件解码等)和调用准备播放视频方法(prepareToPlay) | 81 | /* 初始化点播播放器 初始化成功后才能对播放器进行设置(如:自动播放、是否开启硬件解码等)和调用准备播放视频方法(prepareToPlay) |
| 56 | * | 82 | * |
| 57 | * videoId 点播视频Id | 83 | * videoId 点播视频Id |
| @@ -66,7 +92,7 @@ NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChang | @@ -66,7 +92,7 @@ NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChang | ||
| 66 | 92 | ||
| 67 | } | 93 | } |
| 68 | 94 | ||
| 69 | - self.type = CNLivePlayerVod; | 95 | + _type = CNLivePlayerVod; |
| 70 | 96 | ||
| 71 | _idName = @"vid"; | 97 | _idName = @"vid"; |
| 72 | _contentType = @"vod"; | 98 | _contentType = @"vod"; |
| @@ -101,7 +127,7 @@ NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChang | @@ -101,7 +127,7 @@ NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChang | ||
| 101 | activityId = activityId ? [NSString stringWithFormat:@"%@",activityId] : @""; | 127 | activityId = activityId ? [NSString stringWithFormat:@"%@",activityId] : @""; |
| 102 | } | 128 | } |
| 103 | 129 | ||
| 104 | - self.type = CNLivePlayerLive; | 130 | + _type = CNLivePlayerLive; |
| 105 | 131 | ||
| 106 | _idName = @"cid"; | 132 | _idName = @"cid"; |
| 107 | _contentType = @"live"; | 133 | _contentType = @"live"; |
| @@ -140,7 +166,7 @@ NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChang | @@ -140,7 +166,7 @@ NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChang | ||
| 140 | 166 | ||
| 141 | } | 167 | } |
| 142 | 168 | ||
| 143 | - self.type = CNLivePlayerAudio; | 169 | + _type = CNLivePlayerAudio; |
| 144 | 170 | ||
| 145 | _idName = @"vid"; | 171 | _idName = @"vid"; |
| 146 | _contentType = @"vod"; | 172 | _contentType = @"vod"; |
| @@ -372,7 +398,7 @@ NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChang | @@ -372,7 +398,7 @@ NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChang | ||
| 372 | @"tag": PLAYER_Tag, | 398 | @"tag": PLAYER_Tag, |
| 373 | @"from": @"apple", | 399 | @"from": @"apple", |
| 374 | @"sid": PLAYER_UserId, | 400 | @"sid": PLAYER_UserId, |
| 375 | - @"uid": [CNLivePlayerTools getUidForStat:stamp]}; | 401 | + @"uid": [CNLivePlayerTools getUidForTimestamp:stamp]}; |
| 376 | 402 | ||
| 377 | NSString *videoUrl = [CNLivePlayerTools encryptionSignWithUrl:vodUrl parameter:parameter]; | 403 | NSString *videoUrl = [CNLivePlayerTools encryptionSignWithUrl:vodUrl parameter:parameter]; |
| 378 | 404 | ||
| @@ -426,7 +452,7 @@ NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChang | @@ -426,7 +452,7 @@ NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChang | ||
| 426 | @"tag": PLAYER_Tag, | 452 | @"tag": PLAYER_Tag, |
| 427 | @"from": @"apple", | 453 | @"from": @"apple", |
| 428 | @"sid": PLAYER_UserId, | 454 | @"sid": PLAYER_UserId, |
| 429 | - @"uid": [CNLivePlayerTools getUidForStat:timestamp]}; | 455 | + @"uid": [CNLivePlayerTools getUidForTimestamp:timestamp]}; |
| 430 | 456 | ||
| 431 | NSString *videoUrl = [CNLivePlayerTools encryptionSignWithUrl:liveUrl parameter:parameter]; | 457 | NSString *videoUrl = [CNLivePlayerTools encryptionSignWithUrl:liveUrl parameter:parameter]; |
| 432 | 458 | ||
| @@ -711,8 +737,8 @@ NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChang | @@ -711,8 +737,8 @@ NSString * const CNLiveHostStatusChangedNotification = @"CNLiveAnchorStatusChang | ||
| 711 | } | 737 | } |
| 712 | _playTime++; | 738 | _playTime++; |
| 713 | 739 | ||
| 714 | - NSString *stamp = [CNLivePlayerTools getTimestamp]; | ||
| 715 | - NSString *url = [NSString stringWithFormat:@"%@?sver=%@&uid=%@&tm=%@&from=apple&spid=&appid=%@&version=1001_%@&eventid=1001&uri=%@&sid=&plat=i_%@&objid=%@_%@", StatUrl, StatVersion, [CNLivePlayerTools getUidForStat:stamp], stamp, PLAYER_AppID, PlayerSDKVersion, [NSString stringWithFormat:@"%ld_30", (long)_playTime], StatAppVersion,_contentId, _idName]; | 740 | + NSString *timestamp = [CNLivePlayerTools getTimestamp]; |
| 741 | + NSString *url = [NSString stringWithFormat:@"%@?sver=%@&uid=%@&tm=%@&from=apple&spid=&appid=%@&version=1001_%@&eventid=1001&uri=%@&sid=&plat=i_%@&objid=%@_%@", StatUrl, StatVersion, [CNLivePlayerTools getUidForTimestamp:timestamp], timestamp, PLAYER_AppID, PlayerSDKVersion, [NSString stringWithFormat:@"%ld_30", (long)_playTime], StatAppVersion,_contentId, _idName]; | ||
| 716 | [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]] delegate:nil]; | 742 | [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]] delegate:nil]; |
| 717 | 743 | ||
| 718 | } | 744 | } |
CNLivePlayer/Classes/Tools/CNLivePlayerTools.h
| @@ -22,7 +22,7 @@ | @@ -22,7 +22,7 @@ | ||
| 22 | /** | 22 | /** |
| 23 | * 获取UUID_Timestamp | 23 | * 获取UUID_Timestamp |
| 24 | */ | 24 | */ |
| 25 | -+ (NSString *)getUidForStat:(NSString *)date; | 25 | ++ (NSString *)getUidForTimestamp:(NSString *)timestamp; |
| 26 | 26 | ||
| 27 | //错误信息 | 27 | //错误信息 |
| 28 | + (NSError *)customErrorWithResponseObject:(id)responseObject errorInfo:(NSString *)errorInfo; | 28 | + (NSError *)customErrorWithResponseObject:(id)responseObject errorInfo:(NSString *)errorInfo; |
| @@ -39,6 +39,9 @@ | @@ -39,6 +39,9 @@ | ||
| 39 | 39 | ||
| 40 | 40 | ||
| 41 | #pragma mark - 方法 | 41 | #pragma mark - 方法 |
| 42 | +/** | ||
| 43 | + * 视频出错,上传接口 | ||
| 44 | + */ | ||
| 42 | + (void)errorStat:(NSString *)errorString contentId:(NSString *)contentId idName:(NSString *)idName; | 45 | + (void)errorStat:(NSString *)errorString contentId:(NSString *)contentId idName:(NSString *)idName; |
| 43 | 46 | ||
| 44 | + (void)statSDKWithContentId:(NSString *)contentId idName:(NSString *)idName; | 47 | + (void)statSDKWithContentId:(NSString *)contentId idName:(NSString *)idName; |
CNLivePlayer/Classes/Tools/CNLivePlayerTools.m
| @@ -14,9 +14,9 @@ | @@ -14,9 +14,9 @@ | ||
| 14 | @implementation CNLivePlayerTools | 14 | @implementation CNLivePlayerTools |
| 15 | #pragma mark - 加密 | 15 | #pragma mark - 加密 |
| 16 | + (NSString *)encryptionSignWithUrl:(NSString *)url parameter:(NSDictionary *)parameter { | 16 | + (NSString *)encryptionSignWithUrl:(NSString *)url parameter:(NSDictionary *)parameter { |
| 17 | - NSString *string1 = [NSString stringWithFormat:@"%@&key=%@", [CNLivePlayerTools signvalue:parameter], PLAYER_AppKey]; | ||
| 18 | - NSString *signString1 = [[CNLivePlayerTools sha1:string1] uppercaseString]; | ||
| 19 | - return [NSString stringWithFormat:@"%@?%@&sign=%@", url, [CNLivePlayerTools signvalue:parameter], signString1]; | 17 | + NSString *keyString = [NSString stringWithFormat:@"%@&key=%@", [CNLivePlayerTools signvalue:parameter], PLAYER_AppKey]; |
| 18 | + NSString *signString = [[CNLivePlayerTools sha1:keyString] uppercaseString]; | ||
| 19 | + return [NSString stringWithFormat:@"%@?%@&sign=%@", url, [CNLivePlayerTools signvalue:parameter], signString]; | ||
| 20 | 20 | ||
| 21 | } | 21 | } |
| 22 | 22 | ||
| @@ -46,7 +46,7 @@ | @@ -46,7 +46,7 @@ | ||
| 46 | NSArray *arr = [keyArr sortedArrayUsingSelector:@selector(compare:)]; | 46 | NSArray *arr = [keyArr sortedArrayUsingSelector:@selector(compare:)]; |
| 47 | 47 | ||
| 48 | NSMutableString *str = [[NSMutableString alloc]init]; | 48 | NSMutableString *str = [[NSMutableString alloc]init]; |
| 49 | - for (int i=0; i < arr.count; i++) { | 49 | + for (int i = 0; i < arr.count; i++) { |
| 50 | 50 | ||
| 51 | NSString *parameterString = parameter[[arr objectAtIndex:i]]; | 51 | NSString *parameterString = parameter[[arr objectAtIndex:i]]; |
| 52 | if (parameterString.length > 0) { | 52 | if (parameterString.length > 0) { |
| @@ -62,8 +62,8 @@ | @@ -62,8 +62,8 @@ | ||
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | #pragma mark - UUID | 64 | #pragma mark - UUID |
| 65 | -+ (NSString *)getUidForStat:(NSString *)date { | ||
| 66 | - | 65 | ++ (NSString *)getUidForTimestamp:(NSString *)timestamp { |
| 66 | + | ||
| 67 | NSString *uid = @""; | 67 | NSString *uid = @""; |
| 68 | 68 | ||
| 69 | NSUserDefaults *defauts = [NSUserDefaults standardUserDefaults]; | 69 | NSUserDefaults *defauts = [NSUserDefaults standardUserDefaults]; |
| @@ -73,7 +73,7 @@ | @@ -73,7 +73,7 @@ | ||
| 73 | return uid; | 73 | return uid; |
| 74 | } | 74 | } |
| 75 | else { | 75 | else { |
| 76 | - NSString *stamp = [NSString stringWithFormat:@"%.3f", [date floatValue]]; | 76 | + NSString *stamp = [NSString stringWithFormat:@"%.3f", [timestamp floatValue]]; |
| 77 | stamp = [stamp stringByReplacingOccurrencesOfString:@"." withString:@""]; | 77 | stamp = [stamp stringByReplacingOccurrencesOfString:@"." withString:@""]; |
| 78 | 78 | ||
| 79 | NSString *idfv = [[[[UIDevice currentDevice] identifierForVendor] UUIDString] stringByReplacingOccurrencesOfString:@"-" withString:@""]; | 79 | NSString *idfv = [[[[UIDevice currentDevice] identifierForVendor] UUIDString] stringByReplacingOccurrencesOfString:@"-" withString:@""]; |
| @@ -119,15 +119,18 @@ | @@ -119,15 +119,18 @@ | ||
| 119 | 119 | ||
| 120 | 120 | ||
| 121 | #pragma mark - 方法 | 121 | #pragma mark - 方法 |
| 122 | +/** | ||
| 123 | + * 视频出错,上传接口 | ||
| 124 | + */ | ||
| 122 | + (void)errorStat:(NSString *)errorString contentId:(NSString *)contentId idName:(NSString *)idName{ | 125 | + (void)errorStat:(NSString *)errorString contentId:(NSString *)contentId idName:(NSString *)idName{ |
| 123 | - NSString *stamp = [CNLivePlayerTools getTimestamp]; | ||
| 124 | - NSString *url = [NSString stringWithFormat:@"%@?sver=%@&uid=%@&tm=%@&from=apple&spid=&appid=%@&version=1001_%@&eventid=1000&uri=%@&sid=&plat=i_%@&objid=%@_%@", StatUrl, StatVersion, [CNLivePlayerTools getUidForStat:stamp], stamp, PLAYER_AppID, PlayerSDKVersion, errorString, StatAppVersion, contentId, idName]; | 126 | + NSString *timestamp = [CNLivePlayerTools getTimestamp]; |
| 127 | + NSString *url = [NSString stringWithFormat:@"%@?sver=%@&uid=%@&tm=%@&from=apple&spid=&appid=%@&version=1001_%@&eventid=1000&uri=%@&sid=&plat=i_%@&objid=%@_%@", StatUrl, StatVersion, [CNLivePlayerTools getUidForTimestamp:timestamp], timestamp, PLAYER_AppID, PlayerSDKVersion, errorString, StatAppVersion, contentId, idName]; | ||
| 125 | [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]] delegate:nil]; | 128 | [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]] delegate:nil]; |
| 126 | 129 | ||
| 127 | } | 130 | } |
| 128 | + (void)statSDKWithContentId:(NSString *)contentId idName:(NSString *)idName { | 131 | + (void)statSDKWithContentId:(NSString *)contentId idName:(NSString *)idName { |
| 129 | - NSString *stamp = [CNLivePlayerTools getTimestamp]; | ||
| 130 | - NSString *url = [NSString stringWithFormat:@"%@?sver=%@&uid=%@&tm=%@&from=apple&spid=&appid=%@&version=1001_%@&eventid=1400&uri=&sid=&plat=i_%@&objid=%@_%@", StatUrl, StatVersion, [CNLivePlayerTools getUidForStat:stamp], stamp, PLAYER_AppID, PlayerSDKVersion, StatAppVersion, contentId , idName]; | 132 | + NSString *timestamp = [CNLivePlayerTools getTimestamp]; |
| 133 | + NSString *url = [NSString stringWithFormat:@"%@?sver=%@&uid=%@&tm=%@&from=apple&spid=&appid=%@&version=1001_%@&eventid=1400&uri=&sid=&plat=i_%@&objid=%@_%@", StatUrl, StatVersion, [CNLivePlayerTools getUidForTimestamp:timestamp], timestamp, PLAYER_AppID, PlayerSDKVersion, StatAppVersion, contentId , idName]; | ||
| 131 | [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]] delegate:nil]; | 134 | [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]] delegate:nil]; |
| 132 | 135 | ||
| 133 | } | 136 | } |
Example/CNLivePlayer/CNLivePlayerController.m
| @@ -31,22 +31,23 @@ | @@ -31,22 +31,23 @@ | ||
| 31 | // NSLog(@"%@", errorInfo); | 31 | // NSLog(@"%@", errorInfo); |
| 32 | // | 32 | // |
| 33 | // }]; | 33 | // }]; |
| 34 | + | ||
| 34 | //1066_716fabeaafb64236b60ecf74167c5c96 | 35 | //1066_716fabeaafb64236b60ecf74167c5c96 |
| 35 | //82_c8ff347048414b7295cef882f8361073 | 36 | //82_c8ff347048414b7295cef882f8361073 |
| 36 | - _player = [[CNLivePlayer alloc]initAudioPlayerWithAudioId:@"82_c8ff347048414b7295cef882f8361073" authSuccess:^{ | ||
| 37 | - NSLog(@"---------------初始化播放器成功---------------"); | ||
| 38 | - _player.view.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.width*9/16.0); | ||
| 39 | - | ||
| 40 | - [_player prepareToPlay]; | ||
| 41 | - [self.view addSubview:_player.view]; | ||
| 42 | - | ||
| 43 | - NSLog(@"-----%@", _player.contentURL); | ||
| 44 | - | ||
| 45 | - | ||
| 46 | - } authFailure:^(NSDictionary * _Nonnull errorInfo) { | ||
| 47 | - NSLog(@"%@", errorInfo); | ||
| 48 | - | ||
| 49 | - }]; | 37 | +// _player = [[CNLivePlayer alloc]initAudioPlayerWithAudioId:@"82_c8ff347048414b7295cef882f8361073" authSuccess:^{ |
| 38 | +// NSLog(@"---------------初始化播放器成功---------------"); | ||
| 39 | +// _player.view.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.width*9/16.0); | ||
| 40 | +// | ||
| 41 | +// [_player prepareToPlay]; | ||
| 42 | +// [self.view addSubview:_player.view]; | ||
| 43 | +// | ||
| 44 | +// NSLog(@"-----%@", _player.contentURL); | ||
| 45 | +// | ||
| 46 | +// | ||
| 47 | +// } authFailure:^(NSDictionary * _Nonnull errorInfo) { | ||
| 48 | +// NSLog(@"%@", errorInfo); | ||
| 49 | +// | ||
| 50 | +// }]; | ||
| 50 | 51 | ||
| 51 | UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; | 52 | UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; |
| 52 | btn.frame =CGRectMake(0, 0, 100, 100); | 53 | btn.frame =CGRectMake(0, 0, 100, 100); |
| @@ -61,6 +62,14 @@ | @@ -61,6 +62,14 @@ | ||
| 61 | [back addTarget:self action:@selector(backDidClicked) forControlEvents:UIControlEventTouchUpInside]; | 62 | [back addTarget:self action:@selector(backDidClicked) forControlEvents:UIControlEventTouchUpInside]; |
| 62 | [self.view addSubview:back]; | 63 | [self.view addSubview:back]; |
| 63 | 64 | ||
| 65 | + | ||
| 66 | + CNLivePlayer *player = [[CNLivePlayer alloc] initWithContentURL:[NSURL URLWithString:@"http://wideo02.cnlive.com/video/data1/2017/0423/206473/800/c8ff347048414b7295cef882f8361073_206473_800.m3u8"]]; | ||
| 67 | + player.view.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.width*9/16.0); | ||
| 68 | + player.view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; | ||
| 69 | + [player prepareToPlay]; | ||
| 70 | + [self.view addSubview:player.view]; | ||
| 71 | + | ||
| 72 | + | ||
| 64 | // KSYMoviePlayerController *player = [[KSYMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://wideo02.cnlive.com/video/data1/2017/0423/206473/800/c8ff347048414b7295cef882f8361073_206473_800.m3u8"]]; | 73 | // KSYMoviePlayerController *player = [[KSYMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://wideo02.cnlive.com/video/data1/2017/0423/206473/800/c8ff347048414b7295cef882f8361073_206473_800.m3u8"]]; |
| 65 | // player.view.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.width*9/16.0); | 74 | // player.view.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.width*9/16.0); |
| 66 | // player.view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; | 75 | // player.view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; |