junkpile

12 — Tauri v1 Video Texture Player

A standalone Tauri v1 application that loads a local video file, uploads each decoded frame to a WebGL texture, processes it with GLSL ES, and displays the result in real time.

This is the first added project after the original twelve Tauri v1 essentials. It fills the gap between the existing webcam examples and a practical media-file workflow.

What it demonstrates

Architecture

local video file
      │
      ▼
HTML <video> decoder
      │ current decoded frame
      ▼
WebGL video texture
      │
      ▼
GLSL effect pass ───── previous feedback texture
      │                       ▲
      ▼                       │
ping-pong framebuffer A/B ────┘
      │
      ▼
WebGL canvas in the Tauri v1 WebView

Tauri v1 owns the window through its WebView. Rendering therefore remains inside the browser graphics stack; Rust only launches the desktop shell in this example.

Run

npm install
npm run dev

Then choose Load video file and select an MP4, MOV, WebM, or another format supported by the operating system WebView.

Controls

The frame-step button is intentionally approximate because ordinary browser video APIs do not expose a guaranteed source-frame rate.

Format support

Video decoding is provided by the platform WebView:

A file that works in one operating system may require a different codec on another. H.264 MP4 is generally the most portable practical choice, but licensing and installed codec availability can still vary.

Source files

src/
  index.html      controls, canvas, hidden video element
  styles.css      controls-window presentation
  app.js          media transport, WebGL, GLSL, feedback

src-tauri/
  src/main.rs     minimal Tauri v1 application shell
  tauri.conf.json window, CSP, and bundle configuration

Next logical essentials