Skip to content

Commit 9579341

Browse files
author
RenZhu Macro
committed
Update readme.
1 parent b24e19f commit 9579341

File tree

5 files changed

+99
-28
lines changed

5 files changed

+99
-28
lines changed

Examples/SimpleFourSquareVideo/SimpleFourSquareVideo/ViewController.swift

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,13 @@ class ViewController: UIViewController {
3737
let backgroundFrame = self.renderView.frame
3838
let backgroundSize = CGSize(width: backgroundFrame.size.width * 1.5,
3939
height: backgroundFrame.size.height * 1.5)
40-
MetalVideoProcessBackground.canvasSize = backgroundSize
41-
40+
MetalVideoProcessBackground.canvasSize = backgroundSize
4241

4342
let transform1 = MetalVideoProcessTransformFilter()
4443
let transform2 = MetalVideoProcessTransformFilter()
4544
let transform3 = MetalVideoProcessTransformFilter()
4645
let transform4 = MetalVideoProcessTransformFilter()
47-
48-
49-
50-
46+
5147
transform1.stretchType = .aspectToFit
5248
transform1.roi = CGRect(x: 0.1, y: 0.1,
5349
width: 0.8,
@@ -83,49 +79,37 @@ class ViewController: UIViewController {
8379
player.addTarget(transform4, trackID: item4.trackID, targetTrackId: item4.trackID)
8480

8581
transform1.saveUniformSettings(forTimelineRange: item1.timeRange, trackID: item1.trackID)
86-
//
82+
8783
transform2.saveUniformSettings(forTimelineRange: item2.timeRange, trackID: item2.trackID)
88-
//
84+
8985
transform3.saveUniformSettings(forTimelineRange: item3.timeRange, trackID: item3.trackID)
90-
//
86+
9187
transform4.saveUniformSettings(forTimelineRange: item4.timeRange, trackID: item4.trackID)
9288

9389
let layer1 = MetalVideoProcessBlendFilter()
9490

9591
background --> layer1
9692
transform1 --> layer1
97-
98-
// layer1.saveUniformSettings(forTimelineRange: item1.timeRange, trackID: item1.trackID)
9993

10094
let layer2 = MetalVideoProcessBlendFilter()
10195

10296
layer1 --> layer2
10397
transform2 --> layer2
104-
//
105-
// layer2.saveUniformSettings(forTimelineRange: item2.timeRange, trackID: item2.trackID)
106-
//
98+
10799
let layer3 = MetalVideoProcessBlendFilter()
108100

109101
layer2 --> layer3
110102
transform3 --> layer3
111-
// layer3.saveUniformSettings(forTimelineRange: item3.timeRange, trackID: item3.trackID)
112-
103+
113104
let layer4 = MetalVideoProcessBlendFilter()
114105

115106
layer3 --> layer4
116107
transform4 --> layer4
117-
// layer4.saveUniformSettings(forTimelineRange: item4.timeRange, trackID: item4.trackID)
118-
//
119-
108+
120109
self.progress.minimumValue = 0.0
121110
self.progress.maximumValue = Float(playerItem.duration.seconds)
122-
123111

124-
125112
layer4 --> renderView
126-
// layer3 --> self.renderView
127-
// transform1 --> self.renderView
128-
129113
self.player = player
130114
self.player?.playerDelegate = self
131115

Examples/SimpleVideoExport/SimpleVideoExport/ViewController.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,7 @@ class ViewController: UIViewController {
6868
transform1.saveUniformSettings(forTimelineRange: item1.timeRange, trackID: item1.trackID)
6969

7070
transform2.saveUniformSettings(forTimelineRange: item2.timeRange, trackID: item2.trackID)
71-
72-
73-
74-
71+
7572
let layer1 = MetalVideoProcessBlendFilter()
7673

7774
videoBackground --> layer1

README.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,93 @@
11
# MetalVideoProcess
22
MetalVideoProcess is a High-Performance video effects processing framework. It's base on GPUImage3 & Cabbage with AVFoundation, support asynchronous and multithread processing.
33

4+
## Technical requirements
5+
6+
- Swift 5.0
7+
- Xcode 10.2 or higher on Mac or iOS
8+
- iOS: 11.0 or higher
9+
- OSX: 10.11 or higher
10+
11+
12+
13+
## General architecture
14+
15+
MetalVideoProcess is built on GPUImage3 & Cabbage. We extend the rendering pipeline in gpuimage3 to adapt the rendering output of one to many targets, so as to realize the rendering of multiple video clips.
16+
17+
![Layer](/Users/renzhumacro/Documents/github/MetalVideoProcess/Readme/Layer.png)
18+
19+
20+
21+
Architecture design of video transition:
22+
23+
24+
25+
![videoTransitionDesign](/Users/renzhumacro/Documents/github/MetalVideoProcess/Readme/videoTransitionDesign.png)
26+
27+
28+
29+
## Getting Started
30+
31+
Compile& import Framework
32+
33+
```swift
34+
import MetalVideoProcess
35+
```
36+
37+
38+
39+
## How to use
40+
41+
```swift
42+
let asset1 = AVAsset(url: Bundle.main.url(forResource: "test", withExtension: "mp4")!)
43+
let item1 = MetalVideoEditorItem(asset: asset1)
44+
45+
do {
46+
let editor = try MetalVideoEditor(videoItems: [item1])
47+
let playerItem = editor.buildPlayerItem()
48+
let player = try MetalVideoProcessPlayer(playerItem: playerItem)
49+
50+
let beautyFilter1 = MetalVideoProcessBeautyFilter()
51+
player -- > beautyFilter1 --> renderView
52+
self.player = player
53+
self.player?.playerDelegate = self
54+
55+
} catch {
56+
debugPrint("init error")
57+
}
58+
```
59+
60+
61+
62+
## Sample
63+
64+
**SimpleFourSquareVideo**
65+
66+
iOS/Examples/SimpleFourSquareVideo
67+
68+
69+
70+
**SimpleRealtimeFilterPlayback**
71+
72+
iOS/Examples/SimpleRealtimeFilterPlayback
73+
74+
75+
76+
**SimpleVideoExport**
77+
78+
iOS/Examples/SimpleVideoExport
79+
80+
81+
82+
**SimpleVideoEditor**
83+
84+
iOS/Examples/SimpleVideoEditor
85+
86+
87+
88+
**SimpleVideoTransition**
89+
90+
iOS/Examples/SimpleVideoTransition
91+
92+
93+

Readme/Layer.png

191 KB
Loading

Readme/videoTransitionDesign.png

125 KB
Loading

0 commit comments

Comments
 (0)