So this happened to me this week. I started a project in Resolve 15, got to a good stopping point, was waiting on client reviews before I could move forward, and figured I’d update to Resolve 16 while I wait on feedback. My bad. As soon as I opened up the new version 16, all my projects disappeared after updating Resolve.
Windows 10
After doing some serious digging and scouring every online resource I could find, I finally figured it out. In short, Resolve references your project database in a crazy long file path buried under AppData. This is your ACTIVE database directory. Resolve is always referencing this file path for all your projects. In my case, this directory was empty, resulting in my blank projects panel when I launched Resolve. The full file path is:
C:\Users\[your username]\AppData\Roaming\Blackmagic Design\ DaVinci Resolve\Support\Resolve Disk Database\Resolve Projects\
The Fix
To fix this, I found my projects in a similar, but different file path under ProgramData. Inside the following filepath, I found all my projects! Yay! They exist!
C:\ProgramData\Blackmagic Design\DaVinci Resolve\Support\Resolve Disk Database\Resolve Projects\
So all I did was copy everything inside the last folder \Resolve Projects\ and pasted inside my empty \AppData\ directory. That fixed it!
Here’s how to fix write permissions for DaVinci Resolve.
To fix this, just open a terminal and run:
chmod -R 766 /your/problem/drive/or/directory
What’s Going On?
On linux, security is brilliantly built in. By default, files and folders that you create have a set level of permissions (defined by the umask command). Typically, the default is the user (you) have permission to read and write files that you own, as well as search directories you own. All others have read-only access to your files and directories.
Knowing this, other applications (aka Resolve) do not have permission by default to write to hard drives, folders, or files that you (the user) own. So how do we change this?
chmod
To change permissions of a single file or a whole directory, use the chmod command. chmod gives you the ability to change permissions using short, 3-digit number formats. These are known as octal numbers.
Octal Number
Permissions
File Listing
7
read, write, and execute
rwx
6
read and write
rw-
5
read and execute
r-x
4
read only
r–
3
write and execute
-wx
2
write only
-w-
1
execute only
–x
0
none
—
So in the chmod command, you use the above table to define permissions for the file user/owner, members of the file group, and other people, in that order. The -R flag used in the code above, simply makes the command recursive, applying to every single file and folder inside the directory you apply the command to.
Examples
Readable by owner only: chmod 400 examplefile.txt
Allow the owner and group to read, write, and execute, and anyone else to read and write: chmod 776 examplefile.txt
Also, there’s an awesome tool for those of you, like me, who can’t keep all those chmod codes straight!
After this post made it to Twitter, @rohit_bmd made a great point- check Davinci Resolve > Preferences and under the Media Storage tab, you’ll see a list of drives on your system. Make sure you have read/write privileges on the drive at the very top of that list, because that’s where Resolve will be storing all your cache files. Here’s the the tab:
If you’re new to Resolve on Linux, feel free to check out my other posts.
Today I learned that you only have to transcode files to import them into the free version of Resolve. If you’re rocking the full version, then this shouldn’t really apply, unless you have an absolutely crazy file format on your hands.
Didn’t We Already Cover This?
So this stems off a previous blog post from a while back, where I was using ffmpeg to transcode some .MTS files (from a Panasonic/Sony camcorders similar to this) for use in Resolve on Linux. The code snippets from that post were okay… But not great. The biggest problem was that after transcoding, the file size often inflated… I mean DEFINITELY inflated. FFMPEG often defaults to the highest tier of quality in a given codec if you don’t take the time to specify exactly what you want.
ProRes
I really struggled with this because it’s easily argued that ProRes is the codec that is literally designed to be edited. So it’s great to just cut ProRes from the start, right? And I’ve been involved in a lot of professional workflows where the first step is to convert to ProRes. Sounds like a good idea. Except when you consider file size.
Recently, I’ve been getting lots of projects involving mass quantities of footage. Often times I’ll get 3-5 hours of footage, climbing up to 60GB for a single project. Keep doing projects like that and I’ll have to start an Amazon subscription to hard drives… So I’m not in a place where I can afford to transcode 60GB of .MTS into 240GB of ProRes.
MPEG4
Luckily Resolve takes codecs other than ProRes! So I experimented a bit trying to figure out how to transcode a ton of .MTS files into something that Resolve can read, but without inflating the file size to something that’s nearly unusable. After a bunch of trial and mostly error, I came up with a pretty good preset. I even saved it as a text file so I can reference it later and use it in bash scripts.
So here it is, mostly for my own reference so I can go back here and copy it again:
I’ve also tested this export setting with .MOV files that came from an iPhone and didn’t play natively with Resolve. I just converted them using the snippet above, and they played back perfectly in Resolve. Plus with the variable bitrate setting, the filesizes are VERY comparable to the original sizes. Often only off by a few megabytes.
Let’s locate files using the terminal! This is just a cool little trick you can use if you’re doing a bunch of stuff in the terminal, and you don’t want to leave, or you’re just interested in cool terminal tricks. Let’s say you’re looking for a file, anywhere on your machine, but you don’t know exactly where it is. You can install a very cool search package called mlocate (or merging locate).
Install
On Ubuntu/Debian you can run:
sudo apt-get install mlocate
Or if you’re on that Manjaro/Arch life:
sudo pacman -S mlocate
Syntax
To locate files in the terminal by using mlocate, just type:
locate [name of the file] [directory in which you want to start recursively searching]
If you’re using mlocate for the first time, it’s not gonna work just yet. mlocate is actually a pair of tool bundled into one. The other half of mlocate is called updatedb. So by running updatedb, you’re essentially creating/updating an index so that you can run your search. So any time you want to run a locate command and it’s not giving you the results you are expecting, there’s a good chance your index is outdated, so you can just run updatedb, then run your locate search again, and you should be good to go.
Update your junk by running updatedb then run locate [file] to get your mind blown!
Bonus Tip
If the results of your locate command are crazy long, like… CRAZY long…. too long to view everything in the terminal because your terminal only has a finite history, here’s a tip: You can print the results of ANY command to a text file and save it anywhere by using >. For example:
The above command will run a system-wide search for anything matching myfile.txt recursively from the root directory / and print the results to searchresults.txt on the Desktop.
Good luck and have fun! Now that you’ve found the file you’re looking for, perhaps you want to do something cool with it! If you wanna learn more cool stuff you can do in the terminal, check this out.
An incredible use case for simple Bash scripting is the ability to batch process ffmpeg tasks. First off, I’ll assume you guys have got a basic understanding of FFMPEG, what it is, how to install and use it, that kinda thing. If not, feel free to check out the basics. FFMPEG is absolutely amazing. It can convert a chicken sandwich to ProRes. So once you’ve got the basic single-file convert down, how do you batch convert?
Shell Scripts
This is new for me, and I’m happy to learn new stuff. So upon a basic introduction, shell scripting looks incredibly powerful. I’m easing my way into Python because Blender is written in Python, but apparently Python is something you can integrate into shell scripts as well, so all the better!
More good news, someone had the same issue as me, and got a pretty rad response on StackOverflow. The 2nd answer below the ‘correct’ one uses something called parameter expansion that I don’t really know a lot about. But from my limited understanding, I gather that it’s a way to take the existing filename and stick it on to the ffmpeg file export. So let’s say you have vacayFootage.avi that you want to convert to .mp4. Parameter expansion grabs the file name and sticks it onto the resulting export so you’ll get vacayFootage.mp4 without the hassle of having to name a thousand files by hand, each time you convert a file. So here’s an example of how you would batch process ffmpeg commands:
for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done
So like a true professional, I pasted that Stackoverflow answer into a shell script, modified the lines a bit to match my needs, and boom! It worked! I was able to convert about 500 files in just a few minutes with a single line of code… So awesome!
So Many Possibilities…
So with that fancy new script… and learning about how read is a cool Python command that can be used to collect user input… I’d love to write a shell script that can work for anyone. Just enter the directory where all your media is, choose your output options, select your output directory, and boom! Batch encodes for all! Gotta get on that… right after I learn Python.
I use Adobe CC on a Windows machine for my video production pipeline at work. I do video side work on the weekends, and have used Windows and Adobe for those projects as well, but I’ve always felt trapped. Like I’m a slave to Adobe or something. I’ve spent most of my professional career learning and using software like Premiere Pro, After Effects, and Photoshop.
Making the Switch
I’ve used Ubuntu a TON, as it’s a super popular distro, and it was my introduction to Linux. A few months back, I was checking out https://opendata.blender.org/ and noticed that a good chunk of data was coming from a distro called Manjaro, but I’d never heard of it. Shortly after seeing all that performance data, I decided to give Manjaro a shot. After some basic research, I discovered Manjaro is actually based on Arch (unlike Ubuntu, based on Debian).
I gotta say, installing Manjaro was a breeze (cursor theme). I will admit however, I have never known the pain of installing Arch. Like actual Arch. But I’m aware of the memes. So I’m sure it’s pretty involved. While I can’t exactly go around trolling like, “btw I use arch”, I was seriously surprised at the installation and how much was up and running right out of the box! Ubuntu is pretty straightforward, but depending on the hardware, you may need to find a few hacks or packages to get everything full up and running. For example, I couldn’t get the wifi working when I put Ubuntu on my 10 year old Macbook until I installed a special package that didn’t come with the default install.
Everything Works.
Immediately… Very first boot up. Everything works. Hardline network connection works. Wifi card works. GRAPHICS look great. Manjaro automatically grabs graphics drivers for you upon install! And I was actually impressed with the pre-installed software collection. Most of the time, in Ubuntu, I have to delete a bunch of crap software I’ll never use. But Manjaro… Like, I use Steam all the time. It’s pre-installed. Libre Office pre-installed. Tweaks pre-installed. Gparted pre-installed (this might be normal). But I was really surprised how little I actually had to do post-installation.
Smooth UI Experience
It’s a bunch of little things that add up to a massive amount of time saved. One of my pet peeves in Windows is switching apps on the task bar. If your app has multiple windows (like Blender, and a render window), you have to click once to reveal thumbnails, then click the thumbnail of the window you want. If they’re small or detailed windows like terminals, good luck. I love the single hot corner in the upper left to give you an expose-like look of all your running apps. I love the best-of-both worlds option to launch a full-screen app tray from the bottom left, or tap the drop-down xcfe-like ‘start menu’ from the upper left. It’s pretty awesome. Just gotta get used to typing pacman -S instead of apt-get
Haven’t logged a ton of hours on Manjaro just yet, still very much in the “moving in” phase. Feeling great so far. Looking forward to diving into my brand new postproduction workflow in Manjaro using Blender, Resolve, Gimp, Inkscape, and Ardour. More on that in the coming weeks! Peace
Found a great game? Discover a new program? Only available on Windows? No Windows machine? Don’t want to bother dual booting? Running a virtual machine not an option? Me too! Using Mono makes all that a lot easier. Let’s talk about using mono to run .exe files on linux.
Mono, according to their website, is an open source project sponsored by Microsoft that implements the .NET framework across other platforms like Linux and Mac OS. It’s not a program. It’s a framework. Basically a sort of language used to run files. So how exactly do you go about using mono to run .exe files on linux?
Installation is pretty straightforward. Just install a few packages, add the PPA to your system, and run the install command. Done! Detailed instructions on how to do this can be found here.
In my case, I use KeePass to keep track of all my passwords, but that’s a software project that’s only available as an .exe file. Luckily, you can open it and run it on any OS using Mono. Just by dropping this command:
mono Location/Of/Your/EXE/File.exe
The only catch here is that Mono only works for certain .exe files. This is where it gets kinda deep, but it’s essentially dependent on how that .exe file was compiled and what elements of .NET it’s using or requires to run. A bit of googling can certainly point you in the right direction, and for more information on Mono compatibility, check this out.
Something I learned just recently: if you’re just trying to run KeePass, there’s a great chance that the package manager in your distro has some sort of KeePass equivalent, if not KeePass itself. I’ve started using Manjaro lately, and KeePass is just a one click install. Try it out!
I hadn’t planned on turning my Chromebook into an N64 over the weekend, but it’s what happened. Turned out working pretty well, so I thought I’d share my victory with everyone!
Prerequisites:
Chromebook (or any laptop)
a real operating system (not Chrome OS, but preferrably Linux)
a controller of gamepad of some sort. I used my brother’s old PS3 controller.
I thought I wrote a post on how I hacked my Chromebook to run GalliumOS, but It may have gotten deleted. If you’re interested, just drop a message in my contact for and I’ll get on it!
Step 1: Find an Emulator
This is how you’re gonna play your favorite games. There’s a bunch of them out there for all different operating systems. I’m running GalliumOS, so I went with Mupen64Plus. You can either build it yourself, or you can find some precompiled versions out there. Once you’ve got an emulator, you’re nearly there!
Step 2: Grab a Controller
Pretty much any controller will work. The only tricky thing will be finding a driver to work with your controller. I dug around and found a driver called QtSixA. After installing it, I realized I didn’t actually need it because GalliumOS just recognized my PS3 controller right out of the box. Awesome!
Step 3: Get some ROMS
A quick internet search for “N64 ROMS” should definitely get you pointed in the right direction. Grab whatever ROM you want, but just keep in mind, if you’ve set up a N64 emulator on your laptop, you’re gonna want to use N64 roms with that.
Yo, that’s pretty much it. It took me about 3 hours to set everything up, but it’s mostly because I started off trying to install Emulation Station and RetroArch with no luck. Those emulator front ends pretty much launched and immediately froze for whatever reason. Eventually I just decided to download just an N64 emulator and a GUI launcher (Mupen64Plus-QT found in synaptic package manager, I think). Once I launched it and pointed it to my ROM library, I was off and running.
Ranger is an open source Github project that aims to streamline and simplify directory navigation on any computer. If you’re relatively new to the terminal or only use it rarely, this may not be a big deal for you. However, if you use the terminal on a regular or even daily basis, this tool may be invaluable. Unlike a typical GUI layout found on Windows or Linux machines, Ranger gives you 3 columns of folders at once. This allows you to see one directory up, your current working directory, and one directory down.
Why is this Awesome?
If you’ve used Apple’s Finder, you’ll know there’s a file view called “Column View” that allows you to navigate in and out of folders with speed, just using the arrow keys. Ranger essentially brings this speed to every platform, inside the terminal.
If You’re New to Terminal
If you’re like me and just starting to use the terminal for the first time, there’s a good chance you know the commands “cd” and “ls” (on linux or mac) or “dir” for Windows. Those commands absolutely do work, and you can still use them if you like. However, it’s also nice to know of some nice alternatives! So instead of typing out long directory paths and risking typos, now you can just run “ranger”. In addition to fast file navigation, you can also get ASCII previews of image files, text previews of documents, and even look inside zipped files!
Just Scratching The Surface
Finally, this article is meant to be a very shallow, surface-level introduction to what Ranger is and what it does in a very general sense. Be sure to check out the full documentation to discover the VAST amount of control you can get out of Ranger. That’s all I’ve got for now. Thanks for reading!
Rclone is a cross-platform terminal-based application that allows you to manage cloud storage services from virtually any machine, regardless of which OS you’re running. I really like it because it offers a TON of functionality and compatibility with loads of different services from Amazon, Google, Box, Dropbox, and more.
Some may be intimidated by the fact that this program doesn’t have a front end and is only usable inside the terminal or command line. However, if you’re familiar with just the most entry-level basics of how the terminal works, then this program shouldn’t be that difficult for anyone to use. After all, the main purpose of the program is just to move files around to different places. How hard could it be?
The Basics
In my admittedly limited experience with Rclone, I’ve used it pretty much exclusively with Backblaze. Once you download and install Rclone to your machine of choice (I’ve never seen so many operating systems supported!), you can get a brief overview of what Rclone is and how it works just by running this on a Mac or Linux:
man rclone
That will pull up the manual for the program. Also, I just learned in Windows, you can type the name of any command (in our case, rclone), followed by a forward slash and a question mark to bring up the manual page for that command in the windows command prompt. Like this:
rclone /?
Configuring Rclone
Next, you’ll want to set up rclone with whatever service you want to use. To do this, you can run:
rcone config
This will bring up the configuration options for rclone.
In the above example, you can see that I’ve already set up rclone to run with my Backblaze account. Any configured accounts will appear at the top when you run:
rclone config
At this point, you can run through the prompts to set up a new account by selecting your service from the WIDE list of compatible services, entering your account login credentials, and you’re good to go!
Basic Commands
Once you’ve got rclone configured to use basically any and every service you like, you’re ready to start transferring files! The basic syntax can be found in the manual page either online or in the terminal using commands mentioned above. Here’s how it works:
In the manual page, the syntax is listed like so:
[options] subcommand [parameters] [parameters]
Kinda clear, but also kinda confusing. Luckily, there are a few examples listed immediately after the generic syntax format:
rclone ls remote:path # lists a remote repository
rclone copy /local/path remote:path # copies /local/path to the remote
rclone sync /local/path remote:path # syncs /local/path to the remote
It took me a few tries to figure it out, but when you’re configure your storage service (Amazon, Google, etc) it prompts you to give it a name. You can name it Google or anything you want. Just be aware that rclone is case sensitive when it comes to remote names. So if you configure rlcone and name your remote BackBlaze, typing backblaze or Backblaze will not work.
Let’s say you want to copy fluffykitty.jpg to the kitties folder on your Dropbox account. You’ve configured rclone and named your Dropbox configuration boxlyfe. So with that in mind, first you type rclone to call the program. Then you type a subcommand. What do you want to do with rclone? Copy files, so type copy. Copy what? Type the file path to the file or directory you want to copy. Copy to where? Type the name of the remote (boxlyfe), colon, and the directory you want to put it in. So your command will look something like this:
The –dry-ryn flag at the end will test the command without copying anything. That way you can correct any typos in your command before actually executing it. Once everything looks good, you can replace –dry-run with –verbose to get text output updating your on the progress of your upload.
rclone copy works with individual files as well as directories and all directory copies are recursive by default, meaning rclone will grab EVERYTHING inside that folder, and all subfolders. Also, you can reverse the copy command to download stuff as well. Wanna get that kitty picture back? Just run: