Flash ムービーにサウンドが含まれているか、音楽が再生されているかを検出する方法はありますか?
これが Web ブラウザー (別のフラッシュ オブジェクト、javascript などからのアクション スクリプト)内で実行でき、フラッシュ ムービーの再生が開始される前に実行できるとよいでしょう。
ただし、これが完全に可能になるとは思えないので、他の(プログラム可能な)ソリューションも高く評価されます
はい、確かにサーバー側で。クライアント側?知らない。(私はサーバーサイドのような人です。)
サーバー側では、ファイルを解析し、ヘッダーを読み取り、および/またはオーディオ フレームを探す必要があります。(私は自分自身でインデックスを作成する目的で Haskel FLV パーサーを Java に移植しましたが、他にも解析ユーティリティがあります。それは可能です。)
osflash.org の FLV ページには、悲惨な詳細が記載されています。FLV フォーマット セクションの FLV ヘッダー テーブルを確認してください。
FIELD DATA TYPE EXAMPLE DESCRIPTION
Signature byte[3] “FLV” Always “FLV”
Version uint8 “\x01” (1) Currently 1 for known FLV files
Flags uint8 bitmask “\x05” (5, audio+video) Bitmask: 4 is audio, 1 is video
Offset uint32-be “\x00\x00\x00\x09” (9) Total size of header (always 9 for known FLV files)
編集: Flash を使用したクライアント側のコーディングは存在しませんが、コードがキャッチできる onMetaDataLoad イベントがあると思います。それはあなたにとって少し遅れて起こるかもしれませんが、それで十分でしょうか?
FLV ビデオ ファイルまたは SWF のような Flash「ムービー」についてお尋ねですか?
明確にするために、FLV は Flash Video Format (または頭字語が何であれ) であり、通常の Flash ムービー/アプリケーション/バナーは SWF になります。これらは非常に異なるファイル形式です。
ByteArrayを使用すると、ほとんどのことを実行できます。再生を開始する前に、FLV ヘッダーのバイトを分析して (byteArray.readByte() を使用し、仕様を参照)、オーディオ フラグがオンになっているかどうかを確認できます。FLV ヘッダーはほぼ瞬時に読み込まれるため、ユーザーにとって不都合な遅延は発生しません。
SWF の場合はかなりトリッキーです。SWF がどこかでオーディオを再生するかどうかを事前に判断する簡単な方法はないと確信しています。それを行う方法は、SWF がライブラリで定義したアセットを確認することですが、swf は外部オーディオ ファイルをロードすることもできます (または、いくつかのハックまたは Flash Player 10 の新しい API を使用して生成することもできます)。SWF がユーザーによって提出されたもの (または、あなたが直接制御できない類似のもの) である場合、これは危険な道だと思います..