I really enjoy technical how it's made blog posts, and I also enjoy elaborate desktop UI recreation web pages, so I made both for this project and I hope you like them. If you've got any comments or questions, I'll be pressing Cmd-R on this page.
That's some dedication...! (and definitely worth 5$)
EDIT: It seems like it doesn't work with DRM content. Or more accurately, Netflix refuses to work while it's running. Unfortunate, but expected (and not your fault).
> we knew we had to get with the times
There are already too many of us working on the web side of things! :p It's lovely to see someone crafting a fast native application instead of yet another electron app. Speaking of which, do you have any recommended literature for learning more about the things you're writing about?
I'm impressed by the CPU footprint. Shouldn't be a surprise as it's all hardware now but still great to see this which makes me comfortable let it running along.
Is there a way to change store path?
Also I changed hot key twice and seems both keys are in effect now.
RE: Two Hot Keys. Ruh-Roh. Thanks for the bug report. I'll investigate. EDIT: Will be fixed in next update. :) As a quick workaround, just quit and relaunch RetroClip and the old hotkey will be unbound, leaving just your new one active.
In that case, a symlink would work nicely: https://tinyapps.org/blog/mac/200805230700_change_imovie_sav...
For context I downloaded OBS as much like you I was playing Fortnite BR and getting tired of having only static screenshots showing my win. OBS is ok but a performance hog. So your program looks awesome except 60 seconds is to short, sometimes the awesome play I want to share took longer than 60 seconds..
Also I play using an egpu on a second monitor so I only want to record that monitor playing. No reason to record the monitor showing discord.
Edit: I see you recommended quicktime for videos over a minute but as you've mentioned that takes up way too much diskspace to just leave running while you're playing. So I'm really hoping for some more options on the recording length.
Personally I'd like to set it to 5 mins which is what I have it set at for OBS's replay buffer. I find its much easier to trim a video than it is to merge multiple videos together.
I guess what I'm really asking is what are the real downsides to giving the user custom duration controls. So long as you provide the appropriate warnings / dialogs in a text box underneath the selections (OBS does that)? It seems like that would only increase the utility of product.
TLDR: Awesome piece of software that I think would be made even better if you gave the user more flexibility with custom durations.
It's more just an objet d'art type thing, just this sort of stylized recursive, I dunno, joke thing. It was fun to make and for some reason Nick and I find the concept hilarious, but it's also ridiculous. When I told my family about it their response, to a person, was "but why?"
You're of course welcome to view source on the page and copy anything you like (it is just a web page after all), but if I was trying to market something serious, I would definitely do it differently.
Did you have to take care of that yourself?
Really neat project, by the way: I love seeing technically elegant solutions to these kinds of singular problems! Did you run into any Mac App Store sandboxing restrictions with respect to capturing the screen?
Thanks for your detailed writeup! I bought the app and am gonna use it!
I actually wrote my own streamer because I wasn't happy about the resources that OBS required. Some of the code from that streamer I ended up dusting off, repurposing, and improving to write RetroClip.
Now, it's been a while, so what I'm about to say may no longer apply to current versions of OBS, and my observations may have been wrong in the first place, but when I took a tour through the OBS codebase, I felt like it was maybe supporting too broad of a feature set and supporting too many platforms to be able to attain optimal performance. Like, I'm not trying to crap on it, as it's an incredibly impressive piece of software, I'm just saying that there seemed to be a lot of data copying, cross platform concerns, and extension points, and the pipeline for getting video in from the screen and then out to the network just had a lot of work along the way, work that could be avoided if your only goal was to run on macOS and send just the screen contents to twitch as fast as possible.
So I doubt that a micro-optimization like my cursor compositing hack is going to be of benefit to OBS. I did that to avoid doing any copies at all of the raw image data in code that I control, and I would guess getting to zero data copies in OBS would be a long journey. There's probably a lot of lower hanging fruit in terms of macOS specific optimizations that can be done first.
Do you have your streamer program posted on GitHub or something? I want it.
My understanding is that like 99% of the traffic on twitch is basically the top 0.1% of channels, and all of those streamers mostly just use dedicated streaming boxes or have super beefy PCs. The market for a bare bones feature set twitch streamer for people playing games on Mac laptops has got to be pretty small. Maybe it's just you and I. :) So, that's why I kinda lost interest in it.
In some version of reality, you run with this and go on to create a fantastically useful web-based desktop system and define a new category :)
Also, this is a pretty amazing technical accomplishment, and an incredibly well-written blog post. Huge kudos.
I definitely would recommend using ScreenFlow for capturing screencast type videos where the content is at least a little bit pre-meditated. It will let you crop the screen after the fact, pan around, and do all sorts of neat edits. It's really well done and worth the money. It might fit your use case better. I'm not affiliated with it any way, just a happy user.
Its nothing thats 'ever' predetermined to be shown, its all stuff thats either on demand, or 'how did you do that' rather quickly.
being able to just hit a button, after i did the 'thing' would be super beneficial.
I've sent them the link!
Now if retro clip could also record keystrokes* and mouse clicks that could be even more helpful.
* OK, maybe keystrokes is a security issue? Not sure.
They're geared towards gaming but I know NVs solution lets you enable desktop recording, not sure about AMD.
E.g. a webmail app, if I click a particular email I get an exception, when the programmer who is debugging the problem is viewing the video, he would see what the server logged a few seconds after I caused an XmlHttp request through my click..
Much easier to do something with the clip file, and you still have the easy (and perhaps better) option to watch it with QuickLook.
One trick is you can drag the icon from the QuickTime's window's title bar (or command click on it to reveal it in the Finder). Along with the ability to drag things while doing Cmd-Tab and Cmd-` that was added to macOS at some point, it makes it fairly easy to do drag and drop to other apps.
You can also use the Open Clips Folder menu item in the RetroClip menu.
Finally, you can also just disable the banner for RetroClip using the notification center system preferences and have it be stealth, just like screenshots are, and then just navigate to the ~/Movies/RetroClip folder in the Finder directly.
I like the mouse-pointer hack, I guess you could take it further by only adding it when the user wants to save the clips (and it gives the option of having no mouse pointer, or maybe hiding it around the time when the mouse is not moving or being clicked).
That being said, I could easily add a feature to record any other input device on the system, and then you can install the Soundflower kernel extension (or one of Rogue Amoeba's other excellent utilities) to create a loopback audio input device.
I always watch short video game replays with the audio off or on gfycat or whatever where there is no audio anyway, and for capturing bug reports or whatever I don't need audio either, so I didn't feel like I was missing much without audio for myself.
All that said, if the CoreAudio team would come to their senses and provide a userland API for doing system audio capture, I would definitely be on that.
i used to use annotate but it got abandoned when dropbox updates their api so i switched to monosnap since.
I've got ScreenFlow on Cmd-Shift-2 and now RetroClip on Cmd-Shift-5!
You should try Shadowplay or the equivalent from your GPU vendor :) Great job on the project.
That being said, what I like about the App Store, and I'm just getting my feet wet on this with RetroClip, is that I think it's easier for users to trust you on the App Store. The app sandbox gives people some confidence that an app is going to be well behaved, and if it isn't then Apple can always pull it from the store. That's not to say that our non-App Store stuff isn't well behaved, it absolutely is and we take it very seriously, but being in the App Store maybe makes it easier for users to have confidence in us.
I also think the in-app-purchase trial-ware model that a lot of developers (myself included) are starting to adopt on the Mac App Store makes a lot of sense to me. Even $5 is a lot to pay for software if you can't try it first, and I think that was a big problem early on with paid software in the Mac App Store.
It's also useful for software development. If I had a nickel for every time I got a screenshot in a bug report but incomplete repro steps, I could probably buy a sandwich. So being able to retroactively get a video of what happened can be super useful.
(Actually I just thought about jokes.)
My only criticism is it adds yet another menu bar item, but I understand the reasons why that can be useful (and apps like Bartender mitigate this somewhat)
As for 10.11, it probably would work if I just changed the target OS, but for a little side project I didn't feel like going through the trouble with testing 3 operating systems.
Like I said my knowledge of this stuff mostly dates back to mpeg2 days and I could have sworn the I frames were further apart, except on scene cuts.
I also checked the Console. Here's what I found:
default 19:55:42.767418 -0800 RetroClip GVA info: preferred scaler idx 1
default 19:55:42.769327 -0800 RetroClip AVD encoder error: kAVDPictureEncode CreateContext, unsupported resolution 5120 x 2880
default 19:55:42.808188 -0800 RetroClip Using metal device <BronzeMtlDevice: 0x7f80bf037200>
name = AMD Radeon R9 M395X
default 19:55:52.609993 -0800 RetroClip LSExceptions shared instance invalidated for timeout.
EDIT: Yeah, I'm pretty sure 3840x2400 is the max supported by any recent Intel CPUs, and older ones are less. The iMac Pro might be a special case because I hear it uses its GPU for H.264 encoding. Anyway, querying what the max is for a given machine and then scaling to fit it was an easy fix. Hopefully I can get it deployed to the app store soon.
I assume higher resolutions have a larger memory footprint. Is the RAM usage still reasonable at 3840x2400?
Thank you. I'll give it a try.
PS4 can record up to an hour, fyi.
$ codesign -d --entitlements - /Applications/RetroClip.app
??qq?<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">