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.
<video> decoding with an object URL; the source file never leaves the computertexImage2D upload into WebGLsampler2Dlocal 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.
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.
The frame-step button is intentionally approximate because ordinary browser video APIs do not expose a guaranteed source-frame rate.
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.
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