Ejemplo n.º 1
0
        void airplayServer_PlaybackPositionChanged(object sender, PlaybackPositionEventArgs e)
        {
            AirplayVideoPlayer currentVideoPlayer = getPlayer <AirplayVideoPlayer>();

            if (currentVideoPlayer != null)
            {
                if (e.Position >= 0 && e.Position <= currentVideoPlayer.Duration.TotalSeconds)
                {
                    currentVideoPlayer.CurrentTime = TimeSpan.FromSeconds(e.Position);
                }
            }
            else
            {
                lock (videoInfoSync)
                {
                    if (currentVideoUrl == null && e.SessionId == lastVideoSessionId && lastVideoUrl != null)
                    {
                        airplayServer.SetPlaybackState(currentVideoSessionId, PlaybackCategory.Video, ShairportSharp.Airplay.PlaybackState.Loading);
                        currentVideoSessionId = lastVideoSessionId;
                        currentVideoUrl       = lastVideoUrl;
                        startVideoLoading(currentVideoUrl, lastUseMPUrlSourceFilter);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        void airplayServer_PlaybackInfoRequested(object sender, PlaybackInfoEventArgs e)
        {
            AirplayVideoPlayer currentVideoPlayer = getPlayer <AirplayVideoPlayer>();

            if (currentVideoPlayer != null)
            {
                PlaybackInfo playbackInfo = e.PlaybackInfo;
                playbackInfo.Duration = currentVideoPlayer.Duration.TotalSeconds;
                playbackInfo.Position = currentVideoPlayer.CurrentTime.TotalSeconds;
                playbackInfo.PlaybackLikelyToKeepUp = true;
                playbackInfo.ReadyToPlay            = true;
                PlaybackTimeRange timeRange = new PlaybackTimeRange();
                timeRange.Duration = playbackInfo.Duration;
                playbackInfo.LoadedTimeRanges.Add(timeRange);
                playbackInfo.SeekableTimeRanges.Add(timeRange);
                if (currentVideoPlayer.IsPaused)
                {
                    playbackInfo.Rate = 0;
                }
                else
                {
                    playbackInfo.Rate = 1;
                }
            }
        }
Ejemplo n.º 3
0
        void airplayServer_GetPlaybackPosition(object sender, GetPlaybackPositionEventArgs e)
        {
            AirplayVideoPlayer currentVideoPlayer = getPlayer <AirplayVideoPlayer>();

            if (currentVideoPlayer != null)
            {
                e.Duration = currentVideoPlayer.Duration.TotalSeconds;
                e.Position = currentVideoPlayer.CurrentTime.TotalSeconds;
            }
        }
Ejemplo n.º 4
0
        void airplayServer_PlaybackRateChanged(object sender, PlaybackRateEventArgs e)
        {
            AirplayVideoPlayer currentVideoPlayer = getPlayer <AirplayVideoPlayer>();

            if (currentVideoPlayer != null)
            {
                if (e.Rate > 0)
                {
                    if (currentVideoPlayer.IsPaused)
                    {
                        currentVideoPlayer.Resume();
                    }
                }
                else if (e.Rate == 0)
                {
                    if (!currentVideoPlayer.IsPaused)
                    {
                        currentVideoPlayer.Pause();
                    }
                }
            }
        }