@@ -312,13 +312,14 @@ public async Task<List<StreamSpec>> ExtractStreamsAsync(string rawText)
312312 var initialization = segmentTemplate . Attribute ( "initialization" ) ? . Value ?? segmentTemplateOuter . Attribute ( "initialization" ) ? . Value ;
313313 if ( initialization != null )
314314 {
315- var initUrl = ParserUtil . ReplaceVars ( ParserUtil . CombineURL ( segBaseUrl , initialization ) , varDic ) ;
315+ var _init = ParserUtil . ReplaceVars ( initialization , varDic ) ;
316+ var initUrl = ParserUtil . CombineURL ( segBaseUrl , _init ) ;
316317 streamSpec . Playlist . MediaInit = new MediaSegment ( ) ;
317318 streamSpec . Playlist . MediaInit . Index = - 1 ; //便于排序
318319 streamSpec . Playlist . MediaInit . Url = initUrl ;
319320 }
320321 //处理分片
321- var media = segmentTemplate . Attribute ( "media" ) ? . Value ?? segmentTemplateOuter . Attribute ( "media" ) ? . Value ;
322+ var mediaTemplate = segmentTemplate . Attribute ( "media" ) ? . Value ?? segmentTemplateOuter . Attribute ( "media" ) ? . Value ;
322323 var segmentTimeline = segmentTemplate . Elements ( ) . Where ( e => e . Name . LocalName == "SegmentTimeline" ) . FirstOrDefault ( ) ;
323324 if ( segmentTimeline != null )
324325 {
@@ -340,11 +341,12 @@ public async Task<List<StreamSpec>> ExtractStreamsAsync(string rawText)
340341 var _repeatCount = Convert . ToInt64 ( _repeatCountStr ) ;
341342 varDic [ DASHTags . TemplateTime ] = currentTime ;
342343 varDic [ DASHTags . TemplateNumber ] = segNumber ++ ;
343- var oriUrl = ParserUtil . CombineURL ( segBaseUrl , media ! ) ;
344- var mediaUrl = ParserUtil . ReplaceVars ( oriUrl , varDic ) ;
344+ var hasTime = mediaTemplate ! . Contains ( DASHTags . TemplateTime ) ;
345+ var media = ParserUtil . ReplaceVars ( mediaTemplate ! , varDic ) ;
346+ var mediaUrl = ParserUtil . CombineURL ( segBaseUrl , media ! ) ;
345347 MediaSegment mediaSegment = new ( ) ;
346348 mediaSegment . Url = mediaUrl ;
347- if ( oriUrl . Contains ( DASHTags . TemplateTime ) )
349+ if ( hasTime )
348350 mediaSegment . NameFromVar = currentTime . ToString ( ) ;
349351 mediaSegment . Duration = _duration / ( double ) timescale ;
350352 mediaSegment . Index = segIndex ++ ;
@@ -360,12 +362,13 @@ public async Task<List<StreamSpec>> ExtractStreamsAsync(string rawText)
360362 MediaSegment _mediaSegment = new ( ) ;
361363 varDic [ DASHTags . TemplateTime ] = currentTime ;
362364 varDic [ DASHTags . TemplateNumber ] = segNumber ++ ;
363- var _oriUrl = ParserUtil . CombineURL ( segBaseUrl , media ! ) ;
364- var _mediaUrl = ParserUtil . ReplaceVars ( _oriUrl , varDic ) ;
365+ var _hashTime = mediaTemplate ! . Contains ( DASHTags . TemplateTime ) ;
366+ var _media = ParserUtil . ReplaceVars ( mediaTemplate ! , varDic ) ;
367+ var _mediaUrl = ParserUtil . CombineURL ( segBaseUrl , _media ) ;
365368 _mediaSegment . Url = _mediaUrl ;
366369 _mediaSegment . Index = segIndex ++ ;
367370 _mediaSegment . Duration = _duration / ( double ) timescale ;
368- if ( _oriUrl . Contains ( DASHTags . TemplateTime ) )
371+ if ( _hashTime )
369372 _mediaSegment . NameFromVar = currentTime . ToString ( ) ;
370373 streamSpec . Playlist . MediaParts [ 0 ] . MediaSegments . Add ( _mediaSegment ) ;
371374 }
@@ -396,11 +399,12 @@ public async Task<List<StreamSpec>> ExtractStreamsAsync(string rawText)
396399 for ( long index = startNumber , segIndex = 0 ; index < startNumber + totalNumber ; index ++ , segIndex ++ )
397400 {
398401 varDic [ DASHTags . TemplateNumber ] = index ;
399- var oriUrl = ParserUtil . CombineURL ( segBaseUrl , media ! ) ;
400- var mediaUrl = ParserUtil . ReplaceVars ( oriUrl , varDic ) ;
402+ var hasNumber = mediaTemplate ! . Contains ( DASHTags . TemplateNumber ) ;
403+ var media = ParserUtil . ReplaceVars ( mediaTemplate ! , varDic ) ;
404+ var mediaUrl = ParserUtil . CombineURL ( segBaseUrl , media ! ) ;
401405 MediaSegment mediaSegment = new ( ) ;
402406 mediaSegment . Url = mediaUrl ;
403- if ( oriUrl . Contains ( DASHTags . TemplateNumber ) )
407+ if ( hasNumber )
404408 mediaSegment . NameFromVar = index . ToString ( ) ;
405409 mediaSegment . Index = isLive ? index : segIndex ; //直播直接用startNumber
406410 mediaSegment . Duration = duration / ( double ) timescale ;
0 commit comments