【问题标题】:WinForms - Embedding CNN Live Video URLWinForms - 嵌入 CNN 直播视频 URL
【发布时间】:2011-07-26 22:18:38
【问题描述】:

我有一个 C# WinForms 应用程序,并且一个客户要求在其中集成一个流式 CNN 视频播放器。 CNN 使用位于 http://www.cnn.com/video/live/live.html?stream=stream1 的 Flash 播放器

但是,如果我嵌入一个 WebBrowser 对象并将其指向 URL,则该网站希望在我的 WebBrowser 控件之外触发一个弹出窗口。如果我禁用它(使用 NewWindow 事件处理程序),它会抛出一个 javascript 警报消息。如果我允许,它会在我的应用程序之外打开一个新的 IE 实例,其中包含 CNN 视频。

我唯一的想法是重新创建 HTML 并覆盖其 flash 对象的 javascript 设置 (http://z.cdn.turner.com/cnn/.element/apps/CNNLive/2.1.6.2/assets/ scripts/liveplayersettings.js) 以关闭弹出标志。

有没有人想过如何在应用程序内部显示网站?

【问题讨论】:

    标签: c# html winforms video popup


    【解决方案1】:

    最终破解了 CNN 使用的 Javascript,不知道它会持续多久,但这是完成我想要的最快的方法,而不会增加其他解决方案的所有额外开销。

        protected void webBrowser_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
        {
            if (webBrowser.ReadyState == WebBrowserReadyState.Complete && DefaultPage == BrowserPage.CNN)
            {
                HtmlElement head = webBrowser.Document.GetElementsByTagName("head")[0];
                HtmlElement scriptElement = webBrowser.Document.CreateElement("script");
                IHTMLScriptElement element = (IHTMLScriptElement)scriptElement.DomElement;
                string popupBlocker = "if(typeof settings != 'undefined') { settings.FORCE_POPUP = false; }";
                element.text = popupBlocker;
                head.AppendChild(scriptElement);
            }
        }
    

    【讨论】:

      【解决方案2】:

      如果您安装了最新的 ffdshow,Windows 媒体播放器将播放 flash 文件。您可以将 url 传递给它,然后让嵌入的 windows 媒体播放器播放它。

      VLC 也会这样做,无论您喜欢哪个。不过,Windows 媒体播放器的 api 可能会更简单一些。

      【讨论】:

        【解决方案3】:

        我建议下载并使用 Microsoft Expression Encoder SDK。它可以从其他网站捕获实时提要:http://msdn.microsoft.com/en-us/library/gg602440(v=expression.40).aspx

        您可以向下滚动到“使用直播项目”部分,它说明了如何从网络捕获实时视频源。

        如果 Expression SDK 不适合你,那么我只能建议你必须对他们的 Javascript 进行逆向工程并编写某种 HttpWebRequest 和 HttpWebResponse 类型的应用程序来获取数据并自己在程序中流式传输。

        【讨论】:

          猜你喜欢
          • 2017-01-09
          • 2022-06-30
          • 2012-11-25
          • 1970-01-01
          • 2015-12-21
          • 1970-01-01
          • 2012-10-08
          • 1970-01-01
          • 2019-12-20
          相关资源
          最近更新 更多