docs: update mining demo and scale video crops
- Refresh mining demo assets and documentation references - Scale mpv crop coordinates for resized OBS recordings
@@ -15,7 +15,7 @@ Integrates Yomitan and mpv - on-screen lookups, mine to Anki, and track immersio
|
|||||||
[](https://www.gnu.org/licenses/gpl-3.0)
|
[](https://www.gnu.org/licenses/gpl-3.0)
|
||||||
[](https://www.typescriptlang.org)
|
[](https://www.typescriptlang.org)
|
||||||
|
|
||||||
[](https://github.com/user-attachments/assets/89e61895-e2b7-4b47-8d50-a35afe4132b2)
|
[](./assets/minecard.mp4)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 23 MiB |
|
Before Width: | Height: | Size: 303 KiB |
|
Before Width: | Height: | Size: 3.0 MiB After Width: | Height: | Size: 3.8 MiB |
@@ -0,0 +1,4 @@
|
|||||||
|
type: docs
|
||||||
|
area: docs
|
||||||
|
|
||||||
|
- Replaced the README and documentation mining demo with the current card-mining workflow.
|
||||||
@@ -5,7 +5,7 @@ Short recordings of SubMiner's key features and integrations from real playback
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { withBase } from 'vitepress';
|
import { withBase } from 'vitepress';
|
||||||
|
|
||||||
const v = '20260301-1';
|
const v = '20260819-1';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
## Anki Card Mining & Enrichment
|
## Anki Card Mining & Enrichment
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ features:
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { withBase } from 'vitepress';
|
import { withBase } from 'vitepress';
|
||||||
|
|
||||||
const demoAssetVersion = '20260223-2';
|
const demoAssetVersion = '20260819-1';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="landing-shell">
|
<div class="landing-shell">
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 23 MiB |
|
Before Width: | Height: | Size: 303 KiB |
|
Before Width: | Height: | Size: 523 KiB |
|
Before Width: | Height: | Size: 3.0 MiB After Width: | Height: | Size: 3.8 MiB |
@@ -19,7 +19,8 @@ Options:
|
|||||||
-w, --webp Generate animated WebP preview
|
-w, --webp Generate animated WebP preview
|
||||||
|
|
||||||
Encoding profile:
|
Encoding profile:
|
||||||
- Crop: 1920x1080 at x=760 y=200
|
- Crop: mpv region at 1920x1080, x=760 y=205 on a 3440x1440 canvas
|
||||||
|
- Output size: 1920x1080
|
||||||
- MP4: H.264 + AAC
|
- MP4: H.264 + AAC
|
||||||
- WebM: AV1/VP9 + Opus at 30 fps
|
- WebM: AV1/VP9 + Opus at 30 fps
|
||||||
USAGE
|
USAGE
|
||||||
@@ -148,7 +149,8 @@ pick_webp_encoder() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
crop_vf="crop=1920:1080:760:205"
|
# OBS may resize the 3440x1440 canvas, so scale the mpv bounds with the input.
|
||||||
|
crop_vf="crop=1920*iw/3440:1080*ih/1440:760*iw/3440:205*ih/1440,scale=1920:1080:flags=lanczos"
|
||||||
webm_vf="${crop_vf},fps=30"
|
webm_vf="${crop_vf},fps=30"
|
||||||
|
|
||||||
echo "Generating MP4: $mp4_out"
|
echo "Generating MP4: $mp4_out"
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ function toBashPath(filePath: string): string {
|
|||||||
return `${drive.toUpperCase()}:/${rest}`;
|
return `${drive.toUpperCase()}:/${rest}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
test('mkv-to-readme-video accepts libwebp_anim when libwebp is unavailable', () => {
|
test('mkv-to-readme-video builds every output with the scaled mpv crop', () => {
|
||||||
withTempDir((root) => {
|
withTempDir((root) => {
|
||||||
const binDir = path.join(root, 'bin');
|
const binDir = path.join(root, 'bin');
|
||||||
const inputPath = path.join(root, 'sample.mkv');
|
const inputPath = path.join(root, 'sample.mkv');
|
||||||
@@ -104,5 +104,9 @@ touch "$output"
|
|||||||
|
|
||||||
const ffmpegLog = fs.readFileSync(ffmpegLogPath, 'utf8');
|
const ffmpegLog = fs.readFileSync(ffmpegLogPath, 'utf8');
|
||||||
assert.match(ffmpegLog, /-c:v libwebp_anim/);
|
assert.match(ffmpegLog, /-c:v libwebp_anim/);
|
||||||
|
const scaledCropUses = ffmpegLog.match(
|
||||||
|
/-vf crop=1920\*iw\/3440:1080\*ih\/1440:760\*iw\/3440:205\*ih\/1440,scale=1920:1080:flags=lanczos/g,
|
||||||
|
);
|
||||||
|
assert.equal(scaledCropUses?.length, 4);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||