LPBeautySetVC.m 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. //
  2. // LPBeautySetVC.m
  3. // zhimi
  4. //
  5. // Created by 张灿 on 2019/1/17.
  6. // Copyright © 2019年 caiPro. All rights reserved.
  7. //
  8. #import "LPBeautySetVC.h"
  9. #import "FUCamera.h"
  10. #import "PFAPIDemoBar.h"
  11. #import "PFDateHandle.h"
  12. #include <PixelFree/SMPixelFree.h>
  13. #import <AgoraRtcEngineKit/AgoraRtcEngineKit.h>
  14. @interface LPBeautySetVC()<PFAPIDemoBarDelegate,FUCameraDelegate,AgoraRtcEngineDelegate>
  15. @property (nonatomic, strong) AgoraRtcEngineKit *agoraKit;
  16. @property (nonatomic,strong) AgoraRtcVideoCanvas *localCanvas;
  17. @property (nonatomic, strong) AgoraRtcVideoCanvas *videoCanvas;
  18. @property (nonatomic, strong) FUCamera *mCamera; //Faceunity Camera
  19. @end
  20. @implementation LPBeautySetVC
  21. @synthesize consumer;
  22. - (BOOL)prefersStatusBarHidden
  23. {
  24. return YES;
  25. }
  26. - (void)viewWillAppear:(BOOL)animated{
  27. [super viewWillAppear:animated];
  28. [self.mCamera startCapture];
  29. }
  30. - (AgoraVideoBufferType)bufferType {
  31. return AgoraVideoBufferTypePixelBuffer;
  32. }
  33. - (BOOL)shouldInitialize {
  34. return YES;
  35. }
  36. - (void)shouldStart {
  37. [self.mCamera startCapture];
  38. }
  39. - (void)shouldStop {
  40. [self.mCamera stopCapture];
  41. }
  42. - (void)shouldDispose {
  43. }
  44. - (void)viewDidLoad {
  45. [super viewDidLoad];
  46. self.view.backgroundColor = [UIColor blackColor];
  47. UIView *localView = [[UIView alloc]initWithFrame:self.view.bounds];
  48. [self.view addSubview:localView];
  49. self.agoraKit = [AgoraRtcEngineKit sharedEngineWithAppId:[LCSaveData getAgoraID] delegate:self];
  50. NSLog(@"version is %@",[AgoraRtcEngineKit getSdkVersion]);
  51. AgoraVideoEncoderConfiguration *configuration =
  52. [[AgoraVideoEncoderConfiguration alloc]
  53. initWithSize:AgoraVideoDimension840x480
  54. frameRate:AgoraVideoFrameRateFps15 bitrate:AgoraVideoBitrateCompatible
  55. orientationMode:AgoraVideoOutputOrientationModeAdaptative];
  56. [self.agoraKit setVideoEncoderConfiguration:configuration];
  57. [self.agoraKit enableVideo];
  58. [self.agoraKit setVideoSource:self];
  59. [self.agoraKit setChannelProfile:AgoraChannelProfileLiveBroadcasting];
  60. [self.agoraKit setClientRole:AgoraClientRoleBroadcaster];
  61. //add by Elon Musk 修复视频镜像问题
  62. [self.agoraKit setLocalVideoMirrorMode:AgoraVideoMirrorModeDisabled];
  63. [self.agoraKit enableWebSdkInteroperability:YES];
  64. AgoraRtcVideoCanvas *videoCanvas = [[AgoraRtcVideoCanvas alloc] init];
  65. videoCanvas.uid = 0;
  66. videoCanvas.view = localView;
  67. videoCanvas.renderMode = AgoraVideoRenderModeHidden;
  68. self.localCanvas = videoCanvas;
  69. [self.agoraKit setupLocalVideo:videoCanvas];
  70. // [self.agoraKit startPreview];
  71. // //设置默认曝光度
  72. [self.mCamera setExposureValue:0];
  73. [self.mCamera startCapture];
  74. //
  75. self.videoFilter = [FBEffectManager shareManager];
  76. if ([isSDKInit isEqual: @"初始化失败"]) {
  77. [[FaceBeauty shareInstance] initFaceBeauty:FaceBeauty_APP_ID withDelegate:self];
  78. }
  79. [[FBUIManager shareManager] loadToWindowDelegate:self];
  80. [[FBUIManager shareManager] showBeautyView];
  81. [self setupUI];
  82. }
  83. #pragma mark - FUCameraDelegate
  84. bool isNeeded2 = YES;
  85. -(void)didOutputVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer {
  86. if (isNeeded2) {
  87. isNeeded2 = !isNeeded2;
  88. return;
  89. }
  90. isNeeded2 = !isNeeded2;
  91. CVPixelBufferRef pixelBuffer = (CVPixelBufferRef)CMSampleBufferGetImageBuffer(sampleBuffer) ;
  92. CVPixelBufferLockBaseAddress(pixelBuffer, 0);
  93. CVPixelBufferRef pixelBuffer2 = [self.videoFilter processFrame:pixelBuffer];
  94. [self.consumer consumePixelBuffer:pixelBuffer2 withTimestamp:CMSampleBufferGetPresentationTimeStamp(sampleBuffer) rotation:AgoraVideoRotationNone];
  95. CVPixelBufferUnlockBaseAddress(pixelBuffer2, 0);
  96. }
  97. - (FUCamera *)mCamera {
  98. if (!_mCamera) {
  99. _mCamera = [[FUCamera alloc] init];
  100. _mCamera.delegate = self;
  101. }
  102. return _mCamera;
  103. }
  104. - (void)onInitFailure {
  105. isSDKInit = @"初始化失败";
  106. }
  107. - (void)onInitSuccess {
  108. isSDKInit = @"初始化成功";
  109. }
  110. - (void)setupUI{
  111. UIButton* backAction = [[UIButton alloc]initWithFrame:CGRectMake(15, 20, 40, 40)];
  112. if (Is_iPhoneX) {
  113. backAction.frame = CGRectMake(15, 45, 40, 40);
  114. }
  115. [backAction setTitle:@"取消" forState:(UIControlStateNormal)];
  116. [backAction setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
  117. [backAction addTarget:self action:@selector(backClick) forControlEvents:(UIControlEventTouchUpInside)];
  118. [self.view addSubview:backAction];
  119. }
  120. - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
  121. [self.view endEditing:YES];
  122. [[FBUIManager shareManager] showBeautyView];
  123. }
  124. - (void)backClick{
  125. [self.mCamera stopCapture];
  126. [self dismissViewControllerAnimated:YES completion:nil];
  127. }
  128. @end