2011-07-01 39 views
1

我有一個C#WinForms應用程序,並且客戶端已經請求集成一個流媒體CNN視頻播放器。 CNN使用位於http://www.cnn.com/video/live/live.html?stream=stream1WinForms - 嵌入CNN實時視頻URL

但是如果我嵌入web瀏覽器對象,並在URL指向這一個flash播放器,網站要解僱我的WebBrowser控件之外的彈出窗口。如果我禁用它(使用NewWindow事件處理程序),它會拋出javascript警報消息。如果我允許的話,它會在我的應用程序之外的CNN視頻中打開一個新的IE實例。

我唯一的想法是重新創建HTML並覆蓋其Flash對象的JavaScript設置(http://z.cdn.turner.com/cnn/.element/apps/CNNLive/2.1.6.2/assets /scripts/liveplayersettings.js)以關閉彈出標誌。

任何人都有想法來完成在應用程序內部展示網站的方式嗎?

回答

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); 
     } 
    } 
0

如果您安裝了最新的ffdshow,Windows媒體播放器將播放Flash文件。你可以通過它的URL,讓嵌入式Windows媒體播放器播放它。

VLC也會這樣做,無論你喜歡什麼。 Windows媒體播放器的API可能會更容易一些。

0

我建議下載並使用Microsoft Expression Encoder SDK。它可以捕捉來自其他網站的現場直播:http://msdn.microsoft.com/en-us/library/gg602440(v=expression.40).aspx

您可以向下滾動到「使用直播項目」部分,並說明如何從網絡捕捉實況視頻Feed。

如果Expression SDK不適用於您,那麼我只能建議您必須對其Javascript進行反向工程,並編寫某種HttpWebRequest和HttpWebResponse類型的應用程序以獲取數據並在您的程序中自行流式傳輸。