dev.convexstyle.net

2007年05月 アーカイブ

FLV と FFMPEG と Fedora Core 5

del.icio.us hatena bookmark

最近数ヶ月前に sakura から借りた専用サーバでモロモロ自分のイメージしているモノを作るために、色々インストールしてみて検証検証。Flash Media Server を使って作りたいものがあるんですが、個人では高くて手が出ないので同機能の RED 5 をインストールしてモロモロ試してます。で、フリーでここまでいけるんかと結構可能性を感じてました。それに基づき、テストでウェブカメラからの記憶ストリーム FLV の最初のフレームを動的にスナップショットするために FFMPEG を Fedora Core 5 にインストールするもすんなりいかなかったのでメモします。


(1)FFMPEG サイト上で書かれている通り、subversion で作業コピーを作成しインストール。
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg

./configure --enable-shared
make
make install


(2)FFMPEG-PHP を下記からダウンロードしてインストール
http://ffmpeg-php.sourceforge.net/

./configure
make
make install


(3)php.ini に extension=ffmpeg.so を追加し apache 再起動。

すんなりインストールされる。
しかしここから結構苦労した。

http://ffmpeg-php.sourceforge.net/apidoc.php
に書かれている様な関数を PHP で実行するとエラーログで Segmentation Error が出る。
phpinfo を確認すると「libavcodec version」「libavformat version」が以前のものとは違うから一応検証のために以前の ffmpeg-0.4.9-pre を再度インストールしなおす。


(4)ffmpeg-0.4.9-pre インストール
./configure --enable-shared
make

しかし make で下記の様なエラーが出て前に進めない・・・
http://kikitai.teacup.com/kotaeru.php3?q=2516599

モロモロ検索すると Fedora Core 5 だと GUN C Compiler のバージョンが 4 ではなく 3.2 じゃないとインストールできなそうな記事が。これは確か ming でもそうだった気が。--cc=gcc32 をオプションにつけて再度インストールしてみる。


(5)再度インストール
./configure --enable-shared --cc=gcc32
make
make install

無事にインストールされた。
ffmpeg-php もインストールして試しに FLV をスナップショットしたら普通にいけた。

ActionScript 3.0 での objectEncoding 概念

del.icio.us hatena bookmark

実家に里帰りして、桜祭りで AE-1 で写真撮影。リラックス出来ました。


ActionScript 3.0 でヘテムルのインフラを使い FMS アプリケーションに接続するテストをしてみた。接続の考え方は ActionScript 3.0 以前と同じなので ActionScript 3.0 の記述形式さえ書ければ特に問題ないが、objectEncoding の概念を理解していなくて接続に少し手間取ってしまった。理解されている方は特に問題ないのですが、自分は知らなかったのと検索してもあまり詳しく書いていなかったのでメモ。

ActionScript 3.0 での objectEncoding 概念
ActionScript 3.0 での objectEncoding 概念概略図


アプリケーションサーバと Flash アプリケーションの通信のデータフォーマットは Action Message Format(AMF)でバイナリデータを送受信しているのだが、Flash Player 9 リリース以前はアプリケーションサーバへの接続には AMF のバージョンが 0(AMF0)を使用していたが、Flash Player 9 リリース以降の Flex 2.0 の様なアプリケーションサーバへの接続にはデフォルトで AMF のバージョンが 3(AMF3)が使用されている。Flash Player 9 は ActionScript 3.0 用の VM を搭載している様に、AS 3.0 ではすでにデフォルトで AMF3 がサポートされているので、ヘテムルでプレインストールしている Flash Media Server 2.0 や Flex 1.5 の様な Flash Player 9 以前にリリースされたアプリケーションサーバは AMF0 のみをサポートしているという矛盾から、今回接続が上手くいかなかった。

対応策は簡単で、ActionScript 3.0 内で明示的に NetConnection オブジェクトで FMS アプリケーションに接続する際の AMF のバージョンを objectEncoding プロパティで AMF0 に変更することで接続は出来るようになる。これは最近結構使っている RED 5 でのアプリケーション接続時も同様。

以下、簡単なサンプルソース(fmsEx.as)。


package {

import flash.display.*;
import flash.net.*;
import flash.events.*;

public class fmsEx extends Sprite {

private var _nc:NetConnection;

// コンストラクタ
public function fmsEx() {
_nc = new NetConnection();
_nc.objectEncoding = ObjectEncoding.AMF0;
_nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
_nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
_nc.connect(rtmp://******.fms.heteml.jp/アプリケーション名/[任意]インスタンス名);
}

// NetConnection の NetStatusEvent 用関数
private function netStatusHandler(evt:NetStatusEvent):void {
switch(evt.info.code) {
case "NetConnection.Connect.Success":
// FMS アプリケーションへの接続に成功
break;
case "NetConnection.Connect.Failed":
// FMS アプリケーションの接続に失敗
break;
case "NetConnection.Connect.Rejected":
// FMS アプリケーション接続権限がありません
break;
case "NetConnection.Connect.Closed":
// FMS アプリケーションが無事に閉じました
break;
default:
// その他
}
}

// NetConnection の SecurityError 用関数
private function securityErrorHandler(evt:SecurityErrorEvent):void {
// セキュリティエラー
}
}
}


【開発環境】
Flex Builder 2.01、ActionScript 3.0、Flash Media Server 2.0、Flex SDK
*テストでは Red5 使用。


【参考サイト】
livedocs.adobe.com

Loopy 1.1

del.icio.us hatena bookmark

ユーザーさんからの不具合の報告で2年ほど前に作ったスクリーンセーバ Loopy を久々にアップデートしました。作成した時点では開発環境が Flash MX 2007 でしたが、Flash Player 8 + の環境から System.security.sandboxType が追加され、ローカルから外部サーバへのアクセスで生じる不具合が原因の様です。まだ Intel MAC には対応してませんが、最新版の screentime を購入して追々対応します。


loopy 1.1


【開発環境】
Flash 8 Professional、ActionScript 2.0、ScreenTime 3.01、Photoshop 7、Illustrator 7


【担当領域】
同上

Apollo Mini Camp

del.icio.us hatena bookmark

昨日 Adobe 主催の Apollo Mini Camp に参加。
AS 3.0、Flex、Apollo は興味があって個人的にも最近勉強がてら意識して開発しているので、公式のスピーチとしてApollo for Adobe Flex Developers の著者 Mike Chambers のスピーチから Apollo の動向と可能性を聞けてなかなか楽しめました。技術的にも既存の技術+MXML 知識があれば作れるので、まずは会社の時間にこっそりと楽しめる sneaky な Apollo アプリでも作ってみます。


Apollo T-shirts
The picture of Apollo t-shirts

MashupAwards for FlickrTime

del.icio.us hatena bookmark

今日、MashupAwards からメールが来ていて、去年末に作った FlickrTime が Flickr 系の MASHUP OF THE DAY として MashupAwards.com の Winner に選ばれたらしい。誰が登録したのか分からないですが、ありがとうございます。


MashupAwards.com
The screenshot of MashupAwards.com