Grant Proposal: Fabstir

Sure. Currently finishing off learning Rust that I will be using, instead of C++ that I know as is too hard for people to learn IMHO due to its bloated size and complexity.
Soon be able to move forward again.

Hi,
February progress report is here:

The committee has reviewed your report and is pleased with your progress. We do recommend using our new format for future reports, especially since the markdown files present aas a bit tough to read in the forum:

  1. A short 2 - 3 paragraph summary of your specific progress over the past month.
    1. Please compare progress to your milestones or timeline stated in your proposal.
  2. Links to repos worked on (if any)
  3. List of what you will be working on for the next month.

Keep it up!

Sure, will do. Cheers.

Hi,

March Progress Report Summary

Over the past month, a cloud-based infrastructure and test MetaMask Snaps app have been developed. The infrastructure comprises two clusters for media playback and video transcoding, communicating via gRPC and utilising load balancing. Both clusters are hosted on Akamai, with multi-cloud support.

The MetaMask app allows users to manage their NFT addresses within a secure environment, storing encrypted data locally and will offer backup storage on SIA. Currently working on the production-ready Web3 video player with enhanced features.

Full report here: fabstir-web3-media-player/FabstirWeb3MediaPlayer_20230402.md at main · Fabstir/fabstir-web3-media-player · GitHub

The committee is pleased with your progress. Keep it up!

Regards,
Kino on behalf of the Sia Foundation and Grants Committee

Hi,

April Progress Report Summary

The production-ready video player that uses a technology stack of Next.js, React, JavaScript/TypeScript and Tailwind is working for local files and media. It features support for multiple playback speeds and subtitles. It also supports songs using .lrc lyric format where the displayed lyrics is able to scroll in sync with the audio.

Progress has also been made to client-side version of S5 Client (called s5-client.js) for Decentralized content-addressed storage network S5. Implemented some fixes to include bearer authentication tokens required by S5, plus contributed some example code. Testing is now ongoing with the Next.js production build of Fabstir Media Player.

Full report here: fabstir-web3-media-player/FabstirWeb3MediaPlayer_20230502.md at main · Fabstir/fabstir-web3-media-player · GitHub

Thank you for the report, everything looks good so far!

Hi,

May Progress Report Summary

Added support for AV1 encoding to the Fabstir transcoder infrastructure. Tested playback of uploaded transcoded videos to S5 and they stream fine for both HD and 4K resolutions.

Attended the Cannes Film Festival. Met with many professional content creators and facilitators from the film industry, Explained the advantages of Web3, the importance of decentralisation and content ownership. Made many new contacts for Fabstir.

Added support for XChaCha20 encryption of files to s5client-js. Allows for files to be automatically encrypted client-side before upload to S5.

Full report here: fabstir-web3-media-player/FabstirWeb3MediaPlayer_20230604.md at main · Fabstir/fabstir-web3-media-player · GitHub

Hi,

June Progress Report Summary

Hightlight: Now able to upload massive files sizes encrypted to SIA via S5 using s5client-js.
Files are XChaCha20 encrypted and uploaded in groups of chunks at a time using Tus resumable file transfer protocol. Uploaded chunks are garbage collected from memory. Means that file size can be much bigger than memory available and only limited by the amount of hard drive space.

Full report here: fabstir-web3-media-player/FabstirWeb3MediaPlayer_20230702.md at main · Fabstir/fabstir-web3-media-player · GitHub

I should add that the previous limit for upload from the browser was 2 GB, found after testing.

So the upgrade was really necessary for my use case.

Hi,

July Progress Report Summary

Rust transcode server can receive encrypted video files from S5 for transcoding. The transcoder can transcode from a source video to multiple file formats given a list of video format specifications. WIP media player has functionality to display a gallery of video/audio NFTs and use MetaMask to unlock those owned for playback.

Full report here: https://github.com/Fabstir/fabstir-web3-media-player/blob/main/progress_reports/FabstirWeb3MediaPlayer_20230804.md

Hello @juleslai,

Thank you for your July progress report! It looks great.

The Committee has voted to create a progress report template which should make it easier for both you, the Grantee, to provide monthly updates as well as to enable the Committee to quickly review progress without spending too much time on minute details.

For August’s progress report (which should be provided in September), please follow the template outlined in this post: About the Grants category - #8

Thank you for your help and cooperation.

Regards,
Kino on behalf of the Sia Foundation and Grants Committee

Okay, will use your template in future.

Hi,
Progress report for August is here:

Hi,
Progress report for September is here:
https://github.com/Fabstir/fabstir-web3-media-player/blob/main/progress_reports/FabstirWeb3MediaPlayer_20231002.md

Hi,
Progress report for October is here:

Hi,
Progress report for November is here:

Transcoder in Action: Video and Audio File Conversion Demos

These two videos go through two sample projects that explore the capabilities of the Fabstir transcoder in converting both video and audio files, showcasing storage and playback through the S5 CDN Network and SIA storage.

For repos and source code:
https://github.com/Fabstir/transcode-example

Video File Transcoding
The first video demonstrates the process of transcoding a video file. The transcoder repo is introduced, highlighting how to build the project and use its API. The demonstration involves an Express JS application, showing two methods of uploading: server-side and browser code to SIA Storage via S5, and s5client-js module for client-side. The key steps covered are:

  • Selecting and uploading a video file.
  • Transcoding the file into different formats, including HD and Ultra HD, with options for encrypted and unencrypted uploads and transcodes.
  • Fetching and playing the transcoded video, illustrating the difference in CID lengths between encrypted and unencrypted files.

Audio File Transcoding
The second video focuses on audio file transcoding, using the same transcoder but for audio files uploaded and streamed from SIA Storage via S5. Key highlights include:

  • Introduction to the test application within the repo.
  • Transcoding an audio file to FLAC format at 48K frequency in stereo.
  • Demonstrating the upload, transcoding, and playback process, including insights into the audio file’s format and the JavaScript code involved in the conversion process.

These demonstrations provide a practical insight into how the transcoder handles different media types, offering a glimpse into the technical aspects of file conversion and streaming in a Web3 environment.

Watch the Video File Transcoding Demo
Watch the Audio File Transcoding Demo

Hi,
Progress report for December is here:
https://github.com/Fabstir/fabstir-web3-media-player/blob/main/progress_reports/FabstirWeb3MediaPlayer_20240102.md