mac で ustream で配信するまでのメモ
なんか知り合いがお絵描き配信始めたらしいので、対抗してプログラミング配信を始めてみました。
配信するまでのメモ置いときまっ
番組の作成
Ustream はまず番組を作ってそこに対して映像を送るという形になってるっぽい。
http://www.ustream.tv/ でアカウントを作成した後
右上のユーザー名 > ダッシュボード > 番組の新規作成
適当に入力して作成をする。んで右上のライブ配信ボタンから配信を開始でける。
Web カメラがあるノートPCとかだとそのまま適当に「配信の開始」を押せばできるっぽい
mac book air ならマイクもあるので、自分配信(笑)するなら特になにも設定がいらなくぽくて世の中すげーと思た。
デスクトップの配信
http://www.ustream.tv/producer からフリー版を落とす。
真ん中あたりのアイコンの「Desktop Presenter を起動」を押す。
サウンドエンコーダー的なものインストールしたいのねんと言われるのでインスコする。
Ustream Producer の↑のメニュー > メディア > 新規の Desktop Presenter を開いて、Desktop Presenter のウィンドウに表示されている TCP/IP アドレスを入力する。
カメラ一覧に Desktop Presenter が追加されて、選択して「配信の開始」で自分の番組の URL 見て配信されてたら成功。
無料でHD配信したい場合
配信設定で画質を選択できるんですが、無料版だと高帯域幅までしか選択できません。
しかし Pro お試しデモ機能を使用すると「カスタム プリセットの編集」が出来るようになります。
「モバイル/低帯域幅 16:9」のビットレートとか高くして保存して、Ustream Producer をいったん終了させます。
んで、再度起動した時お試しデモ機能は終了してるんですが、配信設定はまんま残ってるというあるさま。。。
一応自分はこんな感じに設定しときますた。なんでこんなザルなんだ^q^
これは通常の操作(ノンクラック)で可能な手順です。
なんで明らかに開発側の不備なので現在のバージョンではやっちゃって問題ないとは思います(あくまで俺ルールなので自己責任で!)
ただ、将来のバージョンで修正されていたらちゃんとお金を払いましょうと言った感じです。
http://www.ustream.tv/channel/alphaneet
ちなみにここ僕のチャンネルなんでよろですw
追記
たまに既に配信を開始してる場合、途中から入ったら画面が真っ黒で配信されない場合があるます。
その場合一度配信を切って、配信しなおしたら上手くいくんですが原因は不明というあるさま;ω;
ズルしようとした天罰かぁっー!
おぺれーしょん・りふれくしょん のレポート(名前に特に意味はない)
sbt は github のプロジェクトを参照することが可能と教えてもらったので試してみました。
(.git リポジトリの url あるなら多分どこでもいける)
maven-repo にするまでもない共有ライブラリとか置くといいかもしれません。(受け売り)
環境
scala | 2.9.1.final |
sbt | 0.11 |
ライブラリ側
- Lib.scala
object Lib { val msg = "える・ぷさい・こんがりぃ" }
sbt compile(念のため)
git init
git add Lib.scala
git commit -m 'first commit'
git remote add origin "自分の github の .git の url"
git push origin master
ユーザー側
https://github.com/harrah/xsbt/wiki/Full-Configuration
http://eed3si9n.github.com/sbt-getting-started-guide-ja/multi-project/
正直適当にやったら動いたという感じなので、詳しくはこちらを参照してください。
mkdir user
cd user
mkdir project
vim project/Build.scala
vim User.scala
- project/Build.scala
import sbt._ object MyBuild extends Build { lazy val root = Project(id = "", base = file(".")) dependsOn(lib) // 自分の github の .git の url。read-only の url じゃないと駄目だと思われ。 lazy val lib = uri("git://github.com/alphaneet/lib.git") }
- User.scala
object Main extends App { println(Lib.msg) }
sbt を起動した後に Build.scala を追加した場合は reload > update をしてください
run
える・ぷさい・こんがりぃ
processing のキャンバス上に swing コンポネーションを配置してみた
今まで知らなかったんですが、mac で java.awt._ を使用した入力フォームだと日本語入力が出来ないようです(IMEが日本語に切り替えれない)
これゲームのチャット機能とか考えると致命的な致命傷だったんで、Swing の入力フォームを使うようにしてみました。
Mac とかでゲームする人いないんでーw日本語はサポートしない(キリッ とかでもよかったんですが、まぁ自分が一番困りそうなのでw
公式Wikiの http://wiki.processing.org/w/Swing_JSliders を参考にしました。
環境
scala | 2.9.1 |
processing | 1.5.1 |
やってること
- PApplet(java.awt.Applet) に直接コンポネーションを add しても動かないので、JPanel を一枚噛ませてる。
- PApplet は別スレッドで独自にループしているので、常に processing の描画が手前に来てしまう。なんで processing の描画(paint)の後にコンポネーションの paint を呼ぶ。
- Border がちらつくので、paint の変わりに paintComponent を呼んでる。setBorder(null) でも良い気がしますが、こっちの方が少しでも早そう感があったので。。。
注意
・JList とかを processing のキャンバス上に置くとちらつく;ω;使うのは TextField だけにして他は自作するのがいいかもorz
・公式wiki でも使ってる方法なので大丈夫とは思いますが、PApplet#runSketch は色々と情報を取得してるんですが、今回はそれを使ってないので何か困ったこと起きるかも。
processing で scala の並列コレクションを試そうと思ったらヌルポだったでござるの巻
https://gist.github.com/1366985 の Par.scala の 183 行目の balls foreach を balls.par foreach にしてみると
[error] (Animation Thread) java.lang.NullPointerException
java.lang.NullPointerException
at processing.core.PGraphics.vertexTexture(PGraphics.java:1220)
at processing.core.PGraphics.vertex(PGraphics.java:1179)
at processing.core.PGraphics.imageImpl(PGraphics.java:2922)
〜省略〜
これまた見事なヌルポでおじゃるな。ほむほむw
まぁ当然のことながら processing は並行レンダリングに対応してないという顔になる。終わり。
だれか processing に並行レンダリング機能はよw
折角作ったので計測してみた。
par が processing で動かないことに気づいたのが結構作りこんじゃった後でして(←頭パー)
このままお蔵入りも勿体ないので、par なしのやつだけでも計測してみました。
y 軸がフレームレートで、x軸が生成している弾の数ですね。
画面サイズは、1024 x 768 です。
グラフを見る限り、4000個ぐらいまでは framerate を 60 でキープ出来るので普通に processing + scala で弾幕シューティングは可能なんじゃないでしょうかね?
もちろん本番のゲームではもっと処理が入るので、数は落ちるでしょうがね。
実行
https://gist.github.com/1366985 から Par.scala と build.sbt を落としてきて、
sbt run
sbt の導入が分からない場合はグーグル先生や http://d.hatena.ne.jp/alpha_neet/20111012/1318437291 を参考にしてください。
フレームレートが 50 以下になるか、マウスをクリックすると弾を初期化して gruff.rb と screenshot<日付>.png を吐きます。
gruff.rb はグラフを吐く ruby スクリプトでして、動かすには http://d.hatena.ne.jp/alpha_neet/20111115/1321307074 を参考に gruff を入れ
ruby gruff.rb
で processing_framerate_test.png が吐かれます。
Par.scala を弄りたい時のメモ
変わる内容 | Par.scala の行: 軽い説明 |
---|---|
画面サイズ | 112: size |
フレームレート | 114: frameRate |
弾が初期化されるフレームレート | 196: fRate の値。この行をコメントにすると初期化されなくなる |
マウスクリックで弾が初期化されてうざい時 | 199: をコメント |
プレイヤーのサイズ | 36: createCircle |
プレイヤー速度 | 119: player.speed |
プレイヤーの弾を出す間隔 | 85: shotCt |
プレイヤーが弾を出す数 | 17: List.range(0度 から 360度 までを x 度の間隔で弾を出す) という意味 |
弾のサイズ | 34: createCircle |
弾の速度 | 93: speed |
lion に gruff を入れてみた
グラフを作ってみたかったので入れました。ghostsciprt のところで少し詰まったのでメモっときます。
インストール
http://d.hatena.ne.jp/ruedap/20110320/mac_ruby_imagemagick_rmagick_install を参考に
brew install imagemagick
gem install rmagick
gem install gruff
これで ok なはずだったんですが、http://nubyonrails.com/pages/gruff のコードサンプルを実行してみると
/Users/alphaneet/.rvm/gems/ruby-1.9.2-p290/gems/gruff-0.3.6/lib/gruff/base.rb:1088:in `get_type_metrics': unable to read font `/usr/local/share/ghostscript/fonts/n019003l.pfb' @ error/annotate.c/RenderFreetype/1120: `(null)' (Magick::ImageMagickError)
というエラーが。。。むむむむ。。。
色々試してみたんですが上手くいかず、駄目元で ghostscript 本体を入れてみるかーとなり
brew install https://raw.github.com/mxcl/homebrew/master/Library/Formula/ghostscript.rb
をやってみたところ動きました!!!
試しに /usr/local/share を見てみたところ ghostsciprt ディレクトリもちゃんと出来てました>_<
めでたい。めでたい。
使いかた
基本的には http://d.hatena.ne.jp/kj-ki/20090202/p1 を参考にすると良さそうです。
グラフの線の色を変えるのは data メソッドの第三引数に色名を入れれば良いっぽい
例:g.data("Apples", [1, 2, 3, 4, 4, 3], 'red')
プログラミングClojure 勉強メモ 目次
clojure 勉強メモ 総合目次
体系的な(つもりの)勉強メモは基本 livedoor wiki にのせていたんですが、lisp 系のシンタックス・ハイライトが使えなかったので はてなダイアリー + gist に置くことにしました。