This commit is contained in:
fengchuanhn@gmail.com
2026-05-18 15:14:37 +08:00
parent cdbf605205
commit 0b39d7e36f
7 changed files with 454 additions and 2 deletions

View File

@@ -1,12 +1,11 @@
import { convertFileSrc, isTauri } from "@tauri-apps/api/core";
/**
* 本地视频文件转为 WebView 可播放地址
* @param {string} filePath
*/
export function localVideoToPlayableUrl(filePath) {
if (!isTauri()) {
throw new Error("请在 Tauri 桌面端预览视频");
throw new Error("请在 Tauri 桌面端使用视频播放功能");
}
return convertFileSrc(filePath);
}

42
src/services/videoDb.js Normal file
View File

@@ -0,0 +1,42 @@
import { invoke, isTauri } from "@tauri-apps/api/core";
function ensureTauri() {
if (!isTauri()) {
throw new Error("视频历史需在 Tauri 桌面端使用");
}
}
/**
* @typedef {{ id: number, name: string, filePath: string, avatarId: number | null, audioId: number | null, createdAt: string }} GeneratedVideoRecord
*/
/** @returns {Promise<GeneratedVideoRecord[]>} */
export async function listGeneratedVideos() {
ensureTauri();
return invoke("list_generated_videos");
}
/**
* @param {string} sourcePath
* @param {string} name
* @param {number | null} [avatarId]
* @param {number | null} [audioId]
* @returns {Promise<GeneratedVideoRecord>}
*/
export async function importGeneratedVideo(sourcePath, name, avatarId = null, audioId = null) {
ensureTauri();
return invoke("import_generated_video", {
sourcePath,
name,
avatarId: avatarId ?? null,
audioId: audioId ?? null,
});
}
/**
* @param {number} id
*/
export async function deleteGeneratedVideo(id) {
ensureTauri();
return invoke("delete_generated_video", { id });
}