项目作者: shogo4405

项目描述 :
Camera and Microphone streaming library via RTMP, HLS for iOS. Powered by GPUImage + HaishinKit.
高级语言: Swift
项目地址: git://github.com/shogo4405/GPUHaishinKit.swift.git
创建时间: 2017-01-14T06:19:27Z
项目社区:https://github.com/shogo4405/GPUHaishinKit.swift

开源协议:BSD 3-Clause "New" or "Revised" License

下载


[Archived]GPUHaishinKit.swift

Platform
Language
CocoaPods
GitHub license

  • GPUImage is unmaintained. Also can’t maintenance GPUHaishinKit. 7/14, 2018
  • GPUImage + HaishinKit(lf). Camera and Microphone streaming library via RTMP, HLS for iOS.

Features

Requirements

- iOS XCode Swift CocoaPods Carthage
1.2.0 8.0+ 8.3+ 4.0 1.2.0 0.20.0+
1.1.0 8.0+ 8.3+ 3.1 1.2.0 0.20.0+

Cocoa Keys

iOS10.0+

  • NSMicrophoneUsageDescription
  • NSCameraUsageDescription

Installation

CocoaPods

  1. source 'https://github.com/CocoaPods/Specs.git'
  2. use_frameworks!
  3. def import_pods
  4. pod 'GPUHaishinKit', '~> 1.2.0'
  5. end
  6. target 'Your Target' do
  7. platform :ios, '8.0'
  8. import_pods
  9. end

Carthage

  1. github "shogo4405/GPUHaishinKit.swift" ~> 1.2.0

License

BSD-3-Clause

RTMP Usage

  1. // must import HaishinKit and GPUHaishinKit
  2. import HaishinKit
  3. import GPUHaishinKit
  4. import GPUImage
  5. class ViewController: UIViewController {
  6. @IBOutlet weak var outputView: GPUImageView?
  7. var camera:GPUImageVideoCamera?
  8. var filter:GPUImageSepiaFilter?
  9. var rtmpConnection:RTMPConnection?
  10. var rtmpStream:RTMPStream?
  11. var output:GPUImageRawDataOutput!
  12. override func viewDidLoad() {
  13. super.viewDidLoad()
  14. camera = GPUImageVideoCamera(sessionPreset: AVCaptureSessionPreset1280x720, cameraPosition: .back)
  15. rtmpConnection = RTMPConnection()
  16. rtmpStream = RTMPStream(connection: rtmpConnection!)
  17. filter = GPUImageSepiaFilter()
  18. }
  19. override func viewWillAppear(_ animated: Bool) {
  20. super.viewWillAppear(animated)
  21. rtmpStream?.attachGPUImageVideoCamera(camera!)
  22. rtmpStream?.attachAudio(AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeAudio))
  23. rtmpStream?.videoSettings = [
  24. "width": 720,
  25. "height": 1280,
  26. ]
  27. camera?.addTarget(filter!)
  28. filter?.addTarget(outputView)
  29. filter?.addTarget(rtmpStream!.rawDataOutput)
  30. camera?.outputImageOrientation = .portrait
  31. camera?.startCapture()
  32. }
  33. override func viewWillDisappear(_ animated: Bool) {
  34. rtmpStream?.close()
  35. rtmpStream?.dispose()
  36. camera?.stopCapture()
  37. super.viewWillDisappear(animated)
  38. }
  39. }