mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-30 03:51:25 -08:00
refactor(mediabunny): [PKG-MB-03] type inputs and cancel owned loads
This commit is contained in:
1 parent
03451c029b
commit
adba8a3d12
35 files changed
+11260
-3327
No files matched your search
@@ -0,0 +1,47 @@
|
||||
import type { InputTrack } from 'mediabunny'
|
||||
import type { PlaybackMedia } from './media'
|
||||
|
||||
async function getTrackBitrate(track: InputTrack): Promise<number> {
|
||||
return await track.getAverageBitrate() ?? await track.getBitrate() ?? 0
|
||||
}
|
||||
|
||||
export async function getHlsState(media: PlaybackMedia | null) {
|
||||
if (!media?.isHls || !media.input)
|
||||
return null
|
||||
|
||||
const [videoTracks, pairableAudioTracks] = await Promise.all([
|
||||
media.input.getVideoTracks(),
|
||||
media.videoTrack ? media.videoTrack.getPairableAudioTracks() : [],
|
||||
])
|
||||
const [levels, audios] = await Promise.all([
|
||||
Promise.all(videoTracks.map(async (track, index) => ({
|
||||
id: track.id,
|
||||
track,
|
||||
index,
|
||||
name: await track.getName(),
|
||||
height: await track.getDisplayHeight(),
|
||||
bitrate: await getTrackBitrate(track),
|
||||
}))),
|
||||
Promise.all(pairableAudioTracks.map(async (track, index) => {
|
||||
const name = await track.getName()
|
||||
const language = await track.getLanguageCode()
|
||||
return {
|
||||
id: track.id,
|
||||
track,
|
||||
index,
|
||||
name,
|
||||
lang: language,
|
||||
language,
|
||||
bitrate: await getTrackBitrate(track),
|
||||
}
|
||||
})),
|
||||
])
|
||||
return {
|
||||
levels,
|
||||
audios,
|
||||
currentLevel: media.videoTrack ? levels.find(item => item.id === media.videoTrack?.id) ?? null : null,
|
||||
currentAudio: media.audioTrack ? audios.find(item => item.id === media.audioTrack?.id) ?? null : null,
|
||||
videoMode: media.videoMode ?? 'auto',
|
||||
audioMode: media.audioMode ?? 'auto',
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user