Пример #1
0
        //CreateCastMedia
        public void CreateMediaInfo()
        {
            var videoUrl = mediaInfo.SourceURL;
            var vname    = mediaInfo.DisplayName;
            var extra    = new string[] { "{", "}" };


            var metaData = new MediaMetadata(MediaMetadataType.Generic);

            metaData.SetString(mediaInfo.DisplayName, MetadataKey.Title);
            metaData.SetString("Hello World on Fridays!", MetadataKey.Subtitle);


            var builder = new MediaInformationBuilder();

            builder.ContentId  = videoUrl;
            builder.StreamType = MediaStreamType.Buffered;
            builder.Metadata   = metaData;

            castMediaInfo = builder.Build();
        }
        public void CreateMediaInfo(BCOVVideo video)
        {
            BCOVSource source = null;

            // Don't restart the current video
            if (currentVideo != null)
            {
                didContinueCurrentVideo = currentVideo.IsEqual(video);
                if (didContinueCurrentVideo)
                {
                    return;
                }
            }

            suitableSourceNotFound = false;

            // Try to find an HTTPS source first
            source = FindDashSource(video.Sources, true);

            if (source == null)
            {
                source = FindDashSource(video.Sources, false);
            }

            // If no source was able to be found, let the delegate know
            // and do not continue
            if (source == null)
            {
                suitableSourceNotFound = true;
                gcmDelegate.SuitableSourceNotFound();
                return;
            }

            currentVideo = video;

            var videoUrl       = source.Url.AbsoluteString;
            var vname          = video.Properties["name"];
            var durationNumber = video.Properties["duration"];

            var metaData = new MediaMetadata(MediaMetadataType.Generic);

            metaData.SetString(vname.ToString(), "kGCKMetadataKeyTitle");

            var poster    = video.Properties["poster"].ToString();
            var posterUrl = new NSUrl(poster);

            metaData.AddImage(new Image(posterUrl, (nint)posterImageSize.Width, (nint)posterImageSize.Height));

            //TODO Implement this logic for closed caption cast
            //var mediaTracks = new List<MediaTrack>();
            //var textTracks = video.Properties["text_tracks"];
            //var trackIndentifier = 0;
            //foreach (var text in textTracks)
            //{
            //    trackIndentifier += 1;
            //    string src, lang, name, contentType, kind;
            //    if (text.Key.ToString() == "src")
            //        src = text.
            //    //string lang = text["srclang"] as string;
            //    //var name = text["label"] as string;
            //    //var contentType = text["mime_type"] as string;
            //}


            var builder = new MediaInformationBuilder();

            builder.ContentId      = videoUrl;
            builder.StreamType     = MediaStreamType.Unknown;
            builder.ContentType    = source?.DeliveryMethod;
            builder.Metadata       = metaData;
            builder.StreamDuration = (double)(durationNumber as NSNumber);
            //TODO uncomment this for closed caption cast
            //builder.MediaTracks = mediaTracks;

            castMediaInfo = builder.Build();
        }