Exemplo n.º 1
0
        private async void AddSubtitle(StorageFile file)
        {
            IRandomAccessStream strSource = await file.OpenReadAsync();

            var ttsUri    = new Uri(file.Path);
            var ttsPicked = TimedTextSource.CreateFromStream(strSource);

            ttsMap[ttsPicked]   = ttsUri;
            ttsPicked.Resolved += TtsEn_Resolved;
            playbackItem.Source.ExternalTimedTextSources.Add(ttsPicked);
            // Present the first track
            playbackItem.TimedMetadataTracksChanged += (item, args) =>
            {
                Debug.WriteLine($"TimedMetadataTracksChanged, Number of tracks: {item.TimedMetadataTracks.Count}");
                uint changedTrackIndex          = args.Index;
                TimedMetadataTrack changedTrack = playbackItem.TimedMetadataTracks[(int)changedTrackIndex];
                // keeping 0 as index in below line will make the first subtitle that was found to be the activated on playback
                playbackItem.TimedMetadataTracks.SetPresentationMode(0, TimedMetadataTrackPresentationMode.PlatformPresented);
                var activeCues = playbackItem.TimedMetadataTracks[0].ActiveCues;
                var itr        = activeCues.GetEnumerator();

                while (itr.MoveNext())
                {
                    Debug.WriteLine("current : " + itr.Current);
                }
                playbackItem.TimedMetadataTracks[0].CueEntered += TimedText_CueEntered;
                playbackItem.TimedMetadataTracks[0].CueExited  += TimedText_CueExited;
            };
        }
Exemplo n.º 2
0
        protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            appDisplayRequest = new DisplayRequest();
            appDisplayRequest.RequestActive();
            base.OnNavigatedTo(e);
            MediaFile     file;
            StorageFile   storageFile;
            StorageFolder storageFolder;

            if (e.Parameter.GetType() == typeof(MediaFile) || e.Parameter.GetType() == typeof(VideoFile) || e.Parameter.GetType() == typeof(AudioFile))
            {
                file        = (MediaFile)e.Parameter;
                storageFile = await StorageFile.GetFileFromPathAsync(file.Path);

                Console.WriteLine(storageFile.Path);
            }
            else
            {
                storageFile = (StorageFile)e.Parameter;
            }
            bool            flag        = false;
            TimedTextSource timedsource = null;

            storageFolder = await storageFile.GetParentAsync();

            string subtitlename = storageFile.Name.Substring(0, storageFile.Name.LastIndexOf('.')) + ".srt";

            try
            {
                StorageFile subtitle = await storageFolder.GetFileAsync(subtitlename);

                var stream = await subtitle.OpenAsync(FileAccessMode.Read);

                timedsource = TimedTextSource.CreateFromStream(stream);
                flag        = true;
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            var source = MediaSource.CreateFromStorageFile(storageFile);

            if (flag)
            {
                source.ExternalTimedTextSources.Add(timedsource);
            }

            mediaElement.Source = source;

            mediaElement.AutoPlay = true;
            mediaElement.MediaPlayer.Play();
        }
Exemplo n.º 3
0
        private void AddSubtitle(StorageFile file, IRandomAccessStream strSource)
        {
            var ttsUri    = new Uri(file.Path);
            var ttsPicked = TimedTextSource.CreateFromStream(strSource);

            ttsMap[ttsPicked]   = ttsUri;
            ttsPicked.Resolved += Tts_Resolved;
            playbackItem.Source.ExternalTimedTextSources.Add(ttsPicked);
            // Present the first track
            playbackItem.TimedMetadataTracksChanged += (item, args) =>
            {
                Debug.WriteLine($"TimedMetadataTracksChanged, Number of tracks: {item.TimedMetadataTracks.Count}");
                uint changedTrackIndex          = args.Index;
                TimedMetadataTrack changedTrack = playbackItem.TimedMetadataTracks[(int)changedTrackIndex];
                playbackItem.TimedMetadataTracks.SetPresentationMode(changedTrackIndex, TimedMetadataTrackPresentationMode.PlatformPresented);
            };
        }
Exemplo n.º 4
0
        private async void LoadSubtitleFile(object sender, RoutedEventArgs e)
        {
            if (playbackItem != null)
            {
                FileOpenPicker filePicker = new FileOpenPicker();
                filePicker.ViewMode = PickerViewMode.Thumbnail;
                filePicker.SuggestedStartLocation = PickerLocationId.VideosLibrary;
                filePicker.FileTypeFilter.Add("*");

                // Show file picker so user can select a file
                StorageFile file = await filePicker.PickSingleFileAsync();

                if (file != null)
                {
                    var track = TimedTextSource.CreateFromStream(await file.OpenReadAsync());
                    playbackItem.Source.ExternalTimedTextSources.Add(track);
                    track.Resolved += Track_Resolved;
                }
            }
            else
            {
                await DisplayErrorMessage("Please open a media file before loading an external subtitle for it.");
            }
        }