NextLevel
คือระบบกล้อง Swift ที่ออกแบบมาเพื่อการผสานรวมที่ง่ายดาย การบันทึกสื่อแบบกำหนดเอง และการสตรีมภาพใน iOS การบูรณาการสามารถเลือกใช้ AVFoundation
หรือ ARKit
ได้
คุณสมบัติ | |
---|---|
- | การบันทึกและตัดต่อคลิปวิดีโอ "Vine-like" |
- | จับภาพ (ดิบ, jpeg และเฟรมวิดีโอ) |
- | การโต้ตอบด้วยท่าทางและอินเทอร์เฟซที่ปรับแต่งได้ |
- | การรวม ARKit (เบต้า) |
- | เลนส์คู่, มุมกว้าง, เทเลโฟโต้ และรองรับความลึกที่แท้จริง |
- | อัตราเฟรมที่ปรับได้บนฮาร์ดแวร์ที่รองรับ (เช่น การจับภาพเคลื่อนไหวเร็ว/ช้า) |
- | รองรับการบันทึกความลึกและรองรับเอฟเฟกต์แนวตั้ง |
- | ซูมวิดีโอ |
สมดุลแสงขาว โฟกัส และการปรับค่าแสง | |
- | รองรับแฟลชและคบเพลิง |
- | การสนับสนุนการมิเรอร์ |
เพิ่มแสงน้อย | |
- | โฟกัสอัตโนมัติได้อย่างราบรื่น |
การตั้งค่าการเข้ารหัสและการบีบอัดที่กำหนดค่าได้ | |
- | API การจับและแก้ไขสื่ออย่างง่าย |
- | API ที่ขยายได้สำหรับการประมวลผลภาพและ CV |
- | ผู้สร้าง GIF แบบเคลื่อนไหว |
- | การจดจำใบหน้า การรับรู้ QR และบาร์โค้ด |
- | สวิฟท์ 5 |
ต้องการ Swift เวอร์ชันอื่นหรือไม่?
5.0
- กำหนดเป้าหมาย Podfile ของคุณเป็นรีลีสหรือมาสเตอร์ล่าสุด4.2
- กำหนดเป้าหมาย Podfile ของคุณไปที่สาขา swift4.2
# CocoaPods
pod "NextLevel" , "~> 0.16.3"
# Carthage
github "nextlevel/NextLevel" ~> 0.16 . 3
# Swift PM
let package = Package (
dependencies : [
. Package ( url : "https://github.com/nextlevel/NextLevel" , majorVersion : 0 )
]
)
หรือวางไฟล์ต้นฉบับ NextLevel หรือไฟล์โปรเจ็กต์ลงในโปรเจ็กต์ Xcode ของคุณ
คุณสมบัติซอฟต์แวร์ ARKit และ True Depth Camera ได้รับการเปิดใช้งานโดยมีการรวมแฟล็กคอมไพเลอร์ Swift USE_ARKIT
และ USE_TRUE_DEPTH
ตามลำดับ
Apple จะปฏิเสธแอปที่เชื่อมโยงกับ ARKit หรือ True Depth Camera API และจะไม่ใช้งานแอปเหล่านั้น
หากคุณใช้ Cocoapods คุณสามารถรวม -D USE_ARKIT
หรือ -D USE_TRUE_DEPTH
ไว้พร้อมกับการเพิ่ม Podfile
ต่อไปนี้ หรือโดยเพิ่มลงในการตั้งค่าบิวด์ Xcode ของคุณ
installer . pods_project . targets . each do | target |
# setup NextLevel for ARKit use
if target . name == 'NextLevel'
target . build_configurations . each do | config |
config . build_settings [ 'OTHER_SWIFT_FLAGS' ] = [ '$(inherited)' , '-DUSE_ARKIT' ]
end
end
end
ก่อนเริ่มต้น ตรวจสอบให้แน่ใจว่าได้เพิ่มคีย์การอนุญาตลงใน Info.plist
ของแอปของคุณแล้ว
< key >NSCameraUsageDescription key >
< string >Allowing access to the camera lets you take photos and videos. string >
< key >NSMicrophoneUsageDescription key >
< string >Allowing access to the microphone lets you record audio. string >
นำเข้าห้องสมุด
import NextLevel
ตั้งค่าการแสดงตัวอย่างกล้อง
let screenBounds = UIScreen . main . bounds
self . previewView = UIView ( frame : screenBounds )
if let previewView = self . previewView {
previewView . autoresizingMask = [ . flexibleWidth , . flexibleHeight ]
previewView . backgroundColor = UIColor . black
NextLevel . shared . previewLayer . frame = previewView . bounds
previewView . layer . addSublayer ( NextLevel . shared . previewLayer )
self . view . addSubview ( previewView )
}
กำหนดค่าเซสชันการจับภาพ
override func viewDidLoad ( ) {
NextLevel . shared . delegate = self
NextLevel . shared . deviceDelegate = self
NextLevel . shared . videoDelegate = self
NextLevel . shared . photoDelegate = self
// modify .videoConfiguration, .audioConfiguration, .photoConfiguration properties
// Compression, resolution, and maximum recording time options are available
NextLevel . shared . videoConfiguration . maximumCaptureDuration = CMTimeMakeWithSeconds ( 5 , 600 )
NextLevel . shared . audioConfiguration . bitRate = 44000
}
เริ่ม/หยุดเซสชันตามความเหมาะสม วิธีการเหล่านี้สร้างอินสแตนซ์ "เซสชัน" ใหม่สำหรับ 'NextLevel.shared.session' เมื่อถูกเรียก
override func viewWillAppear ( _ animated : Bool ) {
super . viewWillAppear ( animated )
NextLevel . shared . start ( )
// …
}
override func viewWillDisappear ( _ animated : Bool ) {
super . viewWillDisappear ( animated )
NextLevel . shared . stop ( )
// …
}
บันทึก/หยุดวิดีโอชั่วคราว
// record
NextLevel . shared . record ( )
// pause
NextLevel . shared . pause ( )
การแก้ไขและการสิ้นสุดเซสชันที่บันทึกไว้
if let session = NextLevel . shared . session {
//..
// undo
session . removeLastClip ( )
// various editing operations can be done using the NextLevelSession methods
// export
session . mergeClips ( usingPreset : AVAssetExportPresetHighestQuality , completionHandler : { ( url : URL ? , error : Error ? ) in
if let _ = url {
//
} else if let _ = error {
//
}
} )
//..
}
วิดีโอยังสามารถประมวลผลได้โดยใช้ NextLevelSessionExporter ซึ่งเป็นไลบรารีการแปลงรหัสสื่อใน Swift
'NextLevel' ได้รับการออกแบบมาเพื่อการวิเคราะห์บัฟเฟอร์ตัวอย่างและการปรับเปลี่ยนแบบกำหนดเองแบบเรียลไทม์ ควบคู่ไปกับชุดฟีเจอร์กล้องที่หลากหลาย
โปรดทราบว่าการแก้ไขที่ทำกับบัฟเฟอร์และส่งคืนให้กับ NextLevel อาจส่งผลต่ออัตราเฟรม
เปิดใช้งานการแสดงผลแบบกำหนดเอง
NextLevel . shared . isVideoCustomContextRenderingEnabled = true
ตะขอเสริมที่อนุญาตให้อ่าน sampleBuffer
เพื่อการวิเคราะห์
extension CameraViewController : NextLevelVideoDelegate {
// ...
// video frame processing
public func nextLevel ( _ nextLevel : NextLevel , willProcessRawVideoSampleBuffer sampleBuffer : CMSampleBuffer ) {
// Use the sampleBuffer parameter in your system for continual analysis
}
เบ็ดเสริมอื่นสำหรับการอ่านบัฟเฟอร์สำหรับการแก้ไข imageBuffer
นี่เป็นตำแหน่งที่แนะนำในการจัดเตรียมบัฟเฟอร์กลับไปที่ NextLevel สำหรับการบันทึก
extension CameraViewController : NextLevelVideoDelegate {
// ...
// enabled by isCustomContextVideoRenderingEnabled
public func nextLevel ( _ nextLevel : NextLevel , renderToCustomContextWithImageBuffer imageBuffer : CVPixelBuffer , onQueue queue : DispatchQueue ) {
// provide the frame back to NextLevel for recording
if let frame = self . _availableFrameBuffer {
nextLevel . videoCustomContextImageBuffer = frame
}
}
NextLevel จะตรวจสอบคุณสมบัตินี้เมื่อเขียนบัฟเฟอร์ไปยังไฟล์ปลายทาง ใช้ได้กับทั้งวิดีโอและภาพถ่ายด้วย capturePhotoFromVideo
nextLevel . videoCustomContextImageBuffer = modifiedFrame
NextLevel เดิมทีเป็นโปรเจ็กต์สุดสัปดาห์ซึ่งปัจจุบันได้เติบโตขึ้นเป็นชุมชนเปิดของผู้ชื่นชอบแพลตฟอร์มกล้อง ซอฟต์แวร์นี้มีองค์ประกอบพื้นฐานสำหรับการจัดการการบันทึกสื่อ การปรับแต่งอินเทอร์เฟซของกล้อง การปรับแต่งการโต้ตอบด้วยท่าทาง และการสตรีมภาพบน iOS ความสามารถเดียวกันนี้สามารถพบได้ในแอพเช่น Snapchat, Instagram และ Vine
เป้าหมายคือการจัดหารากฐานที่ดีสำหรับการบูรณาการอย่างรวดเร็ว (ทำให้โครงการก้าวไปสู่อีกระดับ) โดยให้มุ่งเน้นไปที่ฟังก์ชันการทำงานที่สำคัญที่สุด ไม่ว่าจะเป็นการประมวลผลภาพแบบเรียลไทม์ วิธีคอมพิวเตอร์วิทัศน์ ความเป็นจริงเสริม หรือการถ่ายภาพด้วยคอมพิวเตอร์ .
NextLevel จัดเตรียมส่วนประกอบสำหรับการจับภาพวิดีโอและภาพถ่าย ARKit ช่วยให้สามารถใช้คุณสมบัติใหม่ๆ ของกล้องได้หลากหลาย ในขณะเดียวกันก็ใช้ประโยชน์จากความสามารถในการบันทึกที่มีอยู่และการจัดการสื่อของ NextLevel
หากคุณกำลังพยายามจับภาพเฟรมจาก SceneKit สำหรับการบันทึก ARKit โปรดดูโปรเจ็กต์ตัวอย่าง
คุณสามารถค้นหาเอกสารได้ที่นี่ เอกสารถูกสร้างขึ้นด้วยความมีชีวิตชีวาและโฮสต์บน GitHub-Pages
หากคุณพบว่าโปรเจ็กต์นี้มีประโยชน์ ลองดูสติกเกอร์ระดับถัดไป
NextLevel เป็นชุมชน - ยินดีต้อนรับการมีส่วนร่วมและการสนทนา!
NextLevel มีให้บริการภายใต้ใบอนุญาต MIT โปรดดูไฟล์ LICENSE สำหรับข้อมูลเพิ่มเติม