4

Flash 10.1 の時点で、appendBytes メソッド ( http://www.bytearray.org/?p=1689で説明) を介して NetStream オブジェクトにバイトを追加する機能が追加されました。この追加の主な理由は、アドビがついにビデオの HTTP ストリーミングをサポートしたことです。これは素晴らしいことですが、スムーズなストリーミングを可能にするために既存のビデオから正しいビデオ チャンクを作成するには、Adobe Media Streaming Server ( http://www.adobe.com/products/httpdynamicstreaming/ ) を使用する必要があるようです。

私は過去にハッキングされたバージョンの HTTP ストリーミングを実行しようとしましたが、ここでは NetStream オブジェクトを交換しました (ここではhttp://video.leizhu.com/video.htmlに似ています) が、チャンク間には常に一時的な一時停止があります。 . 新しい appendBytes を使用して、前のサイトのビデオの 2 つのセクションで簡単なモックアップを作成しようとしましたが、それでもスキップが残っています。

NetStream オブジェクトの appendBytes メソッドがセグメント間の顕著なスキップなしで滑らかなビデオを作成するために、2 つの連続する .FLV ファイルをどのようにフォーマットする必要があるか知っている人はいますか?

4

6 に答える 6

9

Samuel が説明した Adob​​e の File Packager Tool を使用して、これを機能させることができました。NetStream オブジェクトは使用しませんでしたが、これを内部で使用すると思われる OSMF Sample Player を使用しました。FMS を使用せずに行う方法は次のとおりです。

  1. Adobe の File Packager for Http Dynamic Streaming をhttp://www.adobe.com/products/httpdynamicstreaming/から入手します。
  2. 次のように、H.264/AAC を含む既存の MP4 ファイルに対して File Packager を実行します。 C:\Program Files\Adobe\Flash Media Server 4\tools\f4fpackager> f4fpackager.exe --input-file="MyFile.mp4" - -segment-duration=30

これにより、30 秒の長さの F4F ファイルと、F4X および F4M ファイルが生成されます。F4F ファイルは、正しくセグメント化 (および断片化) された MP4 ファイルであり、再生する必要があります。OSMF Player を使用してこれをテストする場合は、次の手順も実行します。

  1. Apache サーバーを入手する
  2. http://www.adobe.com/products/httpdynamicstreaming/から Adob​​e の Apache 用の Http Origin モジュールを入手します。
  3. http://help.adobe.com/en_US/HTTPStreaming/1.0/Using/WS8d6ed60bd880807c48597a9e1265edd6cc0-8000.htmlに従ってモジュールをインストールします
  4. F4F、F4X、および F4M ファイルを httpdocs の下の vod ディレクトリに配置します。
  5. http://www.osmf.org/downloads/OSFMPlayer_zeri2.zipから「HTTP 動的ストリーミング用の OSMF サンプル プレーヤー」を入手します。
  6. Sample Player を httpdocs ディレクトリに配置します。
  7. http://localhost/OSMFPlayer.htmlなどのブラウザで、Sample Player から html ファイルをロードします。
  8. イジェクト ボタンを押して、F4M ファイルの URL を入力すると、再生されます。

元の質問に答えるには、Adobe の File Packager は使用するファイル スプリッターです。それを使用するために FMS を購入する必要はなく、FLV および MP4/F4V ファイルで動作します。

于 2011-02-23T04:35:27.077 に答える
1

F4Packを使用できます。これは Adob​​eの commandline-tool に関する GUI であり、flv/f4v ファイルを処理して HTTP 動的ストリーミングに使用できるようにします。

于 2011-03-12T18:39:39.040 に答える
1

これが発生するOSMFコードの場所は、HTTPNetStreamクラス実装内のタイマー起動状態マシンです...参考になるかもしれません。私がそれを書いたとき、私はそこにいくつかの有益なコメントを入れたと思います.

一般的な質問に関しては:

FLV ファイル全体を ByteArray に読み込んで appendBytes に渡すと、再生されます。その FLV ファイルを半分に分割し、前半をバイト配列として渡し、次に後半をバイト配列として渡すと、同様に再生されます。

ギャップなしでビットレートを切り替えることができるようにしたい場合は、一致するキーフレーム ポイントで FLV ファイルを分割する必要があります...また、appendBytes への最初の呼び出しのみが最初の FLV ファイル ヘッダー ('F', 'L'、'V'、フラグ、オフセット)...残りは、FLV バイト シーケンスの継続を期待するだけです。

于 2011-07-15T20:18:45.980 に答える
1

最近、node.js で m3u8 トランスコーディングを実現する同様のプロジェクトを見つけました (https://github.com/andrewschaaf/media-server) が、Wowza 以外に Apache の Origin モジュールの外でそれを行っているプロジェクトはまだ聞いたことがありません。ペイロードはほぼ同じなので、f4m セグメント化を探すよりも、優れた mp4 セグメント化ソリューション (たくさんあります) を探すほうがよいでしょう。問題は、特に大きな mp4 ビデオの moov アトムを管理して、適切な初期 (ファイルの先頭近く) の場所に配置するのが難しいことです。最適なffmpeg設定と「qtfaststart」を使用しても、シークが著しく遅くなり、帯域幅の使用が非効率になり(通常は貪欲になります)、flv/f4v再生では得られないスクラブ/時間に関連するいくつかの小さな問題が発生します.

私のプレーヤーでは、ストリーム保護のために Adob​​e の Access 製品のライセンスを取得する代わりに、awk/cron を使用して Apache を解析する負荷とリアルタイム ログに基づいて、HTTP ダイナミック ストリーミング (HDS) と MP4 を切り替えているか、切り替えようとしています。どちらにも独自の「onmetadata」ハンドラがあります。しかし、最終的には、シーケンス化された時間/バイトハッシュを実質的に同等に受け取ります。ただMP4の方が遅いです。そのため、mod_origin は単なるシンクロナイザー/フラッシュ クライアント用のリクエスト ルーター (http 経由) です。私はまだmp4コンテナベースの再生を高速化する方法を探しています。私が最近これを読んだ1つの信じられないほどの解決策で、かなりa敬の念を抱いていましたhttp://zehfernando.com/2011/flash-video-frame-time-woes/ここで、ビデオ編集者 (男) とフラッシュ開発者が、フレーム バーコードのような視覚的な「バイナリ」スタンプを使用して、すべてのビデオ フレームの下部に約 50 ピクセルを (Adobe Premiere スクリプトを介して) 文字通り追加する独自の mp4 タイムコーディング ソリューションを思いつきました..これらのバイナリ値は、非常に正確なタイムコード値に変換されます。そのため、Flash はビデオ フレームが描画されたときに (リアルタイムで) 分析し、プレイヤーがどこにいて、mp4 バイト セグメント化に対応したあらゆる種類の Web サーバーから必要なバイト数を正確に判断できます。問題は (おそらく私がここで間違っているかもしれません)、特に大きなビデオ ファイル (.5 ~ 1.5 ギグ) では、Flash は moov データを取得するタイミングを任意に選択しているようです。MP4Box (つまり、MP4Box -frag 10000 -inter 0 movie.mp4) を介して mp4 を実行することを確認したとしても、これは OSMF と HDS が現在非常にうまく機能している問題だと思います。それを使用するためにApacheと独自のクローズドソースモジュールが必要なのは面倒ですが. HDS は 1 ~ 2 年しか経っていないため、オープン ソースの実装が登場するのはおそらく時間の問題であり、node.js + mpegts ストリーミング (ライブかどうかに関係なく) を使用する Andrew Chaaf のようなちょっとしたリバース エンジニアリングが必要なだけです。最終的には、UI の下でのみ OSMF を使用することになるかもしれません。これは、HDS と同様の利点があるように思われるためです。たとえば、拡張可能な HDS または MP4 オープン プレーヤー プラットフォームをハッキングして独自のカスタム プレーヤーを実現する必要がある場合は、ストロボを使用します。js + mpegts ストリーミング (ライブかどうか)。最終的には、UI の下でのみ OSMF を使用することになるかもしれません。これは、HDS と同様の利点があるように思われるためです。たとえば、拡張可能な HDS または MP4 オープン プレーヤー プラットフォームをハッキングして独自のカスタム プレーヤーを実現する必要がある場合は、ストロボを使用します。js + mpegts ストリーミング (ライブかどうか)。最終的には、UI の下でのみ OSMF を使用することになるかもしれません。これは、HDS と同様の利点があるように思われるためです。たとえば、拡張可能な HDS または MP4 オープン プレーヤー プラットフォームをハッキングして独自のカスタム プレーヤーを実現する必要がある場合は、ストロボを使用します。

于 2012-04-07T06:08:37.260 に答える
1

サーバーを使用する必要はありません。Wowza は Adob​​e のバージョンの HTTP ストリーミングをサポートしており、ビデオを適切にセグメント化し、すべてのセグメントを標準の HTTP サーバーにロードすることで、独自に実装できます。

Adobe の HTTP ストリーミングのすべての仕様へのリンクは次のとおりです。

http://help.adobe.com/en_US/HTTPStreaming/1.0/Using/WS9463dbe8dbe45c4c-1ae425bf126054c4d3f-7fff.html

カスタム スタイルの http ストリーミングを実行するためにクライアントをハッキングしようとすると、さらに面倒になります。

HTTP ストリーミングは、複数の異なるビデオのストリーミングをサポートしていませんが、個別のセグメントに分割された 1 つのファイルをストリーミングすることに注意してください。

ファイルパッケージャー

オンデマンド メディア ファイルをフラグメントに変換し、フラグメントを F4F ファイルに書き込むコマンドライン ツール。ファイル パッケージャーはオフライン ツールです。File Packager を使用して、Flash Access で使用するファイルを暗号化できます。詳細については、オンデマンド メディアのパッケージ化を参照してください。

File Packager は adobe.com から入手でき、Adobe® Flash® Media Server とともに rootinstall/tools/f4fpackager フォルダーにインストールされます。

パッケージャーのダウンロード リンクはここにあります: HTTP ダイナミック ストリーミング用のファイル パッケージャーをダウンロード

http://www.adobe.com/products/httpdynamicstreaming/

于 2010-12-14T20:53:39.863 に答える
0

Adobe の F4F 形式は MP4 ファイルに基づいていますが、FLV ファイルの代わりに F4V または MP4 を使用できますか? 多くの MP4 ファイル スプリッターがありますが、ファイル内のタイムスタンプが連続していることを確認する必要があります。おそらく、ファイル内のオーディオまたはビデオ ストリーム内でゼロのタイムスタンプが検出されると、一時停止が発生します。

于 2011-02-20T13:11:20.273 に答える