tauri-plugin-video-thumbnail

Crates.iotauri-plugin-video-thumbnail
lib.rstauri-plugin-video-thumbnail
version0.1.0
created_at2025-12-08 14:38:17.330665+00
updated_at2025-12-08 14:38:17.330665+00
descriptionGenerate video thumbnails from URLs or local paths for Tauri applications
homepage
repositoryhttps://github.com/dickwu/tauri-plugin-video-thumbnail
max_upload_size
id1973642
size157,170
farmerwu (dickwu)

documentation

README

Tauri Plugin Video Thumbnail

Generate video thumbnails from URLs or local file paths using the thumbnailer crate.

Installation

Rust

Add to your Cargo.toml:

[dependencies]
tauri-plugin-video-thumbnail = { git = "https://github.com/your-username/tauri-plugin-video-thumbnail" }

JavaScript/TypeScript

npm install tauri-plugin-video-thumbnail-api
# or
pnpm add tauri-plugin-video-thumbnail-api

Setup

  1. Register the plugin in your Tauri application:
fn main() {
    tauri::Builder::default()
        .plugin(tauri_plugin_video_thumbnail::init())
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}
  1. Add permissions in your src-tauri/capabilities/default.json:
{
  "permissions": [
    "video-thumbnail:default"
  ]
}

Usage

JavaScript/TypeScript

import { generateThumbnail, getThumbnailDataUrl } from 'tauri-plugin-video-thumbnail-api'

// Generate thumbnail as base64
const result = await generateThumbnail({
  source: 'https://example.com/video.mp4',
  size: 'medium' // 'small' (32x32), 'medium' (64x64), 'large' (128x128)
})

// Use in an img element
const imgElement = document.createElement('img')
imgElement.src = `data:image/png;base64,${result.base64}`

// Or use the convenience function
const dataUrl = await getThumbnailDataUrl('https://example.com/video.mp4')
imgElement.src = dataUrl

// Save thumbnail to file
const saved = await generateThumbnail({
  source: '/path/to/local/video.mp4',
  size: { custom: { width: 200, height: 150 } },
  outputPath: '/path/to/thumbnail.png'
})
console.log(`Saved to: ${saved.path}`)

Rust

use tauri_plugin_video_thumbnail::{VideoThumbnailExt, ThumbnailRequest, ThumbnailSize};

// In a command or elsewhere with access to AppHandle
let result = app.video_thumbnail()
    .generate_thumbnail(ThumbnailRequest {
        source: "https://example.com/video.mp4".to_string(),
        size: Some(ThumbnailSize::Medium),
        output_path: None,
    })
    .await?;

API

generateThumbnail(request: ThumbnailRequest): Promise<ThumbnailResponse>

Generate a thumbnail from a video source.

ThumbnailRequest

Property Type Description
source string Video URL (http/https) or local file path
size ThumbnailSize Optional. 'small', 'medium', 'large', or { custom: { width, height } }
outputPath string Optional. If provided, saves thumbnail to this path instead of returning base64

ThumbnailResponse

Property Type Description
base64 string | undefined Base64 encoded PNG (if outputPath not provided)
path string | undefined Path to saved file (if outputPath provided)
width number Width of generated thumbnail
height number Height of generated thumbnail

Thumbnail Sizes

Size Dimensions
small 32x32
medium 64x64
large 128x128
custom Any dimensions

Supported Video Formats

  • MP4
  • WebM
  • AVI
  • MOV
  • MKV
  • FLV
  • WMV

License

MIT

Commit count: 0

cargo fmt