あれ思った以上に日記上げてなかったようだ。ていうか先週一回書いたけど上げてなかった。
仕事は一段落したっぽい。一段落つっても次の締め切りが8月末だとか9月中旬だとか言う話なのですぐ忙しくなるんだけど。
日曜はぴあきゃすでオンライン勉強会が開かれてそこでビデオストリーミングの用語解説的なことをやった。 資料はあとでちょっと直して上げておくかもしんない。
反応は上々な感じだった。ビデオストリーミングといいつつ前半はコンテナとコーデックの違いについて延々説明したんだが、コーデックの説明してるのにOggは?FLVは?と聞かれる始末。みんなこの辺わかってねーだろと入れた説明だが狙い通りだったようだ1。理解してもらったかまではわからないが、まあ幾人かでもわかってくれれば充分か。
後半はストリーミングプロトコルの説明といいつつほぼHTTPプログレッシブダウンロードだけでおわり。これで簡単なストリーミングはできますよー、でもいろいろと制限がきついのでストリーミング用のプロトコルがありますよー、という流れにしといた。
本当は図をいくらか入れたかったんだが、資料作るのが当日数時間前だったんで間に合わんかった。テキスト自体は書いておいたので問題なかったんだが、図を描く時間がなくてな。日曜は用事があって出掛けたので仕方ないが土曜日だらだらしすぎた。
あとアンケートも取りたかったんだよなぁ。スレの方で反応がよく見れるのでリアル勉強会なんかより余程反応はわかりやすいんだが、それでも対象としたレベルは合ってたのかとかみんな次に聞きたいのはどんな話かとか取れるとうれしかった。これもやはり用意する暇がなかった。前から考えてはいたんだけど思い出したのが直前だったわ。
しゃべってた時間的には30分割り当てのところ35分くらいでちょっとはみだした。なるべく内容減らしたんだけどやっぱりちょっと多いな。スレでのつっこみにリアルタイムで反応するとどのくらい時間かかるのかってのは全く読めなかったので、上手く時間内に収まらないというのは予想の範囲内ではある。次があるならもっと話題を絞っていきたい。
仕事もイベントも一段落したんで何かやりたいなぁ。でもやりたいことありすぎだわ。
説明の順番は悪かったかも。コーデックより先にコンテナの種類を紹介すべきだったか。 ↩
PeerCastStationの作業の方はMKV読み込みができたついでにFLVの読み込みも書いてみるかとやったらすぐ出来た。
PeerCastで使う分にはヘッダとそれ以外に分けられればよくて、中身をちゃんと見る必要はないので簡単だ。 トラック情報とか取れるなら取るんだけど、FLVには入ってないしね。
一点だけ面倒なのはビットレートを自動で取得したいというところなんだが、FLVは仕様を見る限り公称ビットレート的なものは入ってないんで計算しないといけない。だがこれも簡単で、各パケットの頭にタイムスタンプがミリ秒単位でついててくれるので各パケットのサイズをパケット間の時間で割れば計算完了。シンプルでいいっすね、FLV。同期も取りやすいので比較的ストリーミング向きでもある。MKVのストリーミングは無理ありすぎだって。
ただ問題はエンコーダか。テスト用のファイルを作ろうとしたがVLCではFLVに入りそうなのはH.263かH.264しかない。H.264は何故かエンコした瞬間落ちるので使えず、H.263を試したらエンコーダが開けない的なエラーが出てエンコできなかった。どうもVLCでFLVを作るのは無理っぽいな。
いろいろ調べてみたらFlash Live Media EncoderでFLVが作れるっていうので適当に作ってみた。こいつでのFLVはファイルに保存するだけなのでHTTPで配信とかまではできないが、テストファイル作るだけなので問題ない。ライブ配信はRTMPなのでPeerCast配信用には使えないけどなー。ライセンス的にもFlash Media Server以外を使って配信しちゃだめよ、ってなってるし。え、FLVのオフライン保存は大丈夫だよな。
テストファイルは無事作れてテストも上手いこと通せたので入れといた。
次はOggも対応したいけどこいつはけっこう大変。 ストリーミング向けのコンテナだからコンテナ解析自体と同期は簡単だけど、 ビットレートとか計算しようとするとコンテナのレベルで見るだけじゃ情報足りなくてコーデック毎にいろいろ対応しないといけないとか。 パケットに標準でついてるタイムスタンプすらコーデック毎にフォーマット違うとか自由度高すぎんだろ……。 あとヘッダとボディの分割もちゃんとやらないとな。
しかしOgg対応の他にやるべきこともいくらもあるんで何から手をつけたものやら……。