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);
        }
Exemplo n.º 2
0
        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 });
        }
Exemplo n.º 3
0
        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");
                }
            }
        }