WinForms - 嵌入CNN实时视频URL

时间:2011-07-01 20:39:29

标签: c# html winforms video popup

我有一个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)以关闭弹出标记。

任何人都有想法在应用程序内部完成显示网站的方法吗?

3 个答案:

答案 0 :(得分: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);
        }
    }

答案 1 :(得分:0)

如果安装了最新的ffdshow,Windows媒体播放器将播放Flash文件。您可以将其传递给网址并让嵌入式Windows媒体播放器播放它。

VLC也会这样做,无论你喜欢什么。 Windows媒体播放器的api可能稍微容易一点。

答案 2 :(得分:0)

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

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

如果Expression SDK不适合您,那么我只能建议您必须对其Javascript进行反向工程并编写某种HttpWebRequest和HttpWebResponse类型的应用程序来获取数据并在程序中自行传输。< / p>