Androidの端末に接続したUVCのカメラの画像をストリーミングで発信できるようになりませんかって話を幾つか頂いたので、色々調べてみた。
その流れで、とりあえずRED5のサーバーをLAN内で立ててみようとした時の話。だって作っている最中の動くかもわからへんアプリとかを外部のサーバーに繋いで映像を送りつけるわけにはいかへんやん?
最初はソースからantでビルドしようとしたんだけど、依存しているパッケージのダウンロードでこけてしまうので、ビルド済みをダウンロードしてインストールしました。
まずは、現在の最新版である、red5-server-1.0.3-RELEASE-server.tar.gzをダウンロードして適当なところに展開。
confディレクトリのred5.propertiesファイルのホストアドレスを書き換えて、
1 |
./red5.sh & |
で動くはず・・・はずなんだけど、
1 |
-bash: ./red5.sh: /bin/bash: bad interpreter: Operation not permitted |
ってでて実行できへん(´・ω・`)
実行属性ついてへんのかなっと思ったけど確認したらついてた。念の為にchmod +xしてみたけど変わらず。何やねんなと思ってグルグル先生に聞いてみた。
その結果わかったことは、
- OSX限定で発生する
- RED5とはもちろん関係なし。
- lsコマンドでファイルを見た時にファイル属性の右側に@が付いて表示されることと関係があるらしい。
- ファイルにExtended Attributes(EA)ってのが付いていると、lsで表示した時に属性の右に@が表示されるらしい。
- EAに”com.apple.quarantine”属性が含まれると実行できないみたい。
- どんなEAが付いているかは”xattr -l ファイル名”ってコマンドを使うとわかる
- 付いているEAを削除するには”xattr -d 属性名 ファイル名”とする
- xattrは再帰的には実行出来ない
と言う事でまずどんなEAが付いているのか確かめてみた。
1 2 3 |
xattr -l red5.sh com.apple.TextEncoding: UTF-8;134217984 com.apple.quarantine: 0046;543dfab0;com.apple.WebKit.Plugin.64; |
“com.apple.quarantine”属性が付いとる。この場合はSafariでインターネットからダウンロードしたファイルなんで不用意に実行してしまわないようにって事で制限されているみたい。
でも実行したいねんって事で、findで指定ディレクトリ以下のファイル・ディレクトリ一覧を再帰的に取得してxattrで”com.apple.quarantine”属性を削除するスクリプトを書いて実行した後、もう一度red5を実行。
\(^o^)/動いた動いた。
ブラウザからhttp://設定したアドレス:5080/へアクセスして右の画面が表示されれば成功。
一件落着〜
まぁ何の設定もしてないしアプリも作ってないのでただ動いたってだけなんですけどね(^_^;)
そうそう、RED5はJavaで動くので、別途Javaの実行環境とかはインストール・設定が必要だからね。