ftv

Crates.ioftv
lib.rsftv
version1.0.0
created_at2025-08-15 22:25:56.178574+00
updated_at2025-08-15 22:25:56.178574+00
descriptionConvert anything to video and revert to normal!
homepagehttps://github.com/Junaid433/FTV
repositoryhttps://github.com/Junaid433/FTV
max_upload_size
id1797588
size69,077
Junaid Rahman (Junaid433)

documentation

README

FileToVideo (FTV)

Convert anything to video and revert back again!

Features

  • Encode: Convert any file into a video format, embedding the file's binary data into the video frames.
  • Decode: Reconstruct the original file from an ftv encoded video.
  • Verify: Check the integrity of the reconstructed file against the original using SHA256 checksums.

Installation

To build and run ftv, you need to have Rust and Cargo installed. You also need ffmpeg installed on your system, as ftv relies on it for video processing.

  1. Install Rust and Cargo: If you don't have Rust and Cargo installed, you can get them from the official Rust website:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    
  2. Install FFmpeg: ftv uses ffmpeg for video encoding and decoding. Ensure ffmpeg is installed and accessible in your system's PATH.

    • Ubuntu/Debian:
      sudo apt update
      sudo apt install ffmpeg
      
    • macOS (using Homebrew):
      brew install ffmpeg
      
    • Windows: Download from the official FFmpeg website and add it to your PATH.
  3. Build ftv: Navigate to the project's root directory and build the project in release mode:

    cargo build --release
    

    The executable will be located at target/release/ftv (or target/release/ftv.exe on Windows).

Usage

All commands are executed via the ftv executable. You can run it directly from target/release/ or add it to your system's PATH.

1. Encode Command

Encodes an input file into a video format.

./target/release/ftv encode -i <INPUT_FILE> -o <OUTPUT_DIRECTORY> --width <WIDTH> --height <HEIGHT> --framerate <FRAMERATE>
  • <INPUT_FILE>: Path to the file you want to encode.
  • <OUTPUT_DIRECTORY>: Directory where the encoded video and metadata JSON will be saved. Defaults to the current directory.
  • --width: (Optional) Width of the video in pixels. Default is 640.
  • --height: (Optional) Height of the video in pixels. Default is 480.
  • --framerate: (Optional) Framerate of the video in frames per second. Default is 24.

Example:

./target/release/ftv encode -i my_document.pdf -o ./encoded_videos --width 1280 --height 720 --framerate 30

2. Decode Command

Decodes an ftv encoded video back into its original file format.

./target/release/ftv decode -i <INPUT_VIDEO> -o <OUTPUT_DIRECTORY> --framerate <FRAMERATE>
  • <INPUT_VIDEO>: Path to the ftv encoded video file.
  • <OUTPUT_DIRECTORY>: Directory where the decoded file will be saved. Defaults to the current directory.
  • --framerate: (Optional) Framerate used during encoding. Must match the framerate used during encoding. Default is 24.

Example:

./target/release/ftv decode -i ./encoded_videos/my_document-pdf.mkv -o ./decoded_files

3. Verify Command

Verifies the integrity of a decoded file by comparing its SHA256 checksum with the one stored in the video's metadata.

./target/release/ftv verify --video <ENCODED_VIDEO> --original <ORIGINAL_FILE>
  • <ENCODED_VIDEO>: Path to the ftv encoded video file.
  • <ORIGINAL_FILE>: Path to the original file that was encoded. This is used to compute its SHA256 for comparison.

Example:

./target/release/ftv verify --video ./encoded_videos/my_document-pdf.mkv --original my_document.pdf
Commit count: 0

cargo fmt