2011-07-01 11 views
1

私はC#WinFormsアプリケーションを持っており、クライアントはそれに統合されたストリーミングCNNビデオプレーヤーを要求しました。 CNNは、http://www.cnn.com/video/live/live.html?stream=stream1にあるフラッシュプレーヤーを使用します。WinForms - 埋め込みCNNライブビデオURL

WebBrowserオブジェクトを埋め込み、URLにポイントすると、WebサイトはWebBrowserコントロールの外でポップアップを発生させます。私はそれを(NewWindowイベントハンドラを使用して)無効にすると、javascript警告メッセージをスローします。私はそれを許可すれば、CNNビデオが入っているアプリケーションの外に新しいIEインスタンスを開きます。

私が持っていた唯一の考えは、HTMLを再作成し、そのフラッシュオブジェクトの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メディアプレーヤーはフラッシュファイルを再生します。あなたはそれをURLに渡して、Windowsのメディアプレイヤーに埋め込みをさせることができます。

VLCでも好きなようにします。おそらくWindows Media Player用のAPIは少し簡単です。

0

Microsoft Expression Encoder SDKをダウンロードして使用することをお勧めします。 http://msdn.microsoft.com/en-us/library/gg602440(v=expression.40).aspx

「ライブブロードキャストプロジェクトの操作」セクションまでスクロールして、Webからライブビデオフィードを取得する方法を説明します。

Expression SDKがうまくいかない場合は、Javascriptをリバースエンジニアリングし、HttpWebRequestとHttpWebResponseタイプのアプリケーションを作成してデータを取得し、プログラムでストリームする必要があることを示唆しています。