try out ogv codec loader
This commit is contained in:
parent
d4e8a66cf6
commit
c09f65b6cc
@ -2,7 +2,7 @@
|
|||||||
"name": "web_hbb",
|
"name": "web_hbb",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "cp node_modules/ogv/dist/* dist/ && vite",
|
||||||
"build": "tsc && vite build",
|
"build": "tsc && vite build",
|
||||||
"preview": "vite preview"
|
"preview": "vite preview"
|
||||||
},
|
},
|
||||||
@ -11,6 +11,8 @@
|
|||||||
"vite": "^2.7.2"
|
"vite": "^2.7.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"libsodium": "^0.7.9",
|
||||||
|
"ogv": "^1.8.6",
|
||||||
"ts-proto": "^1.101.0"
|
"ts-proto": "^1.101.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
47
src/codec.js
Normal file
47
src/codec.js
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import { OGVLoader } from "ogv";
|
||||||
|
|
||||||
|
// example: https://github.com/rgov/js-theora-decoder/blob/main/index.html
|
||||||
|
// dev: copy decoder files from node/ogv/dist/* to project dir
|
||||||
|
// dist: .... to dist
|
||||||
|
|
||||||
|
export function loadVp9() {
|
||||||
|
OGVLoader.loadClass(
|
||||||
|
"OGVDecoderVideoVP9W",
|
||||||
|
(videoCodecClass) => {
|
||||||
|
videoCodecClass().then((decoder) => {
|
||||||
|
decoder.init(() => {
|
||||||
|
onVp9Ready(decoder)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
{ worker: true }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function loadOpus() {
|
||||||
|
OGVLoader.loadClass(
|
||||||
|
"OGVDecoderAudioOpusW",
|
||||||
|
(audioCodecClass) => {
|
||||||
|
audioCodecClass().then((decoder) => {
|
||||||
|
decoder.init(() => {
|
||||||
|
onOpusReady(decoder)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
{ worker: true }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function onVp9Ready(decoder) {
|
||||||
|
console.log("Vp9 decoder ready");
|
||||||
|
|
||||||
|
/*
|
||||||
|
decoder.processFrame(buffer, () => {
|
||||||
|
player.drawFrame(decoder.frameBuffer)
|
||||||
|
})
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
async function onOpusReady(decoder) {
|
||||||
|
console.log("Opus decoder ready");
|
||||||
|
}
|
@ -1,4 +1,8 @@
|
|||||||
import './style.css'
|
import './style.css';
|
||||||
|
import { loadVp9, loadOpus } from "./codec";
|
||||||
|
|
||||||
|
loadVp9();
|
||||||
|
loadOpus();
|
||||||
|
|
||||||
const app = document.querySelector<HTMLDivElement>('#app')!
|
const app = document.querySelector<HTMLDivElement>('#app')!
|
||||||
|
|
||||||
|
2
src/vite-env.d.ts
vendored
2
src/vite-env.d.ts
vendored
@ -1 +1 @@
|
|||||||
/// <reference types="vite/client" />
|
/// <reference types="vite/client" />
|
@ -3,7 +3,11 @@
|
|||||||
"target": "ESNext",
|
"target": "ESNext",
|
||||||
"useDefineForClassFields": true,
|
"useDefineForClassFields": true,
|
||||||
"module": "ESNext",
|
"module": "ESNext",
|
||||||
"lib": ["ESNext", "DOM"],
|
"allowJs": true,
|
||||||
|
"lib": [
|
||||||
|
"ESNext",
|
||||||
|
"DOM"
|
||||||
|
],
|
||||||
"moduleResolution": "Node",
|
"moduleResolution": "Node",
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
@ -14,5 +18,7 @@
|
|||||||
"noUnusedParameters": true,
|
"noUnusedParameters": true,
|
||||||
"noImplicitReturns": true
|
"noImplicitReturns": true
|
||||||
},
|
},
|
||||||
"include": ["./src"]
|
"include": [
|
||||||
}
|
"./src"
|
||||||
|
]
|
||||||
|
}
|
24
yarn.lock
24
yarn.lock
@ -2,6 +2,13 @@
|
|||||||
# yarn lockfile v1
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
|
"@babel/runtime@^7.16.7":
|
||||||
|
version "7.16.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa"
|
||||||
|
integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==
|
||||||
|
dependencies:
|
||||||
|
regenerator-runtime "^0.13.4"
|
||||||
|
|
||||||
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
|
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
|
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
|
||||||
@ -207,6 +214,11 @@ is-core-module@^2.8.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
has "^1.0.3"
|
has "^1.0.3"
|
||||||
|
|
||||||
|
libsodium@^0.7.9:
|
||||||
|
version "0.7.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.9.tgz#4bb7bcbf662ddd920d8795c227ae25bbbfa3821b"
|
||||||
|
integrity sha512-gfeADtR4D/CM0oRUviKBViMGXZDgnFdMKMzHsvBdqLBHd9ySi6EtYnmuhHVDDYgYpAO8eU8hEY+F8vIUAPh08A==
|
||||||
|
|
||||||
lodash@^4.17.15:
|
lodash@^4.17.15:
|
||||||
version "4.17.21"
|
version "4.17.21"
|
||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||||
@ -227,6 +239,13 @@ object-hash@^1.3.1:
|
|||||||
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df"
|
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df"
|
||||||
integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==
|
integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==
|
||||||
|
|
||||||
|
ogv@^1.8.6:
|
||||||
|
version "1.8.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/ogv/-/ogv-1.8.6.tgz#0e6fa1c166802e3a405b1b318d8eb27d2544cce9"
|
||||||
|
integrity sha512-YuvO37U7Hc0mIm/TyAbyn3qVDKgg+4b+ViU73qEGzEKVX8bdxEVH08SoYrGLTJ2b8Z1/IEx8Vdy0hO4CWhRMOA==
|
||||||
|
dependencies:
|
||||||
|
"@babel/runtime" "^7.16.7"
|
||||||
|
|
||||||
path-parse@^1.0.7:
|
path-parse@^1.0.7:
|
||||||
version "1.0.7"
|
version "1.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||||
@ -270,6 +289,11 @@ protobufjs@^6.8.8:
|
|||||||
"@types/node" ">=13.7.0"
|
"@types/node" ">=13.7.0"
|
||||||
long "^4.0.0"
|
long "^4.0.0"
|
||||||
|
|
||||||
|
regenerator-runtime@^0.13.4:
|
||||||
|
version "0.13.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
|
||||||
|
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
|
||||||
|
|
||||||
resolve@^1.20.0:
|
resolve@^1.20.0:
|
||||||
version "1.21.0"
|
version "1.21.0"
|
||||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f"
|
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user