private async Task <MediaStatus> LoadMedia(ChromeCastClient client, ChromecastApplication defaultApplication, CancellationToken cancellationToken) { Trace.WriteLine(Invariant($"Loading Media [{playUri}] in on Chromecast {device.Name}")); var metadata = new GenericMediaMetadata() { title = "Homeseer", metadataType = SharpCaster.Models.Enums.MetadataType.GENERIC, }; var mediaStatus = await client.MediaChannel.LoadMedia(defaultApplication, playUri, null, cancellationToken, metadata : metadata, duration : duration.HasValue?duration.Value.TotalSeconds : 0D).ConfigureAwait(false); Trace.WriteLine(Invariant($"Loaded Media [{playUri}] in on Chromecast {device.Name}")); return(mediaStatus); }
public async Task LoadMedia(string title, string description, ImageSource poster) { Title = title; Description = description; Poster = poster; var track = new Track { Name = "English Subtitle", TrackId = 100, Type = "TEXT", SubType = "captions", Language = "en-US", TrackContentId = "https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/tracks/DesigningForGoogleCast-en.vtt" }; var metadata = new GenericMediaMetadata { title = title }; await _controller.LoadMedia("https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/mp4/DesigningForGoogleCast.mp4", "video/mp4", metadata, "BUFFERED", 0D, null, new[] { track }, new[] { 100 }); }
private async Task LoadMedia(string title) { while (_controller == null) { await Task.Delay(500); } Uri uriResult; var isRemote = Uri.TryCreate(_mediaPath, UriKind.Absolute, out uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); Track track = null; if (!string.IsNullOrEmpty(_subtitleFilePath)) { var message = MimeMessage.Load(_subtitleFilePath); _subtitleServer = await _fileServerService.StartStaticFileServer(_subtitleFilePath, message.BodyParts.FirstOrDefault().ContentType.Name, 9001); track = new Track { Name = "Subtitle", TrackId = 100, Type = "TEXT", SubType = "captions", TrackContentId = $"http://{LocalIPAddress()}:9001" }; } var metadata = new GenericMediaMetadata { title = title }; if (!isRemote) { try { var message = MimeMessage.Load(_mediaPath); _mediaServer = await _fileServerService.StartStreamFileServer(_mediaPath, message.BodyParts.FirstOrDefault().ContentType.Name, 9000); await _controller.LoadMedia($"http://{LocalIPAddress()}:9000", message.BodyParts.FirstOrDefault().ContentType.Name, metadata, "LIVE", 0D, null, track == null?null : new[] { track }, new[] { 100 }); } catch (Exception ex) { Logger.Error(ex); Messenger.Default.Send( new UnhandledExceptionMessage( new PopcornException(LocalizationProviderHelper.GetLocalizedValue <string>("CastFailed")))); } } else { if (track != null) { await _controller.LoadMedia(_mediaPath, "video/mp4", metadata, "BUFFERED", 0D, null, new[] { track }, new[] { 100 }); } else { await _controller.LoadMedia(_mediaPath, "video/mp4", metadata, "BUFFERED"); } } }