5

http://www.broccoliproducts.com/softnotebook/rtmpclient/rtmpclient.phpRTMPクライアントコードを調査しています。また、正常に動作しているため、データを取得してFLVファイルをローカルに保存します。

コードは非常に単純です。だから私の質問は:

1.このストリーミングを同期して再生することは可能ですか?(キャッシュのために多少の遅延はありますが)(VLC経由で書き込みファイルを開こうとしましたが、ビジーです...)

2.それを実装する方法の手がかりはありますか?

!!! このプロジェクトの宣伝ではありません!WPFでRTMPプレーヤーを作成する必要があります。

4

3 に答える 3

3

Cygwinを使用している場合は、出力をパイプでつなぐことができますtee

rtmpdump -i "rtmp://server/app playpath=mp4:foo.mp4" | tee a.flv | vlc -

これにより、出力がファイルに保存されると同時に、VLCを介してストリームが再生されます。Cygwinをインストールしたくない場合は 、3.2MBの小さなバージョンを利用できます。また、おそらくWindowsバージョンのを見つけることができますtee

于 2013-02-02T02:10:41.130 に答える
1

VLCはほとんどすべてのソースを再生でき、多くの言語のバインディングがあります。.netは確かにリストにあります。

1つのソース:サンプル
いくつかの詳細情報:ここ

また、FluorineFXはRTMPサーバーと通信できるようです。再生についてはわかりませんが、SharedObjectsとその同類は.netからアクセスできます。

于 2013-02-03T13:01:22.330 に答える
1

いくつかの追加要件を提供するまでの一般的な投稿。

Flash内でボタンを作成し、次のように実装しますActionScript

on (press) {
    fscommand("Variable1", "Variable2");
}

COM Object次に、Visual Studio内で、の参照を追加する必要がありますShockwave Flash Objectembedtrueに設定されていることを確認する必要があります。

これで、Visual Studio内に移動して、Flashムービーの値を物理的に接続できる場所をProperties見つけることができるはずです。fscommand

AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent

これにより、Flash内に変数が収集されます。たとえば、収集したアイテムを使用e.commande.argて何かを実行するだけです。そのような...

lbl_Result.Text="The " + e.args.ToString() + " " + e.command.ToString()+ " was clicked.";

そして、FlashムービーのデータをFlashからVisualStudioに送信するようになりました。それは非常に単純で、非常に簡単です。

これにより、C#アプリケーションが実際にFlashビデオを継承して利用できるようになります。

考慮事項:

  • embedtrueに設定していることを確認してください。Path Referencesこれが、Flashオブジェクト内のすべてを物理的に保持するものです。そうしないと、無効なパスが呼び出される可能性があります。

参照用の追加ヘルプ:

  1. プロジェクト内を開きSolution Explorerます。
  2. Referenceおよびを右クリックしAdd Referenceます。
  3. に移動しCOM Objectます。

利用可能なオブジェクトは次のとおりです。

  • Shockwave ActiveX
  • Flash Accessibility
  • Flash Broker
  • Shockwave Flash

上記のソリューションでは、ネイティブ環境内で実際にFlashを使用できます。この方法で、C#に実装する変数データまたはコントロールを渡すだけです。このようにして、実際にRTMPを直接Flashに使用できます。C#アプリケーションは、Flashオブジェクトを公開するだけです。

これは一般的なアプローチです。追加情報を提供する場合は、より良い支援を行うために更新します。F-In-The-Box、LibRTMPなどのライブラリもあります。これも役立つ場合があります。

上記は私が述べたように非常に一般的です。ただし、Flashビデオオブジェクトでメモした品質はすべて呼び出されます。次に、C#は次のように簡単に調整できます。

<% MyYoutubeUtils.ShowEmebddedVideo("<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/gtNlQodFMi8&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/gtNlQodFMi8&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>") %>

または...

public static string ShowEmbeddedVideo(string youtubeObject)
{
    var xdoc = XDocument.Parse(youtubeObject);
    var returnObject = string.Format("<object type=\"{0}\" data=\{1}\"><param name=\"movie\" value=\"{1}\" />",
        xdoc.Root.Element("embed").Attribute("type").Value,
        xdoc.Root.Element("embed").Attribute("src").Value);
    return returnObject;
}

ここでスレッドを見つけることができます:追加の埋め込み手順と詳細。

これが、FlashをC#に配置する方法です。また、C#をActionscriptに出力する方法もあります。しかし、あなたがやろうとしていることについての詳細がなければ、私はこれらの一般的な応答以上のことを実際に行うことはできません。

FLVこれは、アプリケーション内に保存しようとしていること、またはC#からFlashにデータを集約しようとしていることを前提としていることに注意してください。さらに支援するために、より詳細な情報が必要になります。なぜC#が必要なのか、実際に何をしようとしているのかはよくわかりません。

于 2013-02-04T22:15:54.947 に答える