From 911eeb90526327c9c472aceafcc9964302b67ca2 Mon Sep 17 00:00:00 2001 From: Developer Date: Tue, 10 Mar 2026 20:09:50 +0800 Subject: [PATCH] fix: use snake_case field names matching Bilibili DASH API response MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit B站 API 实际返回 segment_base.initialization / index_range 而非 segmentBase.Initialization / indexRange,修正类型定义和 MPD 生成逻辑。 segment_base 设为可选,缺失时不生成 SegmentBase 元素(ExoPlayer fallback)。 --- services/types.ts | 8 ++++---- utils/dash.ts | 20 ++++++++++++-------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/services/types.ts b/services/types.ts index 096a19d..8afa297 100644 --- a/services/types.ts +++ b/services/types.ts @@ -35,8 +35,8 @@ export interface Comment { } export interface DashSegmentBase { - Initialization: string; - indexRange: string; + initialization: string; + index_range: string; } export interface DashVideoItem { @@ -48,7 +48,7 @@ export interface DashVideoItem { width: number; height: number; frameRate: string; - segmentBase: DashSegmentBase; + segment_base?: DashSegmentBase; } export interface DashAudioItem { @@ -57,7 +57,7 @@ export interface DashAudioItem { bandwidth: number; mimeType: string; codecs: string; - segmentBase: DashSegmentBase; + segment_base?: DashSegmentBase; } export interface PlayUrlResponse { diff --git a/utils/dash.ts b/utils/dash.ts index ef90843..9663bea 100644 --- a/utils/dash.ts +++ b/utils/dash.ts @@ -15,6 +15,16 @@ export function buildDashDataUri(playData: PlayUrlResponse, qn: number): string const dur = dash.duration; + const vSeg = video.segment_base; + const aSeg = audio.segment_base; + + const videoSegmentBase = vSeg + ? `\n \n \n ` + : ''; + const audioSegmentBase = aSeg + ? `\n \n \n ` + : ''; + const xml = ` - ${escapeXml(video.baseUrl)} - - - + ${escapeXml(video.baseUrl)}${videoSegmentBase} - ${escapeXml(audio.baseUrl)} - - - + ${escapeXml(audio.baseUrl)}${audioSegmentBase}