NextLevel
adalah sistem kamera Swift yang dirancang untuk integrasi yang mudah, pengambilan media yang disesuaikan, dan streaming gambar di iOS. Integrasi secara opsional dapat memanfaatkan AVFoundation
atau ARKit
.
Fitur | |
---|---|
? | Perekaman dan pengeditan klip video “seperti Vine”. |
? | pengambilan foto (mentah, jpeg, dan bingkai video) |
? | interaksi dan antarmuka isyarat yang dapat disesuaikan |
? | Integrasi ARKit (beta) |
? | dukungan ganda, sudut lebar, telefoto, & kedalaman sebenarnya |
? | kecepatan bingkai yang dapat disesuaikan pada perangkat keras yang didukung (yaitu pengambilan gerakan cepat/lambat) |
? | dukungan pengambilan data mendalam & dukungan efek potret matte |
? | pembesaran video |
⚖ | keseimbangan putih, fokus, dan penyesuaian eksposur |
? | dukungan flash dan obor |
? | dukungan mirroring |
☀ | peningkatan cahaya rendah |
? | fokus otomatis yang mulus |
⚙ | pengaturan pengkodean dan kompresi yang dapat dikonfigurasi |
? | API pengambilan dan pengeditan media sederhana |
? | API yang dapat diperluas untuk pemrosesan gambar dan CV |
? | pembuat GIF animasi |
? | pengenalan wajah; pengenalan qr dan bar code |
? | Cepat 5 |
Butuh versi Swift yang berbeda?
5.0
- Targetkan Podfile Anda ke rilis atau master terbaru4.2
- Targetkan Podfile Anda ke cabang 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 )
]
)
Alternatifnya, letakkan file sumber atau file proyek NextLevel ke dalam proyek Xcode Anda.
Fitur perangkat lunak ARKit dan True Depth Camera diaktifkan dengan penyertaan flag compiler Swift masing-masing USE_ARKIT
dan USE_TRUE_DEPTH
.
Apple akan menolak aplikasi yang terhubung dengan ARKit atau True Depth Camera API dan tidak menggunakannya.
Jika Anda menggunakan Cocoapods, Anda dapat menyertakan -D USE_ARKIT
atau -D USE_TRUE_DEPTH
dengan tambahan Podfile
berikut atau dengan menambahkannya ke pengaturan build Xcode Anda.
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
Sebelum memulai, pastikan kunci izin telah ditambahkan ke Info.plist
aplikasi Anda.
< 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 >
Impor perpustakaan.
import NextLevel
Siapkan pratinjau kamera.
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 )
}
Konfigurasikan sesi pengambilan.
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
}
Memulai/menghentikan sesi bila perlu. Metode ini membuat instance "sesi" baru untuk 'NextLevel.shared.session' saat dipanggil.
override func viewWillAppear ( _ animated : Bool ) {
super . viewWillAppear ( animated )
NextLevel . shared . start ( )
// …
}
override func viewWillDisappear ( _ animated : Bool ) {
super . viewWillDisappear ( animated )
NextLevel . shared . stop ( )
// …
}
Rekam/jeda video.
// record
NextLevel . shared . record ( )
// pause
NextLevel . shared . pause ( )
Mengedit dan menyelesaikan sesi rekaman.
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 {
//
}
} )
//..
}
Video juga dapat diproses menggunakan NextLevelSessionExporter, perpustakaan transcoding media di Swift.
'NextLevel' dirancang untuk analisis buffer sampel dan modifikasi khusus secara real-time bersama dengan serangkaian fitur kamera yang kaya.
Sekadar catatan, modifikasi yang dilakukan pada buffer dan dikembalikan ke NextLevel berpotensi mempengaruhi kecepatan bingkai.
Aktifkan rendering khusus.
NextLevel . shared . isVideoCustomContextRenderingEnabled = true
Kait opsional yang memungkinkan pembacaan sampleBuffer
untuk analisis.
extension CameraViewController : NextLevelVideoDelegate {
// ...
// video frame processing
public func nextLevel ( _ nextLevel : NextLevel , willProcessRawVideoSampleBuffer sampleBuffer : CMSampleBuffer ) {
// Use the sampleBuffer parameter in your system for continual analysis
}
Kait opsional lainnya untuk membaca buffer untuk modifikasi, imageBuffer
. Ini juga merupakan tempat yang direkomendasikan untuk menyediakan buffer kembali ke NextLevel untuk perekaman.
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 akan memeriksa properti ini saat menulis buffer ke file tujuan. Ini berfungsi untuk video dan foto dengan capturePhotoFromVideo
.
nextLevel . videoCustomContextImageBuffer = modifiedFrame
NextLevel awalnya merupakan proyek akhir pekan yang kini telah berkembang menjadi komunitas terbuka penggemar platform kamera. Perangkat lunak ini menyediakan komponen dasar untuk mengelola perekaman media, penyesuaian antarmuka kamera, penyesuaian interaksi gestur, dan streaming gambar di iOS. Kemampuan yang sama juga dapat ditemukan di aplikasi seperti Snapchat, Instagram, dan Vine.
Tujuannya adalah untuk terus memberikan landasan yang baik untuk integrasi cepat (memungkinkan proyek dibawa ke tingkat berikutnya) – memungkinkan fokus ditempatkan pada fungsionalitas yang paling penting, baik itu pemrosesan gambar real-time, metode visi komputer, augmented reality, atau fotografi komputasi. .
NextLevel menyediakan komponen untuk menangkap video dan foto ARKit. Hal ini memungkinkan berbagai fitur kamera baru sambil memanfaatkan kemampuan perekaman dan manajemen media NextLevel yang ada.
Jika Anda mencoba mengambil bingkai dari SceneKit untuk perekaman ARKit, lihat contoh proyek.
Anda dapat menemukan dokumennya di sini. Dokumentasi dibuat dengan jazzy dan dihosting di GitHub-Pages.
Jika menurut Anda proyek ini bermanfaat, lihat stiker Tingkat Berikutnya.
NextLevel adalah sebuah komunitas – kontribusi dan diskusi dipersilakan!
NextLevel tersedia di bawah lisensi MIT, lihat file LISENSI untuk informasi lebih lanjut.