NextLevel
は、iOS での統合、カスタマイズされたメディア キャプチャ、および画像ストリーミングを容易にするように設計された Swift カメラ システムです。統合では、オプションでAVFoundation
またはARKit
利用できます。
特徴 | |
---|---|
? | 「Vine のような」ビデオクリップの録画と編集 |
? | 写真のキャプチャ (RAW、JPEG、およびビデオ フレーム) |
? | カスタマイズ可能なジェスチャ インタラクションとインターフェイス |
? | ARKit 統合 (ベータ版) |
? | デュアル、広角、望遠、真の深度のサポート |
? | サポートされているハードウェアで調整可能なフレーム レート (つまり、高速/スロー モーション キャプチャ) |
? | 深度データ キャプチャのサポートとポートレート エフェクト マットのサポート |
? | ビデオズーム |
⚖ | ホワイトバランス、フォーカス、露出調整 |
? | フラッシュとトーチのサポート |
? | ミラーリングのサポート |
☀ | 低光量ブースト |
? | スムーズなオートフォーカス |
⚙ | 構成可能なエンコーディングと圧縮設定 |
? | シンプルなメディア キャプチャおよび編集 API |
? | 画像処理とCVのための拡張可能なAPI |
? | アニメーション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 カメラ ソフトウェア機能は、それぞれ Swift コンパイラ フラグUSE_ARKIT
とUSE_TRUE_DEPTH
を含めることで有効になります。
Apple は、ARKit または True Depth カメラ API にリンクし、それらを使用しないアプリを拒否します。
Cocoapod を使用する場合は、次のPodfile
追加するか、Xcode ビルド設定に追加することで、 -D USE_ARKIT
または-D USE_TRUE_DEPTH
を含めることができます。
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 {
//
}
} )
//..
}
ビデオは、Swift のメディア コード変換ライブラリである NextLevelSessionExporter を使用して処理することもできます。
「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
}
変更のためにバッファーを読み取るためのもう 1 つのオプションのフック、 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 の既存の録画機能とメディア管理を活用しながら、さまざまな新しいカメラ機能が有効になります。
ARKit 記録用に SceneKit からフレームをキャプチャしようとしている場合は、サンプル プロジェクトを確認してください。
ドキュメントはここで見つけることができます。ドキュメントは jazzy で生成され、GitHub-Pages でホストされます。
このプロジェクトが役立つと思われた場合は、次のレベルのステッカーをチェックしてください。
NextLevel はコミュニティです - 貢献や議論は大歓迎です!
NextLevel は MIT ライセンスに基づいて利用できます。詳細については、LICENSE ファイルを参照してください。