Comments (3)
Yeah, I've not really spent too much time thinking about this. I do like having the cheap off-site backups. But I also have all of the data stored locally in cheap unreliable storage (ZFS on USB drives).
I wrote a FUSE filesystem that talks to the backend and provides a regular filesystem view of all of the data. My work Mac is using that along with Blackmagic Proxy Generator to generate proxies for all the downloaded media. I use the same filesystem in Davinci Resolve for editing, so it's basically my "local content" service at the moment with the files stored across multiple drives on multiple computers.
The only real missing link would be uploads. Right now, this software gets richer metadata presentation than GoPro cloud's own stuff, so creating some alternatives would be fairly straightforward. It's just ensuring local media is stored and recording where (S3, local, etc...).
from gopro.
Thanks for the answer. I will try using the FUSE system. How does the blackmagic proxy thing work, does it in your web ui serve the content through the downloaded source rather than gopro/aws servers? Yeah the upload thing would be the one missing, will try seeing if I can contribute but my experience with haskell just started with compiling this project itself and running it. I again want to thank you for providing this awesome set of tools. Is there a way to serve the local downloaded content as a streamable view, like I want to expose the downloads and use the metadata but the end user should be able to play the streams thus eliminating the need to hit the go pro servers. Right now I can see the files beautifully arranged but I am missing the direct play thing. Let me know if this can be added to the web ui and I will try to learn and add it if you can guide me a little. Thanks!
from gopro.
The BlackMagic Proxy Generator finds files in a tree of form some/path/something.mp4
and creates some/path/Proxy/something.mov
with whatever proxy you configure (which might not be.mov
, but the basic idea remains). Davinci Resolve will look for proxies under any media you import using this form.
The FUSE filesystem works by unioning a lot of local storage areas into a read-only view across all of them so accessing some path like /mnt/2023/10/wbmrENDdEymXM/GX011866.MP4
will pull resources from any of the places you have overlayed or dynamically pull blocks as needed from the cloud origin. Then it allows an overlay such that /mnt/2023/10/wbmrENDdEymXM/Proxy
can be created and managed in a separate space. This also means I can overlay different types of proxies at different times.
I wrote more about it here: https://dustin.sallings.org/2023/10/16/goprofs.html
Regarding offline serving: The backend could also work with knowledge of a full backup tree and serve local content, but I don't actually download anything beyond the minimal here, so that wouldn't work for any of my use cases. The minimum size for my data (including their smaller versions for serving) is about 22TB for me. Just grabbing the mp4_low
would only add about another 14GB to my storage which isn't too bad. It's the 2TB of high res proxies and another 2TB of other weird unknowns that would be a larger impact on me.
In any case, just having it be aware of a local tree with these options could be enough. The web site will already serve content.
from gopro.
Related Issues (20)
- Installing on Mac M1 HOT 3
- Could not find gpmf-0.1.1.1 on Hackage HOT 3
- Integrate with GoProX HOT 1
- Individual/subset media download command
- Reuploading restarts the whole process HOT 7
- Windows build failure HOT 6
- GoPro Max files are not supported HOT 3
- Postgres's dependencies is missing HOT 8
- Error 422 during upload HOT 3
- Web app with 'gopro serve' does not work HOT 8
- Sqlite database keeps record of a media even after deleting it via GoPro Cloud official web interface
- Be able to pull only the meta data HOT 19
- GoPro Serve Error - I was unable to load the media: bad body: Problem with the value at json[30]['file_size']: HOT 1
- Sync Issue HOT 1
- Stack install Error While building package postgresql-libpq HOT 8
- GoPro Upload Issue: Excessive Requests, Directory Restructuring, and Non-existent File Errors HOT 3
- JSONError Unexpected MediumType Audio HOT 3
- failed to parse field 'extra-deps' when installing HOT 6
- Internal Server Error using Docker image HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gopro.