Subject: [wide-kids 20004087] RealProducer and RealServer on FreeBSD From: 木本雅彦 (Masahiko Kimoto) Date: Sat, 18 Nov 2000 20:57:27 +0900 X-Mailer: Mew version 1.94 on Emacs 19.34 / Mule 2.3 (SUETSUMUHANA) FreeBSDでRealProducerとRealServer動かしました。 結論からいうと、どのversionのFreeBSDでもkernelを改造しないと RealProducerは動きません。これは、RealProducerが利用しているioctl() をlinux emulationがさばいてくれていないからです。FreeBSD 3.x用の patchはこのメールの末尾に付けました。 --------------------------------------------------------------------------- 1. RealServer 下記のURLの下のほうにFree Productsの項目があるので、RealServer Basic を選択して、FreeBSD用のRealServer Basicをdown loadする。色々聞かれる けど、e-mail addressだけはちゃんと答えておく。なぜならライセンスの 情報が送られてくるから。 http://www.realnetworks.com/products/index.html?src=001114realhome_2,prdcrpl_102300,ra8ppb,ra8smsk_111300 すると、g2_7_0update2-freebsd-3_0_servinst.bin というファイルが手に入る。 こいつは実行形式なのでchmod 755する。 実行すると、current directoryにrnsetupを作成しつつsetupのメニューが 現われる。 install先は適当に選ぶけど、ここではFreePICKLES用ということで、 /local/realserver/に設定した。 down loadするときに入力したe-mail アドレスにライセンスに関するメールが 送られて来ているはずなので、そのメールを読んでライセンスファイルを入手 する。でもって、setup時にそのファイルをインストールする。 setupが終了すると勝手にサーバが立ち上がる。手動で立ち上げる場合は cd /local/realserver Bin/rmserver rmserver.cfg とかすれば良い。設定はweb browser経由で行うのが良い。defaultだと管理用 ポートは25113になっている。ポート番号の情報はrmserver.cfgの先頭の方を みると分かる。 また、自分のホスト名の逆引ができないと外部から接続出来ないので注意。 動作確認したい場合は、外部のRealPlayerからpnm://hostname/g2video.rm をアクセスしてみる。ちゃんとサンプル映像が再生できたらOK。 2. RealProducer FreeBSDのkernelに手を入れる必要があるけど、それは後述。 まずlinux emulationを有効にしておく。普通は単にlinuxを実行すれば良い。 上記のdown loadページから、RealProducer BasicのLinux kernel 2.2用を 入手する。RealProducer_8.0_Linux.tgzというファイルが手に入るはず。 適当なディレクトリを掘って、tgzを展開する。installという実行形式が あるので、これを実行する。 FreePICKLES用ということで、インストール先は/local/realproducer-8.0に する。あとはインストーラに任せる。展開されたらインストールは終了。 以降の説明は/local/realproducer-8.0で作業するものとする。 2-1. line inからの音声をencodeしてファイルに落す場合 ./realproducer -z 0 -l 2:1,0 -o filename を実行する。-lは入力デバイスの指定。-z 0で画像のエンコードを無効にする。 必要に応じて以下のオプションを付けると良い -a 3: ステレオになる -t 8: 0-8の数字を指定。数字が大きいほうがbit rateが大きい 2-2. line inからの音声をserverに送ってrealtime streamを流す場合 serverにユーザ名とパスワードを設定する。管理メニュー(ブラウザ経由)の Security→Authenticationを選び、Authentication RealmsをSecureEncoder にしてADD A USER TO REALをクリックする。するとユーザ追加のWindowが 開く。で、適当な内容を追加する。 エンコーダの方は ./realproducer -z0 -l 2:1,0 -u username -p passwd -s localhost/live.ra のように実行する。-sの引数はserverのホスト名/ファイルのpath。 うまくいくと、pnm://hostname/encoder/live.raのようにしてアクセスできる。 2-3. 注意 音量は適当にmixerコマンドで調節しましょう。 3. FreeBSD kernelへの変更 RealProducerをFreeBSDで実行するには、kernelのlinux emulationに手を 加える必要があります。これは3.xでも4.xでもcurrentでも同じです。つまり 直っていないということ。きっとFreeBSDでRealProducerを使っている人が 世界中を探しても存在していないのでしょう。 3.xのsource treeで変更点を説明します。4.x以降は構造が変わっているはず ですが、やることは同じです。 修正する必要があるファイルは、/usr/src/sys/i386/linux/{linux_ioctl.c, linux.h}。これらに以下のpatchをあてる。 でもって、/usr/src/sys/modules/linuxに行き、make all installを実行する。 これでlinux emulationのkernel moduleが作り直されたので、loadしなおす。 *** linux.h.orig Sat Nov 18 19:57:08 2000 --- linux.h Sat Nov 18 18:27:12 2000 *************** *** 608,613 **** --- 608,614 ---- #define LINUX_SOUND_MIXER_WRITE_LINE1 0x4d0E #define LINUX_SOUND_MIXER_WRITE_LINE2 0x4d0F #define LINUX_SOUND_MIXER_WRITE_LINE3 0x4d10 + #define LINUX_SOUND_MIXER_WRITE_RECSRC 0x4dff #define LINUX_SOUND_MIXER_READ_DEVMASK 0x4dfe *** linux_ioctl.c.orig Sat Nov 18 19:56:49 2000 --- linux_ioctl.c Sat Nov 18 18:26:03 2000 *************** *** 997,1002 **** --- 997,1006 ---- args->cmd = SETDIR(SOUND_MIXER_WRITE_LINE3); return ioctl(p, (struct ioctl_args *)args); + case LINUX_SOUND_MIXER_WRITE_RECSRC: + args->cmd = SETDIR(SOUND_MIXER_WRITE_RECSRC); + return ioctl(p, (struct ioctl_args *)args); + case LINUX_SOUND_MIXER_READ_DEVMASK: args->cmd = SOUND_MIXER_READ_DEVMASK; return ioctl(p, (struct ioctl_args *)args); --------------------------------------------------------------------------- 東京工業大学大学院 情報理工学研究科 数理・計算科学専攻 博士後期課程 TEL: +81 3 5499 3857 木本 雅彦 FAX: +81 3 5499 3870 http://www.ohnolab.org/~kimoto --------------------------------------------------------------------------- 注) この情報については、http://www.ohnolab.org/~kimoto/freebsd/ に最新の 内容があります。