Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

MetalVideoProcess is a High-Performance video effects processing framework. It's base on GPUImage3 Metal, support asynchronous and multithread processing.

License

Notifications You must be signed in to change notification settings

GhostZephyr/MetalVideoProcess

Repository files navigation

MetalVideoProcess

MetalVideoProcess is a High-Performance video effects processing framework. It's base on GPUImage3 & Cabbage with AVFoundation, support asynchronous and multithread processing.

Technical requirements

  • Swift 5.0

  • Xcode 10.2 or higher on Mac or iOS

  • iOS: 11.0 or higher

  • OSX: 10.11 or higher

Features

  • Realtime smooth playback with filters
  • Support two video transitions
  • Support video motions
  • Video picture in picture
  • Transform video with multitouch
  • Support export video with H.265
  • Support video split, delete, insert, merge
  • High performance metal rendering

General architecture

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.

Layer

Architecture design of video transition:

videoTransitionDesign

Getting Started

Compile& import Framework

import MetalVideoProcess

How to use

let asset1 = AVAsset(url: Bundle.main.url(forResource: "test", withExtension: "mp4")!)
let item1 = MetalVideoEditorItem(asset: asset1)
do {
 let editor = try MetalVideoEditor(videoItems: [item1])
 let playerItem = editor.buildPlayerItem()
 let player = try MetalVideoProcessPlayer(playerItem: playerItem)
 let beautyFilter1 = MetalVideoProcessBeautyFilter()
 player -- > beautyFilter1 --> renderView
 self.player = player
 self.player?.playerDelegate = self
} catch {
	debugPrint("init error")
}

Sample

SimpleFourSquareVideo

iOS/Examples/SimpleFourSquareVideo

SimpleRealtimeFilterPlayback

iOS/Examples/SimpleRealtimeFilterPlayback

SimpleVideoExport

iOS/Examples/SimpleVideoExport

SimpleVideoEditor

iOS/Examples/SimpleVideoEditor

SimpleVideoTransition

iOS/Examples/SimpleVideoTransition

About

MetalVideoProcess is a High-Performance video effects processing framework. It's base on GPUImage3 Metal, support asynchronous and multithread processing.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /