FlexやFlash(not in Air)でローカルのビデオを再生できるか?

結論としては、自分の調べでも複数の情報からも、やはり無理そうだという事がわかった。

Flex3系のAPIではVideoDisplayで再生するが、sourceにセットできるのはStringのみ。これはつまりURLやパスをセットせよということでByteArrayはセットできない。

また、VideoDisplayの基礎となっているVideoクラスも同様にURLやパスは受け付けてもByteArrayを受け付けてくれるような機能はない。

そしてとどめ。要するにローカルのビデオを再生するにはパスが必要なわけだが、FlexやFlashでローカルファイルを読み込む唯一の手段であるFileReferenceでは、ファイルのByteArrayや名前は取得できてもパスを取得できない。セキュリティーのためか。

結局、これではどうにもならない。

Flex4系のAPIではVideoPlayerという新しいコンポーネントがあり、sourceにセットできるのはObjectだ。StringではないのでByteArrayを受け付けるかも知れないと試したところ、再生できなかった。

ドキュメントをよく見ると、sourceにセットできるのはパスやURLとStreamingVideoSourceらしい。しかしこのStreamingVideoSourceにもByteArrayを受け付けてくれるような機能は無い。

結局、Flex4系でも撃沈。

どうにかならないかとネットで調べたが、やはり同様の理由で無理だという記述を見つけた。

convert bytearray into an image and netstream limitation
・・・What it means is that you cannot play ByteArray in AIR or Flex Application.・・・

Airならファイルシステムにアクセスでき、パスを取得できるので問題無いが、FlexやFlashではByteArrayしか取得できないので無理のようだ。

コメント

  1. ノー。やっぱりFlexベースでは無理ですねぇorz。調査お疲れ様でした。

    返信削除
  2. mp3はライブラリがありますが、AACオーディオは無理ということですね。こういうデキの悪さは寡占市場の弊害ですね。

    返信削除

コメントを投稿

このブログの人気の投稿

レオナルド・ダ・ビンチはなぜノートを「鏡文字」で書いたのか?

macでsmb(samba)共有サーバーに別名で接続(別アカウント名で接続)する方法

Google DriveにCURLでアップロードするには?