Archived
1
0

Livestreams support on new player

This commit is contained in:
Michael Gordeev
2019-04-05 17:49:39 +03:00
parent 9f0cccaad9
commit f9f0f0aaee
4 changed files with 29 additions and 5 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<items> <items>
<item time="2019-02-12" version="0.4"> <item time="2019-04-05" version="0.4">
<content> <content>
<en-US>### What's new: <en-US>### What's new:
- Improved stability and speed of the app - Improved stability and speed of the app
+14 -1
View File
@@ -21,6 +21,7 @@ namespace FoxTube
public sealed class PlayerControls : MediaTransportControls public sealed class PlayerControls : MediaTransportControls
{ {
public event RoutedEventHandler CloseRequested; public event RoutedEventHandler CloseRequested;
public event RoutedEventHandler LiveRequested;
public event MinimodeChangedEventHandler MiniModeChanged; public event MinimodeChangedEventHandler MiniModeChanged;
public event RoutedEventHandler NextRequested; public event RoutedEventHandler NextRequested;
@@ -63,6 +64,8 @@ namespace FoxTube
(GetTemplateChild("ProgressSlider") as Slider).ValueChanged += ProgressSlider_ValueChanged; (GetTemplateChild("ProgressSlider") as Slider).ValueChanged += ProgressSlider_ValueChanged;
(GetTemplateChild("goLive") as Button).Click += (s, e) => LiveRequested.Invoke(s, e);
if (queue.Count > 0) if (queue.Count > 0)
foreach (Action i in queue) foreach (Action i in queue)
i(); i();
@@ -321,7 +324,17 @@ namespace FoxTube
return; return;
} }
// TODO: Set up stream UI (GetTemplateChild("goLive") as Button).Visibility = Visibility.Visible;
(GetTemplateChild("sliderPan") as Grid).Children.Remove(GetTemplateChild("TimeElapsedElement") as TextBlock);
(GetTemplateChild("rightStack") as StackPanel).Children.Insert(0, GetTemplateChild("TimeElapsedElement") as TextBlock);
(GetTemplateChild("TimeElapsedElement") as TextBlock).VerticalAlignment = VerticalAlignment.Center;
(GetTemplateChild("TimeElapsedElement") as TextBlock).FontSize = 18;
(GetTemplateChild("TimeElapsedElement") as TextBlock).Margin = new Thickness(10, 0, 10, 0);
(GetTemplateChild("sliderPan") as Grid).Visibility = Visibility.Collapsed;
(GetTemplateChild("cc") as Button).Visibility = Visibility.Collapsed;
(GetTemplateChild("quality") as Button).Visibility = Visibility.Collapsed;
Player.Source = url.ToUri();
} }
} }
} }
@@ -55,6 +55,9 @@ namespace FoxTube
else if (item.Snippet.LiveBroadcastContent == "live") else if (item.Snippet.LiveBroadcastContent == "live")
{ {
InitializeContols(); InitializeContols();
Controls.IsSkipBackwardButtonVisible = false;
Controls.IsSkipForwardButtonVisible = false;
Controls.LiveRequested += Controls_LiveRequested;
Controls.SetStream((await new YoutubeClient().GetVideoMediaStreamInfosAsync(item.Id)).HlsLiveStreamUrl); Controls.SetStream((await new YoutubeClient().GetVideoMediaStreamInfosAsync(item.Id)).HlsLiveStreamUrl);
} }
else else
@@ -67,6 +70,11 @@ namespace FoxTube
Visibility = Visibility.Visible; Visibility = Visibility.Visible;
} }
private void Controls_LiveRequested(object sender, RoutedEventArgs e)
{
videoSource.Position = videoSource.NaturalDuration.TimeSpan;
}
public void InitializeContols() public void InitializeContols()
{ {
videoSource.Volume = SettingsStorage.Volume; videoSource.Volume = SettingsStorage.Volume;
+6 -3
View File
@@ -1,4 +1,4 @@
<ResourceDictionary <ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:FoxTube" xmlns:local="using:FoxTube"
@@ -533,7 +533,7 @@
<Button x:Name="compactClose" VerticalAlignment="Top" HorizontalAlignment="Right"> <Button x:Name="compactClose" VerticalAlignment="Top" HorizontalAlignment="Right">
<FontIcon Glyph="&#xE106;"/> <FontIcon Glyph="&#xE106;"/>
</Button> </Button>
<Button Height="32" Width="50" Margin="0,0,48,0" VerticalAlignment="Top" HorizontalAlignment="Right" FontFamily="Segoe MDL2 Assets" Content="&#xE700;" IsHitTestVisible="False" x:Name="dragholder"/> <Button Height="32" Width="50" Margin="0,0,48,0" VerticalAlignment="Top" HorizontalAlignment="Right" Visibility="Collapsed" FontFamily="Segoe MDL2 Assets" Content="&#xE700;" IsHitTestVisible="False" x:Name="dragholder"/>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" x:Name="centralStack"/> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" x:Name="centralStack"/>
@@ -574,9 +574,12 @@
</Flyout> </Flyout>
</Button.Flyout> </Button.Flyout>
</Button> </Button>
<Button x:Name="goLive" Width="NaN" Visibility="Collapsed">
<TextBlock Text="🔴 LIVE"/>
</Button>
</StackPanel> </StackPanel>
<Grid Grid.Column="1" Margin="10,5"> <Grid Grid.Column="1" Margin="10,5" x:Name="sliderPan">
<TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Left" x:Name="TimeElapsedElement" Text="00:00"/> <TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Left" x:Name="TimeElapsedElement" Text="00:00"/>
<TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Right" x:Name="TimeRemainingElement" Text="00:00"/> <TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Right" x:Name="TimeRemainingElement" Text="00:00"/>
<Grid VerticalAlignment="Top" Height="4" Margin="0,15,0,0"> <Grid VerticalAlignment="Top" Height="4" Margin="0,15,0,0">