M4: suggest replace bitmap font with drawtext filter
This commit is contained in:
46
docs_v1.0/M4_workspace/2026-05-08_bitmap_font_to_drawtext.md
Normal file
46
docs_v1.0/M4_workspace/2026-05-08_bitmap_font_to_drawtext.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Bitmap Font → DrawText 建議
|
||||
|
||||
## 現狀
|
||||
|
||||
`media_api.rs:307-322` 使用自製 bitmap 點陣字渲染 trace label:
|
||||
|
||||
```rust
|
||||
for ch in label.chars() {
|
||||
let bm = bitmap_char(ch);
|
||||
for (row, bits) in bm.iter().enumerate() {
|
||||
for col in 0..5 {
|
||||
if bits & (1 << (4 - col)) != 0 {
|
||||
// 每個 pixel 一個 drawbox 命令
|
||||
parts.push(format!("drawbox=x={}:y={}:w=3:h=3:..."));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**問題**:
|
||||
1. 每個字母 ∼35 個 drawbox,每個 detection ∼175 個
|
||||
2. 1109 detection → **194,000 個 drawbox 命令** → ARG_MAX / 效能問題
|
||||
3. 渲染效果像點陣字,不美觀
|
||||
|
||||
## 建議
|
||||
|
||||
M4 已安裝 `ffmpeg-full`(含 drawtext filter),改用原生文字渲染:
|
||||
|
||||
```diff
|
||||
- // 自製 bitmap (35 drawbox/字母)
|
||||
- drawbox=x=...:w=3:h=3:t=fill:enable='between(n,...)'
|
||||
+ // ffmpeg drawtext (1 filter)
|
||||
+ drawtext=text='t3128':fontsize=24:fontcolor=red:x=10:y=10
|
||||
```
|
||||
|
||||
**效益**:
|
||||
| 項目 | 現在 (bitmap) | 建議 (drawtext) |
|
||||
|------|:-------------:|:---------------:|
|
||||
| filter 數量/字 | ∼35 | 1 |
|
||||
| filter 數量/trace #3128 | ∼194,000 | ∼1,109 |
|
||||
| 字型品質 | 點陣 3×3 | 平滑向量字型 |
|
||||
| Unicode 中文 | ❌ | ✅ (加 fontfile=) |
|
||||
| ARG_MAX 風險 | ❌ 高 | ✅ 低 |
|
||||
|
||||
`media_api.rs` 中的 `bitmap_char()` 函數和所有 drawbox 的 pixel loop 可以移除。
|
||||
Reference in New Issue
Block a user