Git Product home page Git Product logo

schillsaver's Introduction

Java CI with Maven CodeQL

Schillsaver is a tool that allows you to encode one or more files into a single video. This video, consisting of black and white squares, represents the data of the input file(s). The video can then be uploaded to a hosting site, such as YouTube, for future re-download and decoding back into the original file(s).

This provides a novel approach to free file storage.

While Schillsaver was developed as a proof-of-concept, its usage is entirely up to you. However, we do not explicitly recommend using YouTube or any other platform for free file storage.

Table of Contents

Requirements

Notes

  • For successful decoding, you must use the same block size and resolution settings that you used during encoding. For example, if you've encoded a video with block size 8 at 1920x1080, then it must be decoded with block size 8 and resolution 1920x1080. Any other block size or resolution will result in a corrupt decode.

  • On Linux, you may need to launch the program using the java -jar Schillsaver.jar command.

  • When downloading your stored videos, ensure that you download the video at the same resolution that you encoded the video at. For example, if you've encoded a 1080p video, then download it as 1080p. Downloading it at a lower resolution (e.g. 720p) will result in a corrupt decode.

schillsaver's People

Contributors

dependabot[bot] avatar nickardson avatar timetimetimetime avatar valkryst avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

schillsaver's Issues

Redesign Button Icons

All of the file icons used on the main screen of the program should be redesigned.

  • Move the symbol inside of the file.
  • Complete the file's border.
  • Ensure all file icons are the same height and width when viewed in the program.
  • Adjust minimum/default window width/height if necessary.

Usage of color to store more bytes in a frame

Couldn't colored pixels make it possible to store more bytes in a pixel? At the moment, it's just 0 or 1, but a color RGB value consists of 4 bytes. Wouldn't that make more sense?

Update README file.

  • Add badges, if relevant.
  • Add new information if required.
  • Improve layout.
  • Review and adjust existing information.

Fully-Custom FFMPEG Options Improperly Implemented

The user should be able to enter two parts to both the encoding and decoding settings. The first part will come before the input file is specified and the second part will come afterwards.

The program will do the work of appending the path to ffmpeg, the first part, the path to the input file, the second part, and the path to the output file on it's own.

The fully-custom FFMPEG options WILL NOT WORK until this is resolved.

Redesign the Settings Manager's layout.

The Settings Manager's layout is alright for now, but it's going to need some sort of redesign. My current idea for the redesign is as follows.

On the main screen there will be a toolbar at the top of the screen. From this you'll be able to select, from a dropdown menu, which section of the settings you wish to edit. From that, a specific window for the specific settings selected, will be shown to the user.

Although this idea might just end up producing a lot more code with a worse looking interface.

Implement Job Dialog

Acceptance Criteria

  • User Requirements:
    • User can open a menu to add files to the job.
    • User can a file from the job.
    • User can delete all files from the job.
    • User can specify whether the job is for Encoding or Decoding.
    • User can specify a name for the job.
      • The name must be an auto-generated UUID if the user does not specify a name.
    • User can specify a description for the job.
    • User can view a time estimate for how long the Encoding or Decoding will take.
    • User can select an output folder.

Implement Main Screen

Acceptance Criteria

  • User Requirements:
    • User can open a menu to edit the program settings.
    • User can open a menu to create a Job.
    • User can open a menu to edit an existing Job.
    • User can delete an existing Job.
    • User can delete all existing Jobs.
    • User can process existing Jobs.
    • For each Job being processed, the user must be able to view the FFMPEG/status output in real time.

Issue i am having.

I decided to mess around and run the ffmpeg command directly through ffmpeg without using Schillsaver.

I am able to convert an image into the pixels at my desired block size and resolution and successfully convert the image back.

The issue is that the original image is always a couple KB more than the converted image, and I'm not sure why.

Schillsaver doesn't do this but the direct command does for some reason. Am I perhaps doing something wrong?

Implement "Jobs"

I came up with a new way to handle encoding/decoding in the program.

Instead of adding files to the list of files to encode or decode, you will add Jobs.

A Job, at it's base, is either an encode or decode Job.

Each Job, as it's added, will use the base settings of the program along with a set of settings set as the Job is added.

I might also add in a feature to save/load Jobs from a file.

Prevent a Job from running before a certain date, or time.

Etc...

This will allow for the program to encode and decode at the same time as I'll add the option to run more than one Job at a time.

En/decode at the same time.

  • Remove the separate en/decode buttons.
  • Allow for one or more encode and one or more decode jobs to run at once.
    • Add settings to set the number of jobs that can run at once.
    • Create a tabbed pane of FFMPEG output on the right-hand side of the screen.

Cleanup UI Code

Basically just rewrite everything. The code was done in a hurry, so it's a complete mess right now.

Review existing code.

Create some form of diagram to map the program's states, what happens when each button is pressed, what happens when a job finishes, etc...

Use this info to simplify the implementation when rewriting the program.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.