3

やあ!

AVC +AACビデオRTMPをストリーミングするためのストリーミングサーバーの作成。そして、それはでうまく動作します。しかし、フロープレーヤーや他のフラッシュビデオプレーヤーで強制的に動作させることはできません。rtmpdump

ハンドシェイク後のメッセージシーケンスは、FMS / RED5 / erlyvideo / haxevideoサーバーに似ています。さまざまなバリエーションを試しました。

Chromeデバッグコンソールから、すべてのネゴシエーションメッセージがflowplayerに渡されたものを確認できます。最後はonMetaDataです。この後、作業サンプル(rtmp://flash.tvwmedia.net/LiveVideo//Live300)が取得されNetStream.Buffer.Fullます。そして、私のサーバーからのストリーミングはそれを取得しません。

sps/ppsを含むAVCヘッダーメッセージから始めています。それの後、最初のAVC画像が通過しました。後-AACヘッダーとAACサンプル。そして、AVC/AACサンプル。これはOKをダンプしましたrtmpdump-私は出口でflvを動作させています。しかし、flowplayerなどは機能しません。

  1. 何が問題になる可能性がありますか?
  2. ストリームに追加の要件はありますか?
  3. 壊れたh264ストリームが原因でflashplayerの再生が停止する可能性はありますか?Flash Playerからシステムメッセージを取得することは可能ですか?

願っています、あなたは私を助けることができます:)私は2週間にわたってこの問題と戦っています、そして今私が試すことができるどんな変種も知りません。

これがからのデバッグログ+flvですrtmpdump。交渉メッセージとメディアの最初のサンプルが含まれています。


アップデート:

私は1つのバグを修正しました:「システム」メッセージに使用される間違ったチャンクストラムID(例SetChunkSize)。しかし、それはまだ再生されていません。これは、 wowzaが生成するものとほぼ同じ別のログです。そして、wowza / red5ログも(比較するために)。

RTMPサーバーで異なる次のことを確認しました。

  1. 異なるChunkStreamID(非システムストリーム用)
  2. さまざまなStreamID(上createStream
  3. 128bank4Kbチャンクサイズ
  4. アンパック/パックされたチャンクヘッダー(以前のログにはアンパックされ、新しい-パックされたものがあります)
  5. connect通話中のさまざまな回答(多くのサーバーから)
  6. を使用して57 0057 01ビデオパケット(ビデオ情報/コマンドフレーム)
  7. 各画像の前に09(アクセスユニット区切り文字)NALUを追加
  8. オーディオ/ビデオDCR/パケットの順序が異なる
  9. オーディオのみ/ビデオのみ

しかし、それをすべて調整しても、とにかくサーバーが機能しませんでした:)

これを解決する方法はありますか?


アップデート:

Peterが提案したように、 Flazrプロキシを介してログを作成しました。結果は同じです。そして、私は解決策を見つけることができません:両方のログは良さそうです。たぶん私は簡単なものを見ていません...


ありがとうございました!

4

2 に答える 2

2

問題が何であるかはわかりませんが、次のことを実行していることを確認する必要があります

。1. pingの送信
2.バイトの読み取り/書き込みレポート

の処理rtmpdumpログから、フローは良好に見えますが、明らかなことは何もわかりませんでした。 。C++またはRubyのいずれかの経験に応じて役立つ可能性のあるプロジェクトがさらに2つあります。Izumiサーバーはかなりシンプルで、Ruby開発者であれば簡単にフォローできるかもしれません。
http://code.google.com/p/rubyizumi/

C ++の人なら、RTMPdを見てください。Andreiは、私が知っている他の誰よりもサーバー側のフラッシュプロセスについてよく知っています。
http://www.rtmpd.com/

最後に、学習用に別のオープンソースJava Player / Server実装が必要な場合は、Flazrhttp ://flazr.com/を参照してください。

于 2010-10-09T17:45:39.470 に答える
2

私はMondainが言及したFlazrの作者です(thx Mondain!)。

Flazrの「プロキシサーバー」機能を紹介したいと思います。Flash Player(またはrtmpdump)をプロキシサーバーに接続し、プロキシサーバーをサーバーにポイントすることができます。ログをDEBUGモードに設定すると、両方向のすべてのRTMPメッセージの非常に詳細なログトレースが得られます。これは、過去にFlazrをRed5などの他の実装と比較するのに役立ちました。お役に立てれば。

于 2010-10-20T03:28:02.310 に答える