@@ -57,10 +57,11 @@ private async void MenuItem_PlayWindow_Click(object sender, RoutedEventArgs e)
5757 Models . DataCard dataCard = GetDataCard ( sender ) ;
5858 try
5959 {
60- bool hasHls = await IsThereHLVPresentAsync ( dataCard . Uid ) ;
61- if ( hasHls )
60+ string hlsUrl = await GetHlsStreamUrlAsync ( dataCard . Uid ) ;
61+ if ( ! string . IsNullOrEmpty ( hlsUrl ) )
6262 {
63- Windows . VlcPlayWindow vlcPlayWindow = new Windows . VlcPlayWindow ( dataCard . Uid ) ;
63+ //取流结果直接传给播放窗复用,避免开窗后再发起一次重复的取流请求
64+ Windows . VlcPlayWindow vlcPlayWindow = new Windows . VlcPlayWindow ( dataCard . Uid , hlsUrl ) ;
6465 vlcPlayWindow . Show ( ) ;
6566 }
6667 else
@@ -78,9 +79,9 @@ private async void MenuItem_PlayWindow_Click(object sender, RoutedEventArgs e)
7879 }
7980
8081 /// <summary>
81- /// 异步检测是否有HLS流
82+ /// 异步获取HLS流地址,获取不到(无HLS流或请求失败)时返回null
8283 /// </summary>
83- public async Task < bool > IsThereHLVPresentAsync ( long uid )
84+ public async Task < string > GetHlsStreamUrlAsync ( long uid )
8485 {
8586 return await Task . Run ( ( ) =>
8687 {
@@ -89,9 +90,9 @@ public async Task<bool> IsThereHLVPresentAsync(long uid)
8990 string url = "" ;
9091 if ( roomCard != null && Core . RuntimeObject . Download . HLS . GetHlsAvcUrl ( roomCard , Core . Config . Core_RunConfig . _DefaultPlayResolution , out url ) && ! string . IsNullOrEmpty ( url ) )
9192 {
92- return true ;
93+ return url ;
9394 }
94- return false ;
95+ return null ;
9596 } ) ;
9697 }
9798
@@ -104,10 +105,11 @@ private async void Border_DoubleClickToOpenPlaybackWindow(object sender, MouseBu
104105 Models . DataCard dataCard = ( Models . DataCard ) grid . DataContext ;
105106 try
106107 {
107- bool hasHls = await IsThereHLVPresentAsync ( dataCard . Uid ) ;
108- if ( hasHls )
108+ string hlsUrl = await GetHlsStreamUrlAsync ( dataCard . Uid ) ;
109+ if ( ! string . IsNullOrEmpty ( hlsUrl ) )
109110 {
110- Windows . VlcPlayWindow vlcPlayWindow = new Windows . VlcPlayWindow ( dataCard . Uid ) ;
111+ //取流结果直接传给播放窗复用,避免开窗后再发起一次重复的取流请求
112+ Windows . VlcPlayWindow vlcPlayWindow = new Windows . VlcPlayWindow ( dataCard . Uid , hlsUrl ) ;
111113 vlcPlayWindow . Show ( ) ;
112114 }
113115 else
0 commit comments