Skip to content

Commit

Permalink
update to v2.9.4
Browse files Browse the repository at this point in the history
  • Loading branch information
ksvcci authored and Franken Zeng committed Jan 14, 2018
1 parent dd0f7b7 commit 223083d
Show file tree
Hide file tree
Showing 150 changed files with 13,888 additions and 17,884 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@
"idiom" : "ipad",
"size" : "83.5x83.5",
"scale" : "2x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"scale" : "1x"
}
],
"info" : {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"images" : [
{
"idiom" : "universal",
"filename" : "bgp.png",
"scale" : "1x"
},
{
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified demo/KSYLiveDemo/Images.xcassets/ksvc.imageset/ksvc.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions demo/KSYLiveDemo/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>2.9.3</string>
<string>2.9.4</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>2.9.3.2</string>
<string>2.9.4.1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
Expand Down
4 changes: 3 additions & 1 deletion demo/KSYLiveDemo/KSYDemoUI/KSYAudioCtrlView.m
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,9 @@ - (id)init{
- (void)layoutUI{
[super layoutUI];
self.btnH = 30;

if (self.width > self.height) {
self.btnH = 25;
}
[self putRow1:_micVol];
[self putSlider:_bgmVol
andSwitch:_bgmMix];
Expand Down
11 changes: 2 additions & 9 deletions demo/KSYLiveDemo/KSYDemoUI/KSYBgpStreamerVC.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,7 @@

#import <UIKit/UIKit.h>
#import "KSYUIVC.h"
#import <libksygpulive/KSYGPUBgpStreamerKit.h>
#import "KSYSimplestStreamerVC.h"

@interface KSYBgpStreamerVC : KSYUIVC

@property KSYGPUBgpStreamerKit *kit;

- (id)initWithUrl:(NSURL *)rtmpUrl;

// 重写此方法,调整UI布局
- (void)setupUI;
@interface KSYBgpStreamerVC : KSYSimplestStreamerVC
@end
200 changes: 40 additions & 160 deletions demo/KSYLiveDemo/KSYDemoUI/KSYBgpStreamerVC.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,138 +8,47 @@

#import "KSYBgpStreamerVC.h"
#import "KSYUIView.h"
#import <libksygpulive/KSYGPUStreamerKit+bgp.h>

@interface KSYBgpStreamerVC ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>{
UIButton *selectFileBtn;//选择背景图片
UIButton *captureBtn;//预览按钮
UIButton *streamBtn;//推流按钮
UIButton *quitBtn;//返回按钮
KSYUIView *ctrlView;
BOOL _capFlag;
}

@property NSURL *url;
@property UILabel *streamState;//推流状态

@end

@implementation KSYBgpStreamerVC
- (id)initWithUrl:(NSURL *)rtmpUrl{
if (self = [super init]) {
_url = rtmpUrl;
[self addObserver];
}
return self;
}
- (void)addObserver{
//监听推流状态改变
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(streamStateChanged) name:KSYStreamStateDidChangeNotification object:nil];
}
- (void)removeObserver{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)streamStateChanged{
//显示当前推流状态
switch (_kit.streamerBase.streamState) {
case KSYStreamStateIdle:
_streamState.text = @"空闲状态";
break;
case KSYStreamStateConnecting:
_streamState.text = @"连接中";
break;
case KSYStreamStateConnected:
_streamState.text = @"已连接";
break;
case KSYStreamStateDisconnecting:
_streamState.text = @"失去连接";
break;
case KSYStreamStateError:
_streamState.text = @"连接错误";
break;
default:
break;
- (id)initWithUrl:(NSURL *)rtmpUrl {
if (self = [super initWithUrl:rtmpUrl]) {
return self;
}
return nil;
}

- (void)viewDidLoad {
[super viewDidLoad];
_kit = [[KSYGPUBgpStreamerKit alloc] init];
//推流分辨率
_kit.streamDimension = CGSizeMake(720, 1280);
//视频编码器
_kit.streamerBase.videoCodec = KSYVideoCodec_AUTO;
//音频编码器
_kit.streamerBase.audioCodec = KSYAudioCodec_AT_AAC;
//带宽估计模式(网络自适应)
_kit.streamerBase.bwEstimateMode = KSYBWEstMode_Default;
//视频帧率最小值
_kit.streamerBase.videoMinFPS = 10;
//视频帧率最大值
_kit.streamerBase.videoMaxFPS = 25;
//视频的帧率
_kit.videoFPS = 20;
//视频编码最高码率
_kit.streamerBase.videoMaxBitrate = 1024;
//视频编码起始码率
_kit.streamerBase.videoInitBitrate = _kit.streamerBase.videoMaxBitrate*6/10;
//视频编码最低码率
_kit.streamerBase.videoMinBitrate = 0;
//音频编码码率
_kit.streamerBase.audiokBPS = 64;
//最大重连次数
_kit.maxAutoRetry = 3;
_capFlag = 0;
self.view.backgroundColor = [UIColor whiteColor];
[self setupUI];
}

- (void)setupUI{
ctrlView = [[KSYUIView alloc] initWithFrame:self.view.bounds];
@WeakObj(self);
ctrlView.onBtnBlock = ^(id sender){
[selfWeak onBtn:sender];
};

- (void)setupUI {
[super setupUI];
// top view
selectFileBtn = [ctrlView addButton:@"选择背景图片"];
quitBtn = [ctrlView addButton:@"退出"];
_streamState = [ctrlView addLable:@"空闲状态"];
_streamState.textColor = [UIColor redColor];
_streamState.textAlignment = NSTextAlignmentCenter;

// bottom view
captureBtn = [ctrlView addButton:@"开始预览"];
streamBtn = [ctrlView addButton:@"开始推流"];

_streamState.hidden = YES;
captureBtn.hidden = YES;
streamBtn.hidden = YES;

[self.view addSubview:ctrlView];

selectFileBtn = [self.ctrlView addButton:@"选择背景图片"];
[self layoutUI];
}

- (void)layoutUI{
ctrlView.frame = self.view.frame;
[ctrlView layoutUI];
[ctrlView putRow:@[selectFileBtn, [UIView new], quitBtn]];

ctrlView.yPos = self.view.frame.size.height - 30;
[ctrlView putRow:@[captureBtn, _streamState, streamBtn]];
- (void)layoutUI {
[super layoutUI];
self.ctrlView.yPos = CGRectGetMaxY(self.quitBtn.frame) + 4;
UIView * v = [[UIView alloc] init];
[self.ctrlView putRow3:selectFileBtn and:v and:v];
}

- (void)onBtn:(UIButton *)btn{
- (void)onBtn:(UIButton *)btn {
[super onBtn:btn];
if (btn == selectFileBtn){
[self onSelectFile];
}else if (btn == captureBtn) {
[self onCapture];
}else if (btn == streamBtn){
[self onStream];
}else if (btn == quitBtn){
[self onQuit];
}
}

- (void)onSelectFile{
- (void)onSelectFile {
//从相册获取照片
UIImagePickerController *picker = [[UIImagePickerController alloc]init];
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
Expand All @@ -150,71 +59,42 @@ - (void)onSelectFile{
-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingImage:(UIImage *)image
editingInfo:(NSDictionary *)editingInfo {
if(image == nil) {
[picker dismissViewControllerAnimated:YES completion:nil];
return;
}
_streamState.hidden = NO;
captureBtn.hidden = NO;
streamBtn.hidden = NO;
if (_kit.bgPic){
[_kit.bgPic removeAllTargets];
_kit.bgPic = nil;
if(image != nil) {
[self.kit updateBgpImage:image];
}
//设置输出图像的像素格式
_kit.bgPic = [[GPUImagePicture alloc] initWithImage:image];
_kit.gpuOutputPixelFormat = kCVPixelFormatType_32BGRA;
//校正图片朝向
_kit.bgPicRotate = [[_kit class] getRotationMode:image];
if (image.imageOrientation == UIImageOrientationLeft || image.imageOrientation == UIImageOrientationRight){
_kit.previewDimension = CGSizeMake(_kit.bgPic.outputImageSize.height, _kit.bgPic.outputImageSize.width);
}else{
_kit.previewDimension = _kit.bgPic.outputImageSize;
}
//推流过程中切换图片
if (_capFlag == 0) {
_capFlag = 1;
//开始预览(启动推流前必须开始预览)
[_kit startPreview:self.view];
}
//开启视频配置和采集
[_kit startVideoCap];
[picker dismissViewControllerAnimated:YES completion:nil];
}

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissViewControllerAnimated:YES completion:nil];
}

- (void)onCapture{
if (!_capFlag){
_capFlag = 1;
[_kit startPreview:self.view];

- (void)onCapture {
if ( ! self.kit.bgPic){
UIImage* img = [UIImage imageNamed:@"bgp"];
if (img) {
[self.kit updateBgpImage:img];
}
}
else {
_capFlag = 0;
[_kit stopPreview];
}
}
- (void)onStream{
if (_kit.streamerBase.streamState == KSYStreamStateIdle ||
_kit.streamerBase.streamState == KSYStreamStateError) {
[_kit.streamerBase startStream:_url];
self.captureBtn.selected = !self.captureBtn.selected;
if (self.captureBtn.selected){
[self.kit startBgpPreview:self.bgView];
}
else {
[_kit.streamerBase stopStream];
[self.kit stopPreview];
}
}
- (void)onQuit{
[self removeObserver];
[_kit stopPreview];
_kit = nil;
[self dismissViewControllerAnimated:YES completion:nil];
self.profilePicker.hidden = self.captureBtn.selected;
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
- (void)onStream {
if (self.kit.streamerBase.streamState == KSYStreamStateIdle ||
self.kit.streamerBase.streamState == KSYStreamStateError) {
[self.kit startBgpStream:self.url];
}
else { //停止推流
[self.kit stopBgpStream];
}
}

- (BOOL)shouldAutorotate {
Expand Down
18 changes: 11 additions & 7 deletions demo/KSYLiveDemo/KSYDemoUI/KSYBrushStreamerVC.m
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,17 @@ - (void)layoutUI{
if (self.ctrlView == nil || _drawBtn == nil) {
return;
}
self.ctrlView.yPos = 55;
self.ctrlView.yPos = CGRectGetMaxY(self.quitBtn.frame) + 4;
[self.ctrlView putRow:@[_drawBtn, [UIView new]]];
int hgt = self.view.frame.size.height;
int wdt = self.view.frame.size.width;
_drawView.frame = CGRectMake(0, 0.15*hgt, wdt, 0.75*hgt);
int hgt = self.ctrlView.frame.size.height;
int wdt = self.ctrlView.frame.size.width;
int offset = self.bgView.frame.origin.y;
_drawView.frame = CGRectMake(0, 0.15*hgt+offset, wdt, 0.75*hgt);

weakObj(self); // update layer on view update
_drawView.viewUpdateCallback = ^{
[selfWeak.brushKit.drawPic update];
};
}

- (void)viewWillAppear:(BOOL)animated{
Expand All @@ -56,7 +62,7 @@ - (void)viewWillAppear:(BOOL)animated{
_brushKit.videoOrientation = [[UIApplication sharedApplication] statusBarOrientation];
[_brushKit setupFilter:self.curFilter];
//启动预览
[_brushKit startPreview:self.view];
[_brushKit startPreview:self.bgView];
}
}

Expand All @@ -66,11 +72,9 @@ - (void)onBtn:(UIButton *)btn{
_drawBtn.selected = !_drawBtn.selected;
if (_drawBtn.selected) { // 启动画板
_brushKit.drawPic = [[KSYGPUViewCapture alloc] initWithView:_drawView];
[_brushKit.drawPic start];
_drawView.hidden = NO;
}
else { //停止画板
[_brushKit.drawPic stop];
_brushKit.drawPic = nil;
_drawView.hidden = YES;
[_drawView clearAllPath];
Expand Down
4 changes: 4 additions & 0 deletions demo/KSYLiveDemo/KSYDemoUI/KSYCollectionView.m
Original file line number Diff line number Diff line change
Expand Up @@ -71,5 +71,9 @@ - (void)layoutUI{
[self putRow3:_btn0
and:[UIView new]
and:[UIView new]];
self.btnH = 100;
self.gap = 0;
self.yPos = self.height - self.btnH;
[self putRow1:_collectionView];
}
@end
6 changes: 4 additions & 2 deletions demo/KSYLiveDemo/KSYDemoUI/KSYHorScreenStreamerVC.m
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ - (void)setupUI{
_text.backgroundColor = [UIColor lightGrayColor];
_text.text = @"Comments";
_text.hidden = YES;

self.bgView.backgroundColor = [UIColor whiteColor];
CGFloat wdt = self.view.frame.size.width;
_preView = [[UIView alloc] initWithFrame:CGRectMake(0, 75, wdt, wdt * 9 / 16)];
CGFloat offset = CGRectGetMaxY(self.quitBtn.frame) + 4;
offset += self.bgView.frame.origin.y;
_preView = [[UIView alloc] initWithFrame:CGRectMake(0, offset, wdt, wdt * 9.0 / 16)];
[self.view addSubview:_preView];
_preView.hidden = YES;
self.profilePicker.hidden = YES;
Expand Down
Loading

0 comments on commit 223083d

Please sign in to comment.