Ejemplo n.º 1
0
 private void OnMediaFailed(object sender, ExceptionRoutedEventArgs e)
 {
     this.mediaElement.Source = null;
     if (this.flvMediaStreamSource != null)
     {
         this.flvMediaStreamSource.Dispose();
         this.flvMediaStreamSource = null;
     }
     if (this.videoStream != null)
     {
         this.videoStream.Dispose();
         this.videoStream = null;
     }
     this.ShowMessage("OnMediaFailed");
 }
Ejemplo n.º 2
0
 private void MainPage_Unloaded(object sender, RoutedEventArgs e)
 {
     if (this.mediaElement != null)
     {
         this.mediaElement.Source = null;
     }
     if (this.flvMediaStreamSource != null)
     {
         this.flvMediaStreamSource.Dispose();
         this.flvMediaStreamSource = null;
     }
     if (this.videoStream != null)
     {
         this.videoStream.Dispose();
         this.videoStream = null;
     }
 }
Ejemplo n.º 3
0
        private async void OpenLocalFile(object sender, RoutedEventArgs e)
        {
            this.Splitter.IsPaneOpen = false;
            FileOpenPicker fileOpenPicker = new FileOpenPicker();

            fileOpenPicker.ViewMode = PickerViewMode.List;
            fileOpenPicker.SuggestedStartLocation = PickerLocationId.VideosLibrary;
            fileOpenPicker.FileTypeFilter.Add(".flv");
            var file = await fileOpenPicker.PickSingleFileAsync();

            if (file == null)
            {
                return;
            }
            this.mediaElement.Source = null;
            if (this.flvMediaStreamSource != null)
            {
                this.flvMediaStreamSource.Dispose();
                this.flvMediaStreamSource = null;
            }
            if (this.videoStream != null)
            {
                this.videoStream.Dispose();
                this.videoStream = null;
            }
            var taskID = ++this.playTaskID;
            IRandomAccessStream fileStream = null;

            try
            {
                fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
            }
            catch (Exception)
            {
            }
            if (taskID != this.playTaskID)
            {
                if (fileStream != null)
                {
                    fileStream.Dispose();
                    fileStream = null;
                }
                return;
            }
            if (fileStream == null)
            {
                this.ShowMessage("Failed to open media");
                return;
            }
            FlvMediaStreamSource fmss = null;

            try
            {
                fmss = await FlvMediaStreamSource.CreateFromRandomAccessStreamAsync(fileStream);
            }
            catch (Exception)
            {
                fileStream.Dispose();
                fileStream = null;
            }
            if (taskID != this.playTaskID)
            {
                if (fmss != null)
                {
                    fmss.Dispose();
                    fmss = null;
                }
                if (fileStream != null)
                {
                    fileStream.Dispose();
                    fileStream = null;
                }
                return;
            }
            if (fmss == null)
            {
                this.ShowMessage("Failed to open media");
                return;
            }
            this.videoStream          = fileStream;
            this.flvMediaStreamSource = fmss;
            mediaElement.SetMediaStreamSource(flvMediaStreamSource.Source);
        }
Ejemplo n.º 4
0
        private async void OpenUrl(object sender, RoutedEventArgs e)
        {
            var url = this.UrlInputBox.Text.Trim();

            if (url.Length == 0)
            {
                return;
            }
            Uri uri = null;

            try
            {
                uri = new Uri(url);
            }
            catch (Exception)
            {
                this.ShowMessage("Bad url");
                return;
            }
            this.mediaElement.Source = null;
            if (this.flvMediaStreamSource != null)
            {
                this.flvMediaStreamSource.Dispose();
                this.flvMediaStreamSource = null;
            }
            if (this.videoStream != null)
            {
                this.videoStream.Dispose();
                this.videoStream = null;
            }
            var taskID = ++this.playTaskID;

            this.Splitter.IsPaneOpen = false;
            IInputStream fileStream = null;

            try
            {
                var hpf = new HttpBaseProtocolFilter();
                hpf.CacheControl.ReadBehavior  = HttpCacheReadBehavior.MostRecent;
                hpf.CacheControl.WriteBehavior = HttpCacheWriteBehavior.NoCache;
                var httpClient = new HttpClient(hpf);
                fileStream = await httpClient.GetInputStreamAsync(uri);
            }
            catch (Exception)
            {
            }
            if (taskID != this.playTaskID)
            {
                if (fileStream != null)
                {
                    fileStream.Dispose();
                    fileStream = null;
                }
                return;
            }
            if (fileStream == null)
            {
                this.ShowMessage("Failed to open media");
                return;
            }
            FlvMediaStreamSource fmss = null;

            try
            {
                fmss = await FlvMediaStreamSource.CreateFromInputStreamAsync(fileStream);
            }
            catch (Exception)
            {
                fileStream.Dispose();
                fileStream = null;
            }
            if (taskID != this.playTaskID)
            {
                if (fmss != null)
                {
                    fmss.Dispose();
                    fmss = null;
                }
                if (fileStream != null)
                {
                    fileStream.Dispose();
                    fileStream = null;
                }
                return;
            }
            if (fmss == null)
            {
                this.ShowMessage("Failed to open media");
                return;
            }
            this.videoStream          = fileStream;
            this.flvMediaStreamSource = fmss;
            mediaElement.SetMediaStreamSource(flvMediaStreamSource.Source);
        }