* Read an ffprobe tag case-insensitively. ffmpeg/libavformat versions disagree * on tag casing — VP9 alpha is `alpha_mode` in older builds and `ALPHA_MODE` * in newer ones; HDR tags vary similarly. Use this for any sidecar tag where * you want to be resilient across muxer versions.
(tags: Record<string, string | undefined> | undefined, name: string)
| 227 | * you want to be resilient across muxer versions. |
| 228 | */ |
| 229 | function readTagCI(tags: Record<string, string | undefined> | undefined, name: string): string { |
| 230 | if (!tags) return ""; |
| 231 | const target = name.toLowerCase(); |
| 232 | for (const [key, value] of Object.entries(tags)) { |
| 233 | if (key.toLowerCase() === target && typeof value === "string") return value; |
| 234 | } |
| 235 | return ""; |
| 236 | } |
| 237 | |
| 238 | function parseFrameRate(frameRateStr: string | undefined): number { |
| 239 | if (!frameRateStr) return 0; |
no test coverage detected