This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2021-08-29
Channels
- # announcements (2)
- # beginners (17)
- # calva (3)
- # cljdoc (3)
- # cljsrn (7)
- # clojure (99)
- # clojure-europe (6)
- # clojurescript (18)
- # clojureverse-ops (2)
- # cryogen (1)
- # cursive (11)
- # datomic (2)
- # duct (6)
- # figwheel-main (2)
- # fulcro (3)
- # graalvm (2)
- # honeysql (1)
- # introduce-yourself (5)
- # leiningen (4)
- # meander (11)
- # membrane (14)
- # practicalli (1)
- # re-frame (4)
- # reagent (5)
- # rum (1)
- # shadow-cljs (17)
- # spacemacs (13)
- # tools-deps (6)
Membrane looks really interesting! I love the idea, but I'm trying to think through the tradeoffs of abstracting over the platforms for my use cases. For example, suppose I have a telestration application. The general idea is that users can play and pause video, put animations on a canvas, record their work, and export it to another video file. Here's an https://www.youtube.com/watch?v=T4CL7M_DyXI in action. It looks like there aren't video primitives in membrane yet? In the browser, it's fairly trivial to connect a video to a canvas element, use OpenGL to draw on that canvas, and then save it. It looks like to play video, I'd have to handle all the drawing at a fairly low level.
membrane also has a webgl backend, so it would be possible to mix and match
I’m on vacation at the moment, but I’ll try to take a look at your example soon.
Is the app primarily targeting the web, another platform, or multiple?
Right now the application is entirely on the web. But ideally, we'd have something that runs on desktop (Mac and Windows) and the web
ah ok. I’ve been looking at https://github.com/cnuernber/avclj for video on desktop
but haven’t implemented it yet
what are the options for drawing videos to canvas on the web? I thought that was more of a pain
It's pretty easy (a couple lines of code IIRC). The big win for us is being able to take separate canvases, feed them into a single canvas, and store that as a video. For example, there's a canvas with the video, and a canvas with the animations you want in the final telestrated video.
Being able to abstract the video/telestration piece across platforms would be huge, but we also have a fairly niche use case. Realistically, we'll probably end up with Electron in the short term
If canvas does what you want and you must support the web, that seems like a pretty good option. I think membrane might be more interesting if you didn’t need to support the web. Since the web options are so good, I’ve been focusing more on other platforms like desktop, mobile, and terminal.
If you wanted to try membrane anyway, I’d be happy to help make it work for you though.
That's useful to know, thank you. I suspect in the short- to medium-term, we'll use Electron because it's easy (esp. for the JS developers). My own interest was less business-case oriented, and more thinking through what I could use membrane for. Having an abstraction over desktop/mobile/web that is data-oriented and idiomatic in Clojure is something I've been looking for. Using React Native with ClojureScript is the closest thing for this right now. I'll work through the tutorial.
Sounds good, let me know if you have any questions, comments, or criticisms