About the Site
I've combined pre-existing software to host a video uploader/viewer.
It's a very basic form.
The homepage allows you to enter the #IPFS hash of a video stored on IPFS to watch that video.
Below that is an upload box that can be clicked to select a file, or a file can be dragged into the box.
A video in the process of uploading:
Once uploading completes, the page will navigate to the page to view the video,
Notice the 'iframe' code beneath the player. Hypothetically, if smoke.io allowed it, that line could be added to a post to insert the video player.
Why I Like This Concept
- Puts the #community in control. We can decide how resources are allocated. This can easily be taken out of my influence and put under group control.
- Decentralizes the data when done correctly. The more people interacting with the files on different levels, the better spread out those files should become.
- Censorship resistant. So long as one copy of a file is hosted somewhere on IPFS, it has the potential to propagate across the entire network, similar but different to torrents.
It's only currently my machines, if something happens to me or them then the network crumbles rather quickly. I believe this can be resolved through community involvement.
Some browsers seem to not play the videos or are glitchy when they do. Chrome on Android required 3 taps to get it to play, and going full-screen broke it on my phone. One report was that Firefox on Android didn't work. Etc.
Users reported slow speeds in the previous video test.
May require some technical knowledge, ie. compressing the video for better playback once uploaded. Also, backing up one's own videos on IPFS for longevity.
Speaking of 'longevity,' I have extremely limited storage space, so if filled near capacity I would definitely have to begin unpinning videos with the hopes that someone else had grabbed them by then.
Uploads are currently capped at 1GB for now, but this can be adjusted if needed or desired.
I offer no warranty with this service. The main intent is for this to be seen as a 'Proof of Concept' or working prototype to show that the idea is feasible. An experiment.
There will surely be bugs, errors, and failures, and I do not guarantee the longevity of content viewed through this network for any amount of time.
If the community decides this is of some value, my hope is that others will add resources and improvements to take it beyond what I can currently imagine and make it ready for production.
Video Compression / FFMPEG
Currently, the network doesn't offer any kind of video conversion or compression. What you upload is what it will try to distribute across the network and serve to viewers. Video conversion/compression could possibly be added as an option in the future, but I've not researched options for this.
I highly recommend compressing any video before upload. The video posted above was 794MB until I ran it through FFMPEG and reduced it down to 275MB for about the same quality. Almost one third the original size.
After transferring the video from my phone to my desktop, I processed the video using the following ffmpeg command:
ffmpeg -i VID_20190116_212642.mp4 -crf 23 -preset veryslow -movflags +faststart trees_2019-01-16_720p.mp4
What the options do:
-crf 23 A 'constant rate factor' value. More Information.
-preset veryslow A setting for how long ffmpeg will spend trying to compress the video. More Information.
-movflags +faststart Moves information needed to play the video toward the beginning of the file so that it can be played before the entire file is downloaded. More Information.
Options like the CRF and Preset can be tailored to user's preferences, but faststart is certainly recommended.
Some possible handbrake settings that you may want to enable to get the same effect as the above ffmpeg command,
Currently, I have three of my own machines donating resources to the network I've created.
2 x Canadian Servers (Rentals that predate Smoke)
1 x Netherlands Server (Added for network stability and to possibly give better speeds to our European friends)
Each machine acts as a mirror/gateway for the others. As it's configured now, the uploaded file tries to be copied to each machine for availability. This can be adjusted to fractions of the available machines. If we had 10 servers in the cluster, for example, then we could choose to have videos available on at least 3 but not more than 7, etc.
One other Witness has already expressed interest in joining in this experiment and the more the merrier!
If you want to donate resources, OR create your own network
I've documented my entire setup on my github, https://github.com/trees-smoke/ipfstube
If anyone wants to join in on this network they can follow those instructions to have a functional node.
From there, you merely need to be added to the DNS records for your machine to join in as a Public Gateway.
I've written about 0% of the functional parts, credit to the authors are basically in the github.
Comments? Questions? Concerns?
If any smokers have a video that will be publically posted on smoke.io anyway or a test video they want to try, feel free to upload it as an experiment. Consider everything uploaded 'Public.' What you do with the link/file-hash past that point is up to you, if it works.
I can not recommend 'relying' on this in the slightest at this point, lots of issues could lead to broken posts (especially in the future), but maybe a 2nd video source as a backup link is reasonable, etc.
What do you think?
Is this good?
Does any of this make a lick of sense?
Am I mad as a hatter?
All of the above?