コード例 #1
0
        public async void Initialize()
        {
            while (DescriptionBrowser == null)
            {
                Thread.Sleep(1);
            }
            await DispatcherHelper.UIDispatcher.BeginInvoke(new Action(() => {
                DescriptionBrowser.NavigateToString(Content.Description);
                Handler.LoadMovie();
            }));

            LiveCommentInstance = new NicoNicoLiveComment(Content.GetPlayerStatus.MesseageServerUrl, Content.GetPlayerStatus.MesseageServerPort, this);

            Time = new VideoTime();


            Time.VideoTimeString = NicoNicoUtil.GetTimeFromVpos(Content.GetPlayerStatus, (int.Parse(Content.GetPlayerStatus.EndTime) - int.Parse(Content.GetPlayerStatus.BaseTime)) * 100);
            Time.Length          = int.Parse(Content.GetPlayerStatus.EndTime) - int.Parse(Content.GetPlayerStatus.BaseTime);
            Time.BufferedTime    = Time.Length;

            Comment = new LiveCommentViewModel(this);


            OpenVideo();

            //タイムシフトじゃなかったらすぐに再生
            if (!Content.GetPlayerStatus.Archive)
            {
                foreach (var content in Content.GetPlayerStatus.ContentsList)
                {
                    Handler.InvokeScript("AsCommandExcute", "/liveplay", "0", content.Content);
                }
            }
        }
コード例 #2
0
        private Control RenderVideoTime(VideoTime videoTime)
        {
            var input = new TimeSpanInput
            {
                Name   = videoTime.Name,
                Margin = ControlMargin,
            };

            input.ViewModel.StartTime = videoTime.StartTime;
            input.ViewModel.EndTime   = videoTime.EndTime;
            return(input);
        }
コード例 #3
0
        public async void Initialize()
        {
            Mylist    = new VideoMylistViewModel(this);
            Comment   = new VideoCommentViewModel(this);
            Handler   = new VideoFlashHandler(this);
            Time      = new VideoTime();
            VideoData = new VideoData();

            await DispatcherHelper.UIDispatcher.BeginInvoke(new Action(() => {
                if (IsFullScreen)
                {
                    FullScreenVideoFlash = new VideoFlash()
                    {
                        DataContext = this
                    };
                    FullScreenController = new VideoController()
                    {
                        DataContext = this
                    };
                }
                else
                {
                    VideoFlash = new VideoFlash()
                    {
                        DataContext = this
                    };
                    Controller = new VideoController()
                    {
                        DataContext = this
                    };
                }
            }));

            var videoUrl = VideoUrl + "?watch_harmful=1";

            IsActive = true;

            Status = "動画情報取得中";
            //動画情報取得

            await Task.Run(() => {
                WatchApi          = new NicoNicoWatchApi(videoUrl, this);
                VideoData.ApiData = WatchApi.GetWatchApiData();
                Handler.Initialize(VideoData);
            });
        }
コード例 #4
0
        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            DateTime startTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day - 5, 0, 0, 0);

            VideoTime[] videoTimeArray = new VideoTime[1];
            for (int i = 0; i < 1; i++)
            {
                var date = startTime;
                //  date.AddDays(1);
                var end = date;
                end.AddHours(5);
                videoTimeArray[i]           = new VideoTime();
                videoTimeArray[i].StartTime = date;
                videoTimeArray[i].EndTime   = end;
            }
            //   processBar1.Init(startTime, videoTimeArray);
        }
コード例 #5
0
 public void RenderPreset(IRenderPanel target, Preset preset)
 {
     target.ClearItems();
     foreach (var controller in preset.Controllers)
     {
         FrameworkElement?rendered = null;
         rendered = controller switch
         {
             Presets.Controls.Slider bitrateSlider => RenderBitrateSlider(bitrateSlider),
             VideoScale videoScale => RenderVideoScale(videoScale),
             VideoTime videoTime => RenderVideoTime(videoTime),
             ValueSelector valueSelector => RenderValueSelector(valueSelector),
             _ => throw new InvalidOperationException(),
         };
         target.Render(RenderLabel(controller.Label));
         target.Render(rendered);
     }
 }
コード例 #6
0
        private void Initialize(string videoUrl)
        {
            IsActive = true;
            Task.Run(() => {
                Mylist    = new VideoMylistViewModel(this);
                VideoData = new VideoData();


                Status = "動画情報取得中";
                //動画情報取得
                VideoData.ApiData = NicoNicoWatchApi.GetWatchApiData(videoUrl);

                //ロードに失敗したら
                if (VideoData.ApiData == null)
                {
                    LoadFailed = true;
                    IsActive   = false;
                    Status     = "動画の読み込みに失敗しました。";
                    return;
                }

                //有料動画なら
                if (VideoData.ApiData.IsPaidVideo)
                {
                    App.ViewModelRoot.Messenger.Raise(new TransitionMessage(typeof(PaidVideoDialog), this, TransitionMode.Modal));
                    return;
                }

                DispatcherHelper.UIDispatcher.BeginInvoke(new Action(() => {
                    while (VideoFlash == null)
                    {
                        Thread.Sleep(1);
                    }

                    if (VideoData.ApiData.Cmsid.Contains("nm"))
                    {
                        VideoData.VideoType = NicoNicoVideoType.SWF;
                        WebBrowser.Source   = new Uri(GetNMPlayerPath());
                    }
                    else if (VideoData.ApiData.GetFlv.VideoUrl.StartsWith("rtmp"))
                    {
                        VideoData.VideoType = NicoNicoVideoType.RTMP;
                        WebBrowser.Source   = new Uri(GetRTMPPlayerPath());
                    }
                    else
                    {
                        if (VideoData.ApiData.MovieType == "flv")
                        {
                            VideoData.VideoType = NicoNicoVideoType.FLV;
                        }
                        else
                        {
                            VideoData.VideoType = NicoNicoVideoType.MP4;
                        }
                        WebBrowser.Source = new Uri(GetPlayerPath());
                    }
                }));
                IsActive = false;

                Time = new VideoTime();

                //動画時間
                Time.VideoTimeString = NicoNicoUtil.ConvertTime(VideoData.ApiData.Length);


                if (VideoData.ApiData.GetFlv.IsPremium && !VideoData.ApiData.GetFlv.VideoUrl.StartsWith("rtmp"))
                {
                    Task.Run(() => {
                        Status = "ストーリーボード取得中";

                        NicoNicoStoryBoard sb    = new NicoNicoStoryBoard(VideoData.ApiData.GetFlv.VideoUrl);
                        VideoData.StoryBoardData = sb.GetStoryBoardData();
                        Status = "ストーリーボード取得完了";
                    });
                }

                NicoNicoComment comment = new NicoNicoComment(VideoData.ApiData.GetFlv, this);

                List <NicoNicoCommentEntry> list = comment.GetComment();


                if (list != null)
                {
                    foreach (NicoNicoCommentEntry entry in list)
                    {
                        VideoData.CommentData.Add(new CommentEntryViewModel(entry));
                    }

                    dynamic json = new DynamicJson();
                    json.array   = list;

                    DispatcherHelper.UIDispatcher.BeginInvoke(new Action(() => InjectComment(json.ToString())));
                }

                if (!Properties.Settings.Default.CommentVisibility)
                {
                    DispatcherHelper.UIDispatcher.BeginInvoke(new Action(() => InvokeScript("JsToggleComment")));
                }
                else
                {
                    CommentVisibility = true;
                }
                //App.ViewModelRoot.StatusBar.Status = "動画取得完了";
            });
        }
コード例 #7
0
        public void SendVideoTime(double videoTime)
        {
            VideoTime videoTime_ = new VideoTime(videoTime);

            networkIdentity.GetSocket().Emit("VideoTime", new JSONObject(JsonUtility.ToJson(videoTime_)));
        }
コード例 #8
0
        public void Initialize()
        {
            DispatcherHelper.UIDispatcher.BeginInvoke(new Action(() => {
                if (IsFullScreen)
                {
                    FullScreenVideoFlash = new VideoFlash()
                    {
                        DataContext = this
                    };
                    FullScreenContoller = new VideoController()
                    {
                        DataContext = this
                    };
                }
                else
                {
                    VideoFlash = new VideoFlash()
                    {
                        DataContext = this
                    };
                    Controller = new VideoController()
                    {
                        DataContext = this
                    };
                }
            }));

            var videoUrl = VideoUrl + "?watch_harmful=1";


            IsActive = true;
            Task.Run(() => {
                Mylist    = new VideoMylistViewModel(this);
                Comment   = new VideoCommentViewModel(this);
                VideoData = new VideoData();


                Status = "動画情報取得中";
                //動画情報取得
                WatchApi          = new NicoNicoWatchApi(videoUrl, this);
                VideoData.ApiData = WatchApi.GetWatchApiData();

                //ロードに失敗したら
                if (VideoData.ApiData == null)
                {
                    LoadFailed = true;
                    IsActive   = false;
                    Status     = "動画の読み込みに失敗しました。";
                    return;
                }

                //有料動画なら
                if (VideoData.ApiData.IsPaidVideo)
                {
                    App.ViewModelRoot.Messenger.Raise(new TransitionMessage(typeof(PaidVideoDialog), this, TransitionMode.Modal));
                    return;
                }

                DispatcherHelper.UIDispatcher.BeginInvoke(new Action(() => {
                    if (VideoData.ApiData.Cmsid.Contains("nm"))
                    {
                        VideoData.VideoType = NicoNicoVideoType.SWF;
                        ShockwaveFlash.LoadMovie(0, GetNMPlayerPath());
                    }
                    else if (VideoData.ApiData.GetFlv.VideoUrl.StartsWith("rtmp"))
                    {
                        VideoData.VideoType = NicoNicoVideoType.RTMP;
                        ShockwaveFlash.LoadMovie(0, GetRTMPPlayerPath());
                    }
                    else
                    {
                        if (VideoData.ApiData.MovieType == "flv")
                        {
                            VideoData.VideoType = NicoNicoVideoType.FLV;
                        }
                        else
                        {
                            VideoData.VideoType = NicoNicoVideoType.MP4;
                        }
                        ShockwaveFlash.LoadMovie(0, GetPlayerPath());
                    }
                    Proxy.ExternalInterfaceCall += new ExternalInterfaceCallEventHandler(ExternalInterfaceHandler);
                    IsActive = false;

                    Task.Run(() => {
                        OpenVideo();
                    });
                }));
                Time = new VideoTime();
                //動画時間
                Time.VideoTimeString = NicoNicoUtil.ConvertTime(VideoData.ApiData.Length);

                if (VideoData.ApiData.GetFlv.IsPremium && !VideoData.ApiData.GetFlv.VideoUrl.StartsWith("rtmp"))
                {
                    Task.Run(() => {
                        StoryBoardStatus = "取得中";

                        var sb = new NicoNicoStoryBoard(VideoData.ApiData.GetFlv.VideoUrl);
                        VideoData.StoryBoardData = sb.GetStoryBoardData();

                        if (VideoData.StoryBoardData == null)
                        {
                            StoryBoardStatus = "データ無し";
                        }
                        else
                        {
                            StoryBoardStatus = "取得完了";
                        }
                    });
                }
                else
                {
                    StoryBoardStatus = "データ無し";
                }

                CommentInstance = new NicoNicoComment(VideoData.ApiData, this);
                var list        = CommentInstance.GetComment();
                if (list != null)
                {
                    foreach (var entry in list)
                    {
                        VideoData.CommentData.Add(new CommentEntryViewModel(entry));
                    }
                    dynamic json = new DynamicJson();
                    json.array   = list;

                    InjectComment(json.ToString());
                    Comment.CanComment = true;

                    //投稿者コメントがあったら取得する
                    if (VideoData.ApiData.HasOwnerThread)
                    {
                        var ulist     = CommentInstance.GetUploaderComment();
                        dynamic ujson = new DynamicJson();
                        json.array    = ulist;

                        InjectUploaderComment(json.ToString());
                    }

                    //コメント設定を反映
                    ApplyChanges();
                }

                if (!Properties.Settings.Default.CommentVisibility)
                {
                    InvokeScript("AsToggleComment");
                }
                else
                {
                    CommentVisibility = true;
                }
            });
        }