NextLevel
هو نظام كاميرا Swift مصمم لسهولة التكامل والتقاط الوسائط المخصصة وتدفق الصور في iOS. يمكن للتكامل الاستفادة بشكل اختياري AVFoundation
أو ARKit
.
سمات | |
---|---|
؟ | تسجيل وتحرير مقاطع الفيديو "مثل Vine". |
؟ | التقاط الصور (الخام، وJPEG، وإطار الفيديو) |
؟ | التفاعل الإيمائي والواجهة القابلة للتخصيص |
؟ | تكامل ARKit (تجريبي) |
؟ | مزدوج، زاوية واسعة، تليفوتوغرافي، ودعم العمق الحقيقي |
؟ | معدل إطارات قابل للتعديل على الأجهزة المدعومة (أي التقاط حركة سريعة/بطيئة) |
؟ | دعم التقاط البيانات العميقة ودعم تأثيرات الصورة غير اللامعة |
؟ | تكبير الفيديو |
⚖ | توازن اللون الأبيض والتركيز وتعديل التعرض |
؟ | دعم الفلاش والشعلة |
؟ | دعم النسخ المتطابق |
☀ | تعزيز الإضاءة المنخفضة |
؟ | التركيز التلقائي السلس |
⚙ | إعدادات التشفير والضغط القابلة للتكوين |
؟ | واجهة برمجة تطبيقات بسيطة لالتقاط الوسائط وتحريرها |
؟ | واجهة برمجة التطبيقات القابلة للتوسيع لمعالجة الصور والسيرة الذاتية |
؟ | منشئ صور 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.
إذا وجدت هذا المشروع مفيدًا، فاطلع على ملصقات المستوى التالي.
NextLevel هو مجتمع – نرحب بالمساهمات والمناقشات!
NextLevel متاح بموجب ترخيص MIT، راجع ملف الترخيص لمزيد من المعلومات.