mirror of
https://github.com/truewhile/MeBox.git
synced 2026-10-02 12:26:36 +08:00
refactor: split modules and harden scraping workflows
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import type { Media } from '../types'
|
||||
|
||||
export type PlayerMode = 'direct' | 'hls'
|
||||
|
||||
const directContainers = ['mp4', 'webm', 'm4v']
|
||||
const directVideoCodecs = ['h264', 'avc', 'avc1']
|
||||
const directAudioCodecs = ['aac', 'mp3', 'opus']
|
||||
|
||||
export function pickPlayerMode(media: Media): PlayerMode {
|
||||
return needsTranscodeForBrowser(media) ? 'hls' : 'direct'
|
||||
}
|
||||
|
||||
export function needsTranscodeForBrowser(media: Media): boolean {
|
||||
const container = (media.container ?? '').toLowerCase()
|
||||
const videoCodec = (media.video_codec ?? '').toLowerCase()
|
||||
const audioCodec = (media.audio_codec ?? '').toLowerCase()
|
||||
const containerOK = directContainers.some((item) => container.includes(item))
|
||||
const videoOK = !videoCodec || directVideoCodecs.some((item) => videoCodec.includes(item))
|
||||
const audioOK = !audioCodec || directAudioCodecs.some((item) => audioCodec.includes(item))
|
||||
return !(containerOK && videoOK && audioOK)
|
||||
}
|
||||
Reference in New Issue
Block a user