17 Commits

Author SHA1 Message Date
AFathi 57381fd1f6 Improved Performance 2017-11-07 14:21:29 -05:00
AFathi 5a1fbe1b9a Improved Performance 2017-11-07 13:49:24 -05:00
AFathi a4c8c8b0cc Improved Performance 2017-11-07 13:49:03 -05:00
Ahmed Fathi Bekhit d618b3a570 Update README.md 2017-11-07 11:24:53 -05:00
Ahmed Fathi Bekhit c3fef201d8 Update README.md 2017-11-06 23:55:09 -05:00
Ahmed Fathi Bekhit a75a1e0895 Update README.md 2017-11-06 19:21:53 -05:00
Ahmed Fathi Bekhit 1544362fda Update README.md 2017-11-06 12:51:27 -05:00
AFathi 382192ce36 Updated README 2017-11-06 12:49:45 -05:00
AFathi 0d493645df Updated README 2017-11-06 12:49:14 -05:00
Ahmed Fathi Bekhit 8b1148ca81 Update README.md 2017-11-05 21:40:50 -05:00
AFathi bb5c31bf7b v. 1.04 2017-11-05 21:22:16 -05:00
AFathi daa7bcd7b4 v. 1.04 2017-11-05 21:18:54 -05:00
Ahmed Fathi Bekhit c976195885 Update README.md 2017-11-05 21:15:55 -05:00
AFathi 3645199f11 v. 1.04 2017-11-05 21:12:24 -05:00
AFathi c13a4c8e98 v. 1.04 2017-11-05 21:11:24 -05:00
AFathi 5efb1993c3 v. 1.03 2017-11-05 20:51:04 -05:00
AFathi 580235926b v. 1.02 2017-11-05 20:42:30 -05:00
12 changed files with 140 additions and 65 deletions
-1
View File
@@ -1 +0,0 @@
echo "4.0" > .swift-version
+8 -8
View File
@@ -8,8 +8,8 @@
/* Begin PBXBuildFile section */
FB2E368C1FAE2A510035B8D6 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = FB2E368B1FAE2A510035B8D6 /* LICENSE */; };
FB2E37A71FAFE6B00035B8D6 /* ARVideoKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB2E37A61FAFE6AF0035B8D6 /* ARVideoKit.framework */; };
FB2E37A81FAFE6B00035B8D6 /* ARVideoKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FB2E37A61FAFE6AF0035B8D6 /* ARVideoKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
FBD3F1E11FB233CE00327054 /* ARVideoKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBD3F1E01FB233CE00327054 /* ARVideoKit.framework */; };
FBD3F1E21FB233CE00327054 /* ARVideoKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FBD3F1E01FB233CE00327054 /* ARVideoKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
FBDCC5E71FABDFC600E3184D /* Scene.sks in Resources */ = {isa = PBXBuildFile; fileRef = FBDCC5E51FABDFC500E3184D /* Scene.sks */; };
FBDCC5E81FABDFC600E3184D /* Scene.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBDCC5E61FABDFC500E3184D /* Scene.swift */; };
FBDCC60D1FABFE6A00E3184D /* SKViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBDCC60C1FABFE6A00E3184D /* SKViewController.swift */; };
@@ -28,7 +28,7 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
FB2E37A81FAFE6B00035B8D6 /* ARVideoKit.framework in Embed Frameworks */,
FBD3F1E21FB233CE00327054 /* ARVideoKit.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
@@ -37,7 +37,7 @@
/* Begin PBXFileReference section */
FB2E368B1FAE2A510035B8D6 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
FB2E37A61FAFE6AF0035B8D6 /* ARVideoKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ARVideoKit.framework; path = Framework/ARVideoKit.framework; sourceTree = "<group>"; };
FBD3F1E01FB233CE00327054 /* ARVideoKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ARVideoKit.framework; path = Framework/ARVideoKit.framework; sourceTree = "<group>"; };
FBDCC5E51FABDFC500E3184D /* Scene.sks */ = {isa = PBXFileReference; lastKnownFileType = file.sks; path = Scene.sks; sourceTree = "<group>"; };
FBDCC5E61FABDFC500E3184D /* Scene.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Scene.swift; sourceTree = "<group>"; };
FBDCC60C1FABFE6A00E3184D /* SKViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SKViewController.swift; sourceTree = "<group>"; };
@@ -56,7 +56,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
FB2E37A71FAFE6B00035B8D6 /* ARVideoKit.framework in Frameworks */,
FBD3F1E11FB233CE00327054 /* ARVideoKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -66,7 +66,7 @@
FB2E37781FAFD5C20035B8D6 /* Frameworks */ = {
isa = PBXGroup;
children = (
FB2E37A61FAFE6AF0035B8D6 /* ARVideoKit.framework */,
FBD3F1E01FB233CE00327054 /* ARVideoKit.framework */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -371,7 +371,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = TB37P94YA8;
DEVELOPMENT_TEAM = "";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
@@ -392,7 +392,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = TB37P94YA8;
DEVELOPMENT_TEAM = "";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0910"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FBED18C21FAFF52200D810BF"
BuildableName = "ARVideoKitLib.framework"
BlueprintName = "ARVideoKitLib"
ReferencedContainer = "container:ARVideoKit-Example.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FBED18C21FAFF52200D810BF"
BuildableName = "ARVideoKitLib.framework"
BlueprintName = "ARVideoKitLib"
ReferencedContainer = "container:ARVideoKit-Example.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FBED18C21FAFF52200D810BF"
BuildableName = "ARVideoKitLib.framework"
BlueprintName = "ARVideoKitLib"
ReferencedContainer = "container:ARVideoKit-Example.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="7Ze-pj-Xqd">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
@@ -9,10 +9,10 @@
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<!--SCNViewController-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController storyboardIdentifier="scnView" useStoryboardIdentifierAsRestorationIdentifier="YES" id="BYZ-38-t0r" customClass="ViewController" customModule="ARVideoKit_Example" customModuleProvider="target" sceneMemberID="viewController">
<viewController storyboardIdentifier="scnView" title="SCNViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="BYZ-38-t0r" customClass="ViewController" customModule="ARVideoKit_Example" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -176,10 +176,10 @@
</objects>
<point key="canvasLocation" x="53.600000000000001" y="133.5832083958021"/>
</scene>
<!--View Controller-->
<!--SKViewController-->
<scene sceneID="emy-Ex-RPU">
<objects>
<viewController storyboardIdentifier="skView" useStoryboardIdentifierAsRestorationIdentifier="YES" id="7Ze-pj-Xqd" customClass="SKViewController" customModule="ARVideoKit_Example" customModuleProvider="target" sceneMemberID="viewController">
<viewController storyboardIdentifier="skView" title="SKViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="7Ze-pj-Xqd" customClass="SKViewController" customModule="ARVideoKit_Example" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="ChF-2c-u6U">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -341,7 +341,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="9if-am-XF6" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="836" y="134"/>
<point key="canvasLocation" x="730" y="134"/>
</scene>
</scenes>
</document>
@@ -45,6 +45,9 @@ class SKViewController: UIViewController, ARSKViewDelegate, RenderARDelegate, Re
// Set the renderer's delegate
recorder?.renderAR = self
// Configure the renderer to perform additional image & video processing 👁
recorder?.onlyRenderWhileRecording = false
// Set the UIViewController orientations
recorder?.inputViewOrientations = [.landscapeLeft, .landscapeRight, .portrait]
@@ -44,6 +44,9 @@ class ViewController: UIViewController, ARSCNViewDelegate, RenderARDelegate, Rec
// Set the renderer's delegate
recorder?.renderAR = self
// Configure the renderer to perform additional image & video processing 👁
recorder?.onlyRenderWhileRecording = false
// Set the UIViewController orientations
recorder?.inputViewOrientations = [.landscapeLeft, .landscapeRight, .portrait]
-21
View File
@@ -1,21 +0,0 @@
Pod::Spec.new do |s|
s.name = "ARVideoKit"
s.version = "1.0"
s.summary = "Enabling developers to capture media with ARKit content."
s.description = "An iOS Framework that enables developers to capture videos 📹, photos 🌄, Live Photos 🎇, and GIFs 🎆 with ARKit content."
s.homepage = "https://github.com/AFathi/ARVideoKit"
s.screenshots = "http://www.ahmedbekhit.com/SK_PREV.gif"
s.author = { "Ahmed Bekhit" => "me@ahmedbekhit.com" }
s.license = { :type => "Apache License, Version 2.0", :file => "LICENSE" }
s.platform = :ios, "11.0"
s.source = { :http => "http://ahmedbekhit.com/ARVideoKit.zip" }
s.module_map = "ARVideoKit.framework/Modules/module.modulemap"
s.vendored_frameworks = "ARVideoKit.framework"
end
Binary file not shown.
Binary file not shown.
+27 -17
View File
@@ -1,19 +1,4 @@
Copyright 2017 Ahmed Fathi Bekhit - me@ahmedbekhit.com
ARVideoKit is licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Apache License
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
@@ -188,4 +173,29 @@ Apache License
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2017 Ahmed Fathi Bekhit - me@ahmedbekhit.com
ARVideoKit is licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+11 -12
View File
@@ -1,6 +1,8 @@
# ARVideoKit
An iOS Framework that enables developers to capture videos 📹, photos 🌄, Live Photos 🎇, and GIFs 🎆 with ARKit content.
In other words, you **NO LONGER** have to use *screen recording*/*screenshots* to capture ARKit videos 📹 and photos 🌄!
| Table of Contents | Description |
| ------------------ |:------------------:|
| [Documentation](https://github.com/AFathi/ARVideoKit/wiki) | Describes the configuration options `ARVideoKit` offers |
@@ -8,12 +10,12 @@ An iOS Framework that enables developers to capture videos 📹, photos 🌄, Li
| [Key Features](#key-features) | Lists the key features `ARVideoKit` offers |
| [Compatibility](#compatibility) | Describes the `ARVideoKit` device and iOS compatibality |
| [Example Project](#example-project) | Explains how to run the example project provided in this repository |
| [Installation](#installation) | Describes the [CocoaPods](#cocoapods) and [Manual](#manual) options to install `ARVideoKit` |
| [Installation](#installation) | Describes the [Manual](#manual) option to install `ARVideoKit` |
| [Implementation](#implementation) | Lists the [steps needed](#implementation), [notes](#note), and [reference](#youre-all-set-) for more options |
| [License](#license) | Describes `ARVideoKit` license |
## Preview
|[Initialized with SpriteKit](https://github.com/AFathi/ARVideoKit/wiki/RecordAR#init-arspritekitarskview)👇 ‍‍‍‍‍‍ ‍‍ ‍‍ ‍‍‍‍‍‍ |[Initialized with SceneKit](https://github.com/AFathi/ARVideoKit/wiki/RecordAR#init-arscenekitarscnview) 👇 ‍‍‍‍‍‍ ‍‍ ‍‍ ‍‍‍‍‍‍ |
|👾 [Initialized with SpriteKit](https://github.com/AFathi/ARVideoKit/wiki/RecordAR#init-arspritekitarskview)👇 ‍‍‍‍‍‍ ‍‍ ‍‍ ‍‍‍‍‍‍ |🚀 [Initialized with SceneKit](https://github.com/AFathi/ARVideoKit/wiki/RecordAR#init-arscenekitarscnview) 👇 ‍‍‍‍‍‍ ‍‍ ‍‍ ‍‍‍‍‍‍ |
|--------------|--------------|
![SpriteKit Preview](http://www.ahmedbekhit.com/SK_PREV.gif) ![SceneKit Preview](http://www.ahmedbekhit.com/SCN_PREVIEW.gif)
@@ -30,7 +32,7 @@ An iOS Framework that enables developers to capture videos 📹, photos 🌄, Li
✅ [Returns](https://github.com/AFathi/ARVideoKit/wiki/RecordAR#var-onlyrenderwhilerecordingbool) rendered and raw buffers in a [protocol](https://github.com/AFathi/ARVideoKit/wiki/RecordAR#var-renderarrenderardelegate) [method](https://github.com/AFathi/ARVideoKit/wiki/RenderARDelegate#func-framedidrender-buffercvpixelbuffer-with-timecmtime-using-rawbuffercvpixelbuffer) for additional Image & Video processing
## Compatibility
`ARVideoKit` is compatible on iOS devices that support both [`ARKit`](https://developer.apple.com/documentation/arkit) and [`Metal`](https://developer.apple.com/documentation/metal). Check Apple's [iOS Device Compatibility Reference](#) for more information.
`ARVideoKit` is compatible on iOS devices that support both [`ARKit`](https://developer.apple.com/documentation/arkit) and [`Metal`](https://developer.apple.com/documentation/metal). Check Apple's [iOS Device Compatibility Reference](https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html#//apple_ref/doc/uid/TP40013599-CH17-SW1) for more information.
`ARVideoKit` requires:
- iOS 11
@@ -39,16 +41,12 @@ An iOS Framework that enables developers to capture videos 📹, photos 🌄, Li
## Example Project
To try the example project, simply clone this repository and open `ARVideoKit-Example.xcodeproj` project file.
It's **recommended** to test `SKViewController` by assigning it as the initial view controller.
![is initial VC](http://ahmedbekhit.com/isinitialVC.png)
## Installation
### CocoaPods
Add this line to your `Podfile`
```
pod 'ARVideoKit'
```
_To install CocoaPods on your machine follow the [installation guide on their website](https://guides.cocoapods.org/using/getting-started.html)._
### Manual
Drag the `ARVideoKit.framework` file into your project then add ARVideoKit as an embedded binary of your targets.
Drag the `ARVideoKit.framework` file as an embedded binary of your project targets. `ARVideoKit.framework` can be found in the `/Framework/` folder of this repository.
![Tutorial](http://www.ahmedbekhit.com/arvideokit_install_new.gif)
## Implementation
1. `import ARVideoKit` in the application delegate `AppDelegate.swift` and a `UIViewController` with an `ARKit` scene.
@@ -114,10 +112,11 @@ Make sure you add the usage description of the `camera`, `microphone`, and `phot
<string>Audiovisual Recording</string>
```
![Info Plist Screenshot](http://www.ahmedbekhit.com/infoPlistUsage.png)
### You're all set. 🤓
Check [`RecordAR`](https://github.com/AFathi/ARVideoKit/wiki/RecordAR) documentation for more options!
## [License](#)
## [License](LICENSE)
Copyright 2017 Ahmed Fathi Bekhit
`ARVideoKit` is licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at