bgayman / flipbook Goto Github PK
View Code? Open in Web Editor NEWA swift package for recording views
License: MIT License
A swift package for recording views
License: MIT License
Hi,
I am trying to create a recording with an animated map (powered by Mapbox, runs on Metal) in the background but the map isn't rendered at all.
What I am trying to render:
https://user-images.githubusercontent.com/650476/157033105-54f4a8ea-7274-4d62-89ff-ffe2a85b80f4.mp4
What FlipBook renders:
https://user-images.githubusercontent.com/650476/157033169-fb171864-99fc-4e3d-8105-8102b1d686b5.mov
Is this is a known limitation or a bug?
Could you please implement support for alpha transparency in the exported video?
Struggling to get this working with SwiftUI. Specifically, PKCanvasView. The code works, in the sense that I get a gif, but the gif is blank.
Can anyone help? I'd love some sample code showing this being used with SwiftUI views and/or PencilKit canvas views.
struct CanvasView: UIViewRepresentable {
@Binding var canvasView: PKCanvasView
let onSaved: () -> Void
@State var toolPicker = PKToolPicker()
@Binding var rendition: Rendition?
func makeUIView(context: Context) -> PKCanvasView {
canvasView.tool = PKInkingTool(.pen, color: .red, width: 10)
#if targetEnvironment(simulator)
canvasView.drawingPolicy = .anyInput
#endif
canvasView.delegate = context.coordinator
showToolPicker()
return canvasView
}
func updateUIView(_ uiView: PKCanvasView, context: Context) {
}
func makeCoordinator() -> Coordinator {
Coordinator(canvasView: $canvasView, onSaved: onSaved, rendition: $rendition)
}
func showToolPicker() {
toolPicker.setVisible(true, forFirstResponder: canvasView)
toolPicker.addObserver(canvasView)
canvasView.becomeFirstResponder()
}
}
class Coordinator: NSObject, PKCanvasViewDelegate {
var canvasView: Binding<PKCanvasView>
let onSaved: () -> Void
let flipBook = FlipBook()
var rendition: Binding<Rendition?>
init(canvasView: Binding<PKCanvasView>, onSaved: @escaping () -> Void, rendition: Binding<Rendition?>) {
self.canvasView = canvasView
self.onSaved = onSaved
self.rendition = rendition
}
func canvasViewDrawingDidChange(_ canvasView: PKCanvasView) {
if !canvasView.drawing.bounds.isEmpty {
onSaved()
}
}
func canvasViewDidBeginUsingTool(_ canvasView: PKCanvasView) {
configureFlipBook()
flipBook.startRecording(canvasView, completion: processGif)
}
func canvasViewDidEndUsingTool(_ canvasView: PKCanvasView) {
flipBook.stop()
}
func configureFlipBook() {
flipBook.assetType = .gif
flipBook.preferredFramesPerSecond = 30
// flipBook.shouldUseReplayKit = true
}
func processGif(result: Result<FlipBookAssetWriter.Asset, Error>) -> Void{
switch result {
case .success(let asset):
// Switch on the asset that's returned
switch asset {
case .gif(let url):
// Do something with the video
self.rendition.wrappedValue?.gifURL = url
print(url)
// We expect a video so do nothing for .livePhoto and .gif
case .livePhoto, .video:
break
}
case .failure(let error):
// Handle error in recording
print(error)
}
}
}
```
`
Can we save the Gif or Video as PNG?
I want to integrate this library into my AR app using an ARSCNView
. But right now when I record the view, the video is just black, the camera stream is nowhere to be seen. Is there any way to make it work?
Hi, amazing library. Really good job!
I had success using it to record animation of the view. Now I want to see how to record video from AVPlayerLayer in background.
What do you recommend I can use?
I saw there is something called shouldUseReplayKit
is that what I need?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.