Skip to content

Commit 204aaa6

Browse files
authored
Merge pull request LaiFengiOS#5 from LaiFengiOS/master
update to last version
2 parents ba1f7a3 + 3c58ff7 commit 204aaa6

38 files changed

+193
-4343
lines changed

LFLiveKit.podspec

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
Pod::Spec.new do |s|
33

44
s.name = "LFLiveKit"
5-
s.version = "1.7.1"
5+
s.version = "1.8.0"
66
s.summary = "LaiFeng ios Live. LFLiveKit."
77
s.homepage = "https://github.com/chenliming777"
88
s.license = { :type => "MIT", :file => "LICENSE" }
99
s.author = { "chenliming" => "chenliming777@qq.com" }
1010
s.platform = :ios, "8.0"
1111
s.ios.deployment_target = "8.0"
1212
s.source = { :git => "https://github.com/LaiFengiOS/LFLiveKit.git", :tag => "#{s.version}" }
13-
s.source_files = "LFLiveKit/**/*.{*}"
13+
s.source_files = "LFLiveKit/**/*.{h,m}"
1414
s.public_header_files = "LFLiveKit/**/*.h"
1515

1616
s.frameworks = "VideoToolbox", "AudioToolbox","AVFoundation","Foundation","UIKit"

LFLiveKit.xcodeproj/project.pbxproj

+32-110
Large diffs are not rendered by default.
Binary file not shown.

LFLiveKit/Info.plist

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<key>CFBundlePackageType</key>
1616
<string>FMWK</string>
1717
<key>CFBundleShortVersionString</key>
18-
<string>1.7.1</string>
18+
<string>1.8.0</string>
1919
<key>CFBundleSignature</key>
2020
<string>????</string>
2121
<key>CFBundleVersion</key>

LFLiveKit/LFLiveSession.h

+1-10
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,6 @@
1515
#import "LFLiveVideoConfiguration.h"
1616
#import "LFLiveDebug.h"
1717

18-
typedef void (^ LFRequestComplete)(_Nullable id info,NSError *_Nullable errorMsg);
19-
20-
/// 流类型
21-
typedef NS_ENUM(NSUInteger, LFLiveType){
22-
/// rtmp格式
23-
LFLiveRTMP = 0,
24-
/// tcp 传输flv格式
25-
LFLiveFLV = 1,
26-
};
2718

2819
@class LFLiveSession;
2920
@protocol LFLiveSessionDelegate <NSObject>
@@ -104,7 +95,7 @@ typedef NS_ENUM(NSUInteger, LFLiveType){
10495
The designated initializer. Multiple instances with the same configuration will make the
10596
capture unstable.
10697
*/
107-
- (nullable instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration*)audioConfiguration videoConfiguration:(nullable LFLiveVideoConfiguration*)videoConfiguration liveType:(LFLiveType)liveType NS_DESIGNATED_INITIALIZER;
98+
- (nullable instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration*)audioConfiguration videoConfiguration:(nullable LFLiveVideoConfiguration*)videoConfiguration NS_DESIGNATED_INITIALIZER;
10899

109100
/** The start stream .*/
110101
- (void)startLive:(nonnull LFLiveStreamInfo*)streamInfo;

LFLiveKit/LFLiveSession.m

+2-10
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
#import "LFHardwareVideoEncoder.h"
1313
#import "LFHardwareAudioEncoder.h"
1414
#import "LFStreamRtmpSocket.h"
15-
#import "LFStreamTcpSocket.h"
1615
#import "LFLiveStreamInfo.h"
1716
#import "LFGPUImageBeautyFilter.h"
1817

@@ -22,8 +21,6 @@ @interface LFLiveSession ()<LFAudioCaptureDelegate,LFVideoCaptureDelegate,LFAudi
2221
{
2322
dispatch_semaphore_t _lock;
2423
}
25-
///流媒体格式
26-
@property (nonatomic, assign) LFLiveType liveType;
2724
///音频配置
2825
@property (nonatomic, strong) LFLiveAudioConfiguration *audioConfiguration;
2926
///视频配置
@@ -66,12 +63,11 @@ @interface LFLiveSession ()
6663
@implementation LFLiveSession
6764

6865
#pragma mark -- LifeCycle
69-
- (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)audioConfiguration videoConfiguration:(LFLiveVideoConfiguration *)videoConfiguration liveType:(LFLiveType)liveType{
66+
- (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)audioConfiguration videoConfiguration:(LFLiveVideoConfiguration *)videoConfiguration{
7067
if(!audioConfiguration || !videoConfiguration) @throw [NSException exceptionWithName:@"LFLiveSession init error" reason:@"audioConfiguration or videoConfiguration is nil " userInfo:nil];
7168
if(self = [super init]){
7269
_audioConfiguration = audioConfiguration;
7370
_videoConfiguration = videoConfiguration;
74-
_liveType = liveType;
7571
_lock = dispatch_semaphore_create(1);
7672
}
7773
return self;
@@ -281,11 +277,7 @@ - (LFVideoCapture*)videoCaptureSource{
281277

282278
- (id<LFStreamSocket>)socket{
283279
if(!_socket){
284-
if(self.liveType == LFLiveRTMP){
285-
_socket = [[LFStreamRtmpSocket alloc] initWithStream:self.streamInfo videoSize:self.videoConfiguration.videoSize reconnectInterval:self.reconnectInterval reconnectCount:self.reconnectCount];
286-
}else if(self.liveType == LFLiveFLV){
287-
_socket = [[LFStreamTcpSocket alloc] initWithStream:self.streamInfo videoSize:self.videoConfiguration.videoSize reconnectInterval:self.reconnectInterval reconnectCount:self.reconnectCount];
288-
}
280+
_socket = [[LFStreamRtmpSocket alloc] initWithStream:self.streamInfo videoSize:self.videoConfiguration.videoSize reconnectInterval:self.reconnectInterval reconnectCount:self.reconnectCount];
289281
[_socket setDelegate:self];
290282
}
291283
return _socket;

LFLiveKit/capture/LFVideoCapture.m

+42-4
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,27 @@ - (instancetype)initWithVideoConfiguration:(LFLiveVideoConfiguration *)configura
3434
if(self = [super init]){
3535
_configuration = configuration;
3636
_videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:_configuration.avSessionPreset cameraPosition:AVCaptureDevicePositionFront];
37-
_videoCamera.outputImageOrientation = _configuration.orientation;
37+
UIInterfaceOrientation statusBar = [[UIApplication sharedApplication] statusBarOrientation];
38+
if(configuration.landscape){
39+
if(statusBar != UIInterfaceOrientationLandscapeLeft && statusBar != UIInterfaceOrientationLandscapeRight){
40+
NSLog(@"当前设置方向出错");
41+
NSLog(@"当前设置方向出错");
42+
NSLog(@"当前设置方向出错");
43+
_videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft;
44+
}else{
45+
_videoCamera.outputImageOrientation = statusBar;
46+
}
47+
}else{
48+
if(statusBar != UIInterfaceOrientationPortrait && statusBar != UIInterfaceOrientationPortraitUpsideDown){
49+
NSLog(@"当前设置方向出错");
50+
NSLog(@"当前设置方向出错");
51+
NSLog(@"当前设置方向出错");
52+
_videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
53+
}else{
54+
_videoCamera.outputImageOrientation = statusBar;
55+
}
56+
}
57+
3858
_videoCamera.horizontallyMirrorFrontFacingCamera = NO;
3959
_videoCamera.horizontallyMirrorRearFacingCamera = NO;
4060
_videoCamera.frameRate = (int32_t)_configuration.videoFrameRate;
@@ -46,7 +66,7 @@ - (instancetype)initWithVideoConfiguration:(LFLiveVideoConfiguration *)configura
4666

4767
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterBackground:) name:UIApplicationWillResignActiveNotification object:nil];
4868
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground:) name:UIApplicationDidBecomeActiveNotification object:nil];
49-
69+
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarChanged:) name:UIApplicationWillChangeStatusBarOrientationNotification object:nil];
5070
self.beautyFace = YES;
5171
self.beautyLevel = 0.5;
5272
self.brightLevel = 0.5;
@@ -200,7 +220,7 @@ - (void)setBeautyFace:(BOOL)beautyFace{
200220
}
201221

202222
if (_configuration.isClipVideo) {
203-
if (_configuration.orientation == UIInterfaceOrientationPortrait || _configuration.orientation == UIInterfaceOrientationPortraitUpsideDown){
223+
if (_configuration.landscape){
204224
_cropfilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(0.125, 0, 0.75, 1)];
205225
} else {
206226
_cropfilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(0, 0.125, 1, 0.75)];
@@ -235,7 +255,7 @@ - (void)processVideo:(GPUImageOutput *)output{
235255
if(pixelBuffer && _self.delegate && [_self.delegate respondsToSelector:@selector(captureOutput:pixelBuffer:)]){
236256
[_self.delegate captureOutput:_self pixelBuffer:pixelBuffer];
237257
}
238-
258+
239259
}
240260
}
241261

@@ -254,4 +274,22 @@ - (void)willEnterForeground:(NSNotification*)notification{
254274
[UIApplication sharedApplication].idleTimerDisabled = YES;
255275
}
256276

277+
- (void)statusBarChanged:(NSNotification*)notification{
278+
NSLog(@"UIApplicationWillChangeStatusBarOrientationNotification. UserInfo: %@", notification.userInfo);
279+
UIInterfaceOrientation statusBar = [[UIApplication sharedApplication] statusBarOrientation];
280+
if(_configuration.landscape){
281+
if(statusBar == UIInterfaceOrientationLandscapeLeft){
282+
self.videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeRight;
283+
}else if(statusBar == UIInterfaceOrientationLandscapeRight){
284+
self.videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft;
285+
}
286+
}else{
287+
if(statusBar == UIInterfaceOrientationPortrait){
288+
self.videoCamera.outputImageOrientation = UIInterfaceOrientationPortraitUpsideDown;
289+
}else if(statusBar == UIInterfaceOrientationPortraitUpsideDown){
290+
self.videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
291+
}
292+
}
293+
}
294+
257295
@end

LFLiveKit/configuration/LFLiveVideoConfiguration.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ typedef NS_ENUM(NSUInteger, LFLiveVideoQuality){
5050
/// 视频配置(质量)
5151
+ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality;
5252

53-
/// 视频配置(质量 & 方向)
54-
+ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality orientation:(UIInterfaceOrientation)orientation;
53+
/// 视频配置(质量 & 是否是横屏)
54+
+ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality landscape:(BOOL)landscape;
5555

5656
#pragma mark - Attribute
5757
///=============================================================================
@@ -61,7 +61,7 @@ typedef NS_ENUM(NSUInteger, LFLiveVideoQuality){
6161
@property (nonatomic, assign) CGSize videoSize;
6262

6363
/// 视频输出方向
64-
@property (nonatomic, assign) UIInterfaceOrientation orientation;
64+
@property (nonatomic, assign) BOOL landscape;
6565

6666
/// 视频的帧率,即 fps
6767
@property (nonatomic, assign) NSUInteger videoFrameRate;

LFLiveKit/configuration/LFLiveVideoConfiguration.m

+23-24
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ + (instancetype)defaultConfiguration{
1818
}
1919

2020
+ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality{
21-
LFLiveVideoConfiguration *configuration = [LFLiveVideoConfiguration defaultConfigurationForQuality:videoQuality orientation:UIInterfaceOrientationPortrait];
21+
LFLiveVideoConfiguration *configuration = [LFLiveVideoConfiguration defaultConfigurationForQuality:videoQuality landscape:NO];
2222
return configuration;
2323
}
2424

25-
+ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality orientation:(UIInterfaceOrientation)orientation{
25+
+ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality landscape:(BOOL)landscape{
2626
LFLiveVideoConfiguration *configuration = [LFLiveVideoConfiguration new];
2727
switch (videoQuality) {
28-
case LFLiveVideoQuality_Low1:
28+
case LFLiveVideoQuality_Low1:
2929
{
3030
configuration.sessionPreset = LFCaptureSessionPreset360x640;
3131
configuration.videoFrameRate = 15;
@@ -37,7 +37,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality
3737
configuration.videoSize = CGSizeMake(360, 640);
3838
}
3939
break;
40-
case LFLiveVideoQuality_Low2:
40+
case LFLiveVideoQuality_Low2:
4141
{
4242
configuration.sessionPreset = LFCaptureSessionPreset360x640;
4343
configuration.videoFrameRate = 24;
@@ -49,7 +49,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality
4949
configuration.videoSize = CGSizeMake(360, 640);
5050
}
5151
break;
52-
case LFLiveVideoQuality_Low3:
52+
case LFLiveVideoQuality_Low3:
5353
{
5454
configuration.sessionPreset = LFCaptureSessionPreset360x640;
5555
configuration.videoFrameRate = 30;
@@ -61,7 +61,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality
6161
configuration.videoSize = CGSizeMake(360, 640);
6262
}
6363
break;
64-
case LFLiveVideoQuality_Medium1:
64+
case LFLiveVideoQuality_Medium1:
6565
{
6666
configuration.sessionPreset = LFCaptureSessionPreset540x960;
6767
configuration.videoFrameRate = 15;
@@ -73,7 +73,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality
7373
configuration.videoSize = CGSizeMake(540, 960);
7474
}
7575
break;
76-
case LFLiveVideoQuality_Medium2:
76+
case LFLiveVideoQuality_Medium2:
7777
{
7878
configuration.sessionPreset = LFCaptureSessionPreset540x960;
7979
configuration.videoFrameRate = 24;
@@ -85,7 +85,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality
8585
configuration.videoSize = CGSizeMake(540, 960);
8686
}
8787
break;
88-
case LFLiveVideoQuality_Medium3:
88+
case LFLiveVideoQuality_Medium3:
8989
{
9090
configuration.sessionPreset = LFCaptureSessionPreset540x960;
9191
configuration.videoFrameRate = 30;
@@ -97,7 +97,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality
9797
configuration.videoSize = CGSizeMake(540, 960);
9898
}
9999
break;
100-
case LFLiveVideoQuality_High1:
100+
case LFLiveVideoQuality_High1:
101101
{
102102
configuration.sessionPreset = LFCaptureSessionPreset720x1280;
103103
configuration.videoFrameRate = 15;
@@ -109,7 +109,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality
109109
configuration.videoSize = CGSizeMake(720, 1280);
110110
}
111111
break;
112-
case LFLiveVideoQuality_High2:
112+
case LFLiveVideoQuality_High2:
113113
{
114114
configuration.sessionPreset = LFCaptureSessionPreset720x1280;
115115
configuration.videoFrameRate = 24;
@@ -121,7 +121,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality
121121
configuration.videoSize = CGSizeMake(720, 1280);
122122
}
123123
break;
124-
case LFLiveVideoQuality_High3:
124+
case LFLiveVideoQuality_High3:
125125
{
126126
configuration.sessionPreset = LFCaptureSessionPreset720x1280;
127127
configuration.videoFrameRate = 30;
@@ -138,12 +138,12 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality
138138
}
139139
configuration.sessionPreset = [configuration supportSessionPreset:configuration.sessionPreset];
140140
configuration.videoMaxKeyframeInterval = configuration.videoFrameRate*2;
141-
configuration.orientation = orientation;
141+
configuration.landscape = landscape;
142142
CGSize size = configuration.videoSize;
143-
if(orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown){
144-
configuration.videoSize = CGSizeMake(size.width, size.height);
145-
}else{
143+
if(landscape){
146144
configuration.videoSize = CGSizeMake(size.height, size.width);
145+
}else{
146+
configuration.videoSize = CGSizeMake(size.width, size.height);
147147
}
148148
return configuration;
149149
}
@@ -152,17 +152,17 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality
152152
- (NSString*)avSessionPreset{
153153
NSString *avSessionPreset = nil;
154154
switch (self.sessionPreset) {
155-
case LFCaptureSessionPreset360x640:
155+
case LFCaptureSessionPreset360x640:
156156
{
157157
avSessionPreset = AVCaptureSessionPreset640x480;
158158
}
159159
break;
160-
case LFCaptureSessionPreset540x960:
160+
case LFCaptureSessionPreset540x960:
161161
{
162162
avSessionPreset = AVCaptureSessionPresetiFrame960x540;
163163
}
164164
break;
165-
case LFCaptureSessionPreset720x1280:
165+
case LFCaptureSessionPreset720x1280:
166166
{
167167
avSessionPreset = AVCaptureSessionPreset1280x720;
168168
}
@@ -195,7 +195,6 @@ - (void)setVideoMinFrameRate:(NSUInteger)videoMinFrameRate{
195195
_videoMinFrameRate = videoMinFrameRate;
196196
}
197197

198-
199198
#pragma mark -- Custom Method
200199
- (LFLiveVideoSessionPreset)supportSessionPreset:(LFLiveVideoSessionPreset)sessionPreset{
201200
NSString *avSessionPreset = [self avSessionPreset];
@@ -225,7 +224,7 @@ - (void)encodeWithCoder:(NSCoder *)aCoder {
225224
[aCoder encodeObject:@(self.videoMaxKeyframeInterval) forKey:@"videoMaxKeyframeInterval"];
226225
[aCoder encodeObject:@(self.videoBitRate) forKey:@"videoBitRate"];
227226
[aCoder encodeObject:@(self.sessionPreset) forKey:@"sessionPreset"];
228-
[aCoder encodeObject:@(self.orientation) forKey:@"orientation"];
227+
[aCoder encodeObject:@(self.landscape) forKey:@"landscape"];
229228
}
230229

231230
- (id)initWithCoder:(NSCoder *)aDecoder {
@@ -235,7 +234,7 @@ - (id)initWithCoder:(NSCoder *)aDecoder {
235234
_videoMaxKeyframeInterval = [[aDecoder decodeObjectForKey:@"videoMaxKeyframeInterval"] unsignedIntegerValue];
236235
_videoBitRate = [[aDecoder decodeObjectForKey:@"videoBitRate"] unsignedIntegerValue];
237236
_sessionPreset = [[aDecoder decodeObjectForKey:@"sessionPreset"] unsignedIntegerValue];
238-
_orientation = [[aDecoder decodeObjectForKey:@"orientation"] unsignedIntegerValue];
237+
_landscape = [[aDecoder decodeObjectForKey:@"landscape"] unsignedIntegerValue];
239238
return self;
240239
}
241240

@@ -252,7 +251,7 @@ - (NSUInteger)hash {
252251
@(self.isClipVideo),
253252
self.avSessionPreset,
254253
@(self.sessionPreset),
255-
@(self.orientation),];
254+
@(self.landscape),];
256255

257256
for (NSObject *value in values) {
258257
hash ^= value.hash;
@@ -279,7 +278,7 @@ - (BOOL)isEqual:(id)other
279278
object.isClipVideo == self.isClipVideo &&
280279
[object.avSessionPreset isEqualToString:self.avSessionPreset] &&
281280
object.sessionPreset == self.sessionPreset &&
282-
object.orientation == self.orientation;
281+
object.landscape == self.landscape;
283282
}
284283
}
285284

@@ -302,7 +301,7 @@ - (NSString *)description{
302301
[desc appendFormat:@" isClipVideo:%zi",self.isClipVideo];
303302
[desc appendFormat:@" avSessionPreset:%@",self.avSessionPreset];
304303
[desc appendFormat:@" sessionPreset:%zi",self.sessionPreset];
305-
[desc appendFormat:@" orientation:%zi",self.orientation];
304+
[desc appendFormat:@" landscape:%zi",self.landscape];
306305
return desc;
307306
}
308307

LFLiveKit/packet/LFFlvPackage.h

-20
This file was deleted.

0 commit comments

Comments
 (0)