GPUImage2 安裝和簡單使用

前言:發(fā)現(xiàn)網(wǎng)上GPUImage2的資源比較少,我最近又在使用這個庫,所以我就把我使用的情況總結(jié)下吧。需要的人自取哦!

首先感謝@Willie文章提供參考

安裝

1.pod安裝

傳送門
這個是英文版的村生。內(nèi)容如下

  • 下載GPUImage2.podspec文件下載地址(路徑與Podfle同層級)
  • Podfile中添加 pod 'GPUImage2', :podspec => './GPUImage2.podspec'
  • pod install
  • import GPUImage2

2.直接導入庫
原庫下載地址

@Willie文章導入 不同在于:不導入Source文件夾,其他一樣

如果需要更改庫的話饼丘,建議直接導入庫的方式使用

簡單使用


1.創(chuàng)建濾鏡視頻
do {

    camera = try Camera(sessionPreset: .vga640x480,
                        cameraDevice: nil,
                        location: .frontFacing,
                        captureAsYUV: true)

    
} catch {
    
    print(error)
    return
}
//磨皮 - 美白
let basicOperation = BilateralBlur()
basicOperation.distanceNormalizationFactor = 7
        
let brightnessAdjustment = BrightnessAdjustment()
brightnessAdjustment.brightness = 0.11

//顯示
renderView = RenderView(frame: view.bounds)
view.addSubview(renderView)

camera --> brightnessAdjustment --> basicOperation --> renderView
basicOperation --> self.videoOutput
2.獲取濾鏡后的視頻流
// 全局變量
videoOutput = RawDataOutput()
   
// 這里是修改源碼趁桃,增加的一個方法(修改見下3)     
videoOutput.dataAvailableCallbackSize = { [weak self] (videoData, framebuffer, cmtime) in
    
    guard let `self` = self else { return }
    
    let numberOfBytesPerRow = framebuffer.size.width
    let getData = Data(bytes: videoData)
    
    getData.withUnsafeBytes { (u8Ptr: UnsafePointer<UInt8>) -> Void in
        let rawPtr = UnsafeMutableRawPointer(mutating: u8Ptr)
        var pixelBuffer : CVPixelBuffer?;
        _ = CVPixelBufferCreateWithBytes(kCFAllocatorDefault,
                                         Int(framebuffer.size.width),
                                         Int(framebuffer.size.height),
                                         kCVPixelFormatType_32BGRA,
                                         rawPtr,
                                         Int(numberOfBytesPerRow*4), nil, nil, nil,
                                         &pixelBuffer);
        if pixelBuffer != nil {
            
            // 獲取到后,做點什么肄鸽?
            
        }
    }
}
3.修改RawDataOutput

一卫病、添加屬性

public var dataAvailableCallbackSize:(([UInt8], _ frameBuffer: Framebuffer, _ cmtime: CMTime) -> ())?

二、在newFramebufferAvailable方法最后面調(diào)用

var time: CMTime = CMTime(seconds: 0, preferredTimescale: 1000)
if let timestamp = framebuffer.timingStyle.timestamp {
    time = CMTime(value: timestamp.value, timescale: timestamp.timescale)
}
dataAvailableCallbackSize?(data, framebuffer, time)

三典徘、會出現(xiàn)藍色陰影蟀苛??逮诲?

修改文件中 GL_RGBAGL_BGRA

glReadPixels(0, 0, framebuffer.size.width, framebuffer.size.height, GLenum(GL_BGRA), GLenum(GL_UNSIGNED_BYTE), &data)
4.切換攝像頭帜平,修改 Camera

增加方法幽告,外部直接調(diào)用即可

public func switchCamera() {
    
    self.location = self.location == .backFacing ? .frontFacing : .backFacing;

}

修改原屬性 location

public var location:PhysicalCameraLocation {
    didSet {
        // TODO: Swap the camera locations, framebuffers as needed
        guard let newVideoInput = try? AVCaptureDeviceInput(device: location.device()!) else { return }
        
        self.captureSession.beginConfiguration()
        self.captureSession.removeInput(self.videoInput)
        self.captureSession.addInput(newVideoInput)
        self.captureSession.commitConfiguration()
        self.videoInput = newVideoInput
    }
}
5.視屏鏡像
     var captureConnection: AVCaptureConnection!
    for connection in videoOutput.connections {
        for port in connection.inputPorts {
            if (port as AnyObject).mediaType == AVMediaType.video {
                captureConnection = connection
                captureConnection.isVideoMirrored = location == .frontFacing
            }
        }
    }
    
    if captureConnection.isVideoOrientationSupported {
        captureConnection.videoOrientation = .portraitUpsideDown
    }

如果這個文章幫到了你,一定給我Star裆甩、點擊關注哦冗锁!

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嗤栓,隨后出現(xiàn)的幾起案子冻河,更是在濱河造成了極大的恐慌,老刑警劉巖茉帅,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叨叙,死亡現(xiàn)場離奇詭異,居然都是意外死亡担敌,警方通過查閱死者的電腦和手機摔敛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來全封,“玉大人,你說我怎么就攤上這事桃犬∩层玻” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵攒暇,是天一觀的道長土匀。 經(jīng)常有香客問我,道長形用,這世上最難降的妖魔是什么就轧? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮田度,結(jié)果婚禮上妒御,老公的妹妹穿的比我還像新娘。我一直安慰自己镇饺,他們只是感情好乎莉,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奸笤,像睡著了一般惋啃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上监右,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天边灭,我揣著相機與錄音,去河邊找鬼健盒。 笑死绒瘦,一個胖子當著我的面吹牛称簿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播椭坚,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼予跌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了善茎?” 一聲冷哼從身側(cè)響起券册,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垂涯,沒想到半個月后烁焙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡耕赘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年骄蝇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片操骡。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡九火,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出册招,到底是詐尸還是另有隱情岔激,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布是掰,位于F島的核電站虑鼎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏键痛。R本人自食惡果不足惜炫彩,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望絮短。 院中可真熱鬧江兢,春花似錦、人聲如沸戚丸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽限府。三九已至夺颤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胁勺,已是汗流浹背世澜。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留署穗,地道東北人寥裂。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓嵌洼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親封恰。 傳聞我的和親對象是個殘疾皇子麻养,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,985評論 3 119
  • 項目組件化诺舔、平臺化是技術公司的共同目標鳖昌,越來越多的技術公司推崇使用pod管理第三方庫以及私有組件,一方面使項目架構(gòu)...
    swu_luo閱讀 21,855評論 0 39
  • 為什么還沒開始就在假設結(jié)束,為什么明明喜歡對方卻要假裝不是那么喜歡褥赊,為什么要因為怕對方先離開所以選擇先提出分手糕档?...
    風中的少年就是我啊閱讀 263評論 0 2
  • 以前的我是那種不碰南墻不回頭的人,通過學習我懂得碰南墻是需要時間精力付出的拌喉!所以我采納一切提升我自己的建議和經(jīng)驗速那。
    hhxfklok閱讀 180評論 0 0
  • 我很久都沒有唱歌了,今天和家人還有朋友們一起玩尿背。之前一直都是爸爸他們在唱歌琅坡,我主要負責聽。 那現(xiàn)在就是我的主場了残家,...
    愛夢的我閱讀 171評論 0 0