6月 202010
 

オンキョーの CR-D2+D-D2E と言う組み合わせのミニコンポを購入しました。そして、その後に ND-S1 と言う PC と USB で接続できる iPod ドック付きのデジタルメディアトランスポートを購入しました。

音響機材としての感想などについては以下の URL に書いたのでそちらを参照して頂ければと思います。

ここでは ND-S1 を PC のパーツとして利用した場合にどんな感じか、ちょっとまとめてみたいと思います。

まず、ND-S1 と言うデバイス、PC からすると「サウンドカード」と言う扱いになります。USB 接続の外付けサウンドデバイス。 PC に接続すると USB Audio DAC として認識するので Windows・MacOSX・FreeBSD の全てでサクっとデバイスとして認識します(筆者の自宅に Linux は存在しない;-)。

まず、Windows についてですが、簡単に書いておきます。 Windows7 Ultimate x64 に接続するとサクッと認識します。後はコントロールパネルのサウンド設定で出力先を ND-S1 に向けてあげるだけで Windows Media Player や iTunes で音が出ます。また、 iTunes では iPod と Sync も行えます。

MacOSX は製品のカタログでは対応外の OS となっているのですが、こちらも Windows7 と同じくサクッと認識します。

usbdac_1.jpg

これが認識した瞬間ですね。後は iTunes の音も出るし、システム全体の音もステレオに飛ぶようになります。当然 iPod との Sync も行えるのであります。

さてと。ここまで二つの OS でサクッと認識したので、では今回の本命の OS である FreeBSD はどうだ?と言うことで、FreeBSD/amd64 7.3-STABLE に接続してみました。

uhub6: <vendor 0x0409 product 0x005a, class 9/0, rev 2.00/1.00, addr 3> on uhub5
uhub6: single transaction translator
uhub6: 2 ports with 2 removable, self powered
ugen1: <Burr-Brown from TI USB Audio DAC, class 0/0, rev 1.10/1.00, addr 4> on uhub6

 
一発目。USB ポートに接続したら、あれま。 ugen0 に落ちてしまいました。カーネルモジュールをロードしよう。と言うことで /boot/kernel を眺めるとそれらしいのは snd_uaudio.ko くらいしか見あたらないのでそれをロードしてから再度接続すると。おぉ。pcm として認識しましたね。

uaudio0:  <NBurr-Brown from TI USB Audio DAC, class 0/0, rev 1.10/1.00, addr 4k> on uhub6
uaudio0: audio rev 1.00
pcm4:  <NUSB Audiok> on uaudio0

 
cat /dev/sndstat してみると以下のような感じ。

$ cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2007061600/amd64)
Installed devices:
pcm0:  <NHDA ATI R6xx HDMI PCM #0 HDMIk> at cad 0 nid 1 on hdac0 kld snd_hda
pcm1:  <NHDA Realtek ALC883 PCM #0 Analogk> at cad 0 nid 1 on hdac1 kld snd_hda
pcm2:  <NHDA Realtek ALC883 PCM #1 Analogk> at cad 0 nid 1 on hdac1 kld snd_hda
pcm3:  <NHDA Realtek ALC883 PCM #2 Digitalk> at cad 0 nid 1 on hdac1 kld snd_hda
pcm4:  <NUSB Audiok> at ? kld snd_uaudio [GIANT] (1p:1v/0r:0v channels default)
mode 1:(output) 2ch, 16/16bit, pcm, 32000,44100,48000Hz
mode 2:(output) 1ch, 16/16bit, pcm, 32000,44100,48000Hz

 
おぉ。pcm4 で USB Audio DAC な機器として認識したようです(Realtek ALC883 PCM は長すぎるので後ろの文字列を消しています。今回重要なのは pcm4 になります)。これはすばらしいっ!!

それにしてもこの ND-S1 と言う機器は出力用にコンポジットデジタルとオプティカル光デジタル出力があるので output は二系統あります。そんでもって input は持っていないと言うことが解ります。

これが悲しいのよねぇ。ミニコンポから光デジタル出力して ND-S1 にデジタル入力があったとしたら PC 側でデジタル録音できたのにねぇ。それができない。フツーの PC 用サウンドカードではない。ということが良く分かります。

話を戻しますが、FreeBSD ではここからが泥沼です。まず、デジタル出力のチャンネルが二系統あるのですが、僕は「どっちかの出力チャンネルを指定する」コマンドなり設定を見つけることができませんでした。なので、オプティカル光ケーブルで接続しているほうを優先的に利用することができないので実際に正常に音が出ているのか確認できないのであります。orz。Windows とか MacOSX はどうやって判断しているのだろう・・。

ちなみに sysctl の hw.snd MIB ではそれらしいのを見つけることができませんでした。

けどもまぁ、気を取り直してとりあえず CD でも聞いてみましょう。あれ・・。音が出ない・・。
じゃあ mplayer で mp3 でも聞いてみましょう。あれ・・。音が出ない・・。
それなら dolphin (KDE4 付属のメディアプレーヤー)で動画でも見てみましょう。あれ・・。音が出ない・・。

orz。つまりは全滅。と言う感じなんですね。あげくの果てにはなにやら怪しげなログを出力しているようです。

kernel: pcm4:virtual:dsp4.vp0: play interrupt timeout, channel dead
kernel: usb5: *** WARNING: opening low/full speed device, this does not work yet.
pcm4:virtual:dsp4.vp0: play interrupt timeout, channel dead
kernel: usb5: *** WARNING: opening low/full speed device, this does not work yet.

 
USB HUB が悪さしていて USB の速度が出ないよ。的なメッセージなんですかね。けど、PC の USB ポートに直接接続したので特に問題は無いのではないかと思えるんですけど・・。また、同一 PC でマルチブートする Windows7 は同じ構成で無事に動作したし。

ちなみにこのメッセージが出力される部分がどこか、一応ソースを眺めたのですが、sys/dev/usb/ の
ehci.c と uhci.c だったので snd_uaoudio 側ではなく、USB 側の問題であろうと言う感じはします。時間ができたらじっくりとソースを眺めてみたいとは思いますが・・。

とまぁ、そんな感じで ONKYO ND-S1 を購入したのですが、ネタ的には音響機器・PC のデバイスと色々な角度から見てネタができて良かったです。

まぁ、FreeBSD で動作して本当に嬉しい?と言われれば何ともいえないのですけどね。 iPhone3G や iTunes での音楽の管理は 全て MacOSX 上で行っているので MacOSX に接続して、そこで動作すれば良いやー。となってしまうのでありますが;-)。

つづきを別のエントリーとして書きました。以下になります。

ONKYO ND-S1 と FreeBSD 8.1-PRERELEASE。

5月 252010
 

ちょっと前のエントリーで「USEN 放送を録音して iPhone で聞く。」ってのを書いたのですが、ようは USEN のチューナからアナログケーブルで PC の LINE-In に接続して録音してみました。ってヤツでした。

しかし、これやっても音が非常に悪いっ!! アナログ特有の「ぶーー」って音が後ろの方で聞こえていたりしてもうダメダメ。なのでアナログ録音することはあきらめました。orz。

するっていと、自宅にやってきた USEN は結局どうるすか?と言うことになるのですが、自作した「USEN SOUND PLANET-i プレイリスト」で今流行の曲を認識して、その曲自体を USEN で聞く。みたいな感じにしか利用できないのであります。

欲しいな。と思う曲があれば iTMS で購入したりするのですが、youtube も検索してみるわけです。ふむー。自分でアナログ録音したのより youtube のほうが音、いいんじゃね?とか思うのでありますが、ここでようやっと clive の出番です(^^;;。

clive とは youtube の動画を自分の PC にダウンロードできるコマンドです。使い方はこんな感じ。-f は保存形式を指定します。 mp4 で保存します。 URL は youtube の動画が見えるページの URL をそのまま指定します。

% clive -f mp4 "http://www.youtube.com/watch?v=77EJiYJG3h0"

 
すると、Flash なのに mp4 ファイルで保存してくれます。すげー。jobs に感化されて Flash キライ(インストールしてない)な人は mplayer とか QuickTime Player で見てください;-)。

FreeBSD の ports では multimedia/clive にあります。make install すればもうばっちし。

しかし、mp4 の動画、サウンドトラックとビデオトラックがあるけどビデオトラックを消して m4a にしたいので、その時は MacOSX 上で GarageBand を利用するので、どうせなら clive もMacOSX 上で動かしたいモノだ。とか思い epkg を作ろうとしたのだけど・・。

うひー。perl のための epkg というのがなくて、ひな形となる Makefile が存在しないみたい。あれれ・・。まぁ、epkg と言うのはユニバーサルバイナリを出力するための「フレームワーク」なわけで perl スクリプトなどはアーキテクチャには依存しないので当然と言えば当然か。

と、言うことでコマンドラインから clive をインストールします。

まず、clive のソースを取って(http://clive.googlecode.com/files/clive-2.2.11.tar.bz2) きて、展開した後に perl Makefile.PL;make;mak einstallします。けど、色々 perl モジュールが足りないぜぃ。と言われるので必要なものをインストールしてあげます。cpan(1) を利用してインストールします(コマンドイメージはこんな感じ % perl -MCPAN -e shell )。必要な perl モジュールは以下になります。

  • Class-Singleton
  • Config-Tiny
  • Getopt-ArgvFile
  • HTML-Parser
  • URI
  • WWW-Curl

cpan からのインストールが終わると、/Library/Perl/5.10.0/ 辺りにインストールされます。その後で再度 clive をインストールすると無事に入るので上記のコマンドをすかさず実行します。実行時に WWW/Curl/Easy.pm が無いと言われたら /var/root/.cpan/build/ の下の WWW-Curl で直接 make install 叩いちゃってください;-)。

clive は以上なのであります。

さて、引き続き、GarageBand についてちょっと書いてみたいと思います。

そもそも iPhone(iPod) で音楽を聴きたいので動画部分は必要ありません。そんな時は GarageBand でビデオトラックを削除して、サウンドトラックのみにしてから保存すれば大丈夫です。

まずは GarageBand を起動してダウンロードした mp4 データを DnD してあげます。すると以下のような感じになるでしょうか。

GarageBand.jpg

左上部分のキャプチャですが、二個並んでいるのがトラックです。上がビデオトラック、下がサウンドトラックです。ビデオトラックをクリックして、メニューから [トラックを削除] を選択すると簡単に m4a(AAC) な音楽ができます。後はこれを iTunes に転送してあげれば良いだけですね。

簡単なのでありました;-)。

などと、GarageBand をいじっているとその機能の多さにちょっと感動します。僕もミュージシャンになって音楽でも作ろうかなぁ。などと思ってしまうのでありました;-)。

ちなみに、著作権についてですが、 USEN 放送を録音して自分で聞く分にはちゃんとシロです。youtube の動画を保存して自分用に聞くのはどうなんだろう? 以前別のブログに書いたのがあるんだけど、こっちは youtube 上からもう既に削除されてしまっています。と、言うことはクロかな?

自己責任でお願いします。

5月 082010
 

ちょっと前のエントリーで「USENがやって来た。」というのを書いて、その後、チャンネルがちーとも解らん。とか思って、自分でチャンネル検索と、現在演奏している曲一覧なシステムを作ったのであります。そのエントリーは「USENのチャンネル検索システム。」で、検索システムはこっちです。-> USEN SOUND PLANET-i チャンネル検索
けど、そーすると次は「録音でもしてみっかねぇ。」となるのであります;-)。

ちゅーこって早速行ってみたいと思いますが、まず先に著作権について書いておきましょう。USEN の SOUND PLANET-i は扱いが「放送」になります。なので、録音して自分で聞く分には著作権についてはクリアされています。録音して iPod で持ち歩いても全然 OK;-)。

これがユニキャストになると「IP 配信」になるので JASRAC 的には随分と高い著作権料を取るらしいのですが、マルチキャストだと非常にグレーではありますが「放送」としての著作権料になるらしいです。電源ボタンを入れたらパッと流れ出す点で「マルチキャストは放送っぽい。」って扱いらしいんですね。

さてと。ではいよいよ本題に行ってみましょう。今回は USEN 放送を録音してみます。必要なものは以下です。

  • USEN 放送が聴ける環境
  • サウンドカード
  • Windows7 (サウンドレコーダー)
  • MacOSX (GarageBand)
  • どちらの OS でも iTunes

こんな感じでしょうか。Windows7 は無理して利用する必要はありません。ただ、デスクトップマシンで Line-in のあるサウンドカードがると非常に便利です。まぁ、せっかくなので書いておくか。と言う感じなんですけどね;-)。

手順は以下になります。がっ!!録音される音はアナログ音源です。それは非常に悲しいことですが、それが現実となりますX-|。

1). 機器の接続。
USEN 放送用機器の外部出力と Windows7 のサウンドカードの Line-in を接続します。マイク端子に接続すると録音時にモノラルになる場合があるので Line-in に接続します。

僕は PC にオンボードのサウンドカードを利用しましたが、USB のサウンドカードも持っています。

USEN2m3a_1.jpg

こいつは Windows7 でも MacOSX でもドライバ無しで認識します。なので、本当は Windows7 は必要無いのですけどね。まぁ、Windows7 経由でやりました;-)。

2-1). 録音 (Windows7 で)。
Windows7 のコントロールパネルでサウンド機器の設定を見直して、「録音」タブでライン入力にチェックが付いているか確認します。そしてプロパティから「レベル」タブを表示して入力のボリュームを調整します。
そしたらアクセサリの中にあるサウンドレコーダーを起動します。緑のメータが動いているか確認したら後は録音ボタンを押すだけです。

USEN2m3a_2.jpg

なぜ、Windows7 を使ったか、なんですが、このサウンドレコーダーアプリが随分とパワーアップしているのに驚いたからです。録音時間は二時間とかできます。多分 HDD 容量が許す限り録音できると思います。非常に簡単なアプリです。WindowsXP のとは大違い。録音を停止した後は wma 形式で保存できます。すばらしいですね。

後は、Windows7 で iTunes を起動して 無題.wma を iTunes に DnD すると wma から m4a に変換してくれます。変換した m4a を MacOSX に持って行きます。

2-2). 録音 (MacOSX で)。
USB オーディオ機器を持っている人はそれを MacOSX に接続した後、システム環境設定のサウンドの「入力」タブで利用したいデバイスを指定します。また、この画面で入力音量を調整します。それが完了したら GarageBand を起動します。色々質問されるかもしれませんがとりあえず起動します。機動した後、表示されている全てのトラックを削除します。
全部削除したら新規トラックを追加します(リアル音源を追加)。その後、GarageBand の環境設定から「オーディオ/MIDI」タブを選択し入力デバイスを選択します。後は一番下の赤くて丸い録音ボタンを押します。

3). さて。編集。
長時間録音した情報を編集して一曲ずつに切っていきます。Windows7 から持ってきた m4a は起動した GarageBand に DnD します。これで新規にトラックができます。それ以外に余計なトラックがある場合には全て削除しましょう。

USEN2m3a_3.jpg

半分から上がトラック情報、下がトラックの編集画面になります。オレンジ色っぽい部分が録音したデータです。ギザギサが無くなる部分が曲と曲の間なのでそこで曲を切ってあげます。半分から下の部分が編集画面になるので、曲の部分をマウスで選択してグレーにした後にクリックするとそこで曲がカットされます。後はメニューの「編集」でカットやペーストを利用すると音楽が好きに編集できます。すばらしい。

一曲単位になったらメニューの「共有」で「iTunesに送信」を選択します。その時、オーディオ設定のメニューでビットレートを指定してあげてください。所詮はアナログ録音なのでロスレスにする必要は無いと思いますけどねぇX-|。

簡単に書くとこんな感じです。

GarageBand は自分としては「ぜってー使うことは無い。」と思っていましたが、実際に使ってみるととても楽しいしラクです。Windows 上で編集作業しなくていーやー。みたいな気分になります。

例えば Youtube から何かしらの手段で拾ってきた mp4 なビデオを GarageBand に DnD してビデオトラックだけ削除すると残りは音楽トラックだけになるのでそれを iTunesに送信 すれば音の部分だけ抜け出せたりします。

と、言うことでこれで USEN 放送も録音して iPhone/iPod で聞くことができるようになったかと思います。 USEN 放送はほぼ 25 曲をループしているので三時間位録音したら、後はそのデータを GarageBand でぶった切るだけなのでラクチンです。 Windows の場合、フリーの音楽編集ソフトから探し回らなければならないのでその辺りからもう苦痛になってくるのですけどねX-|。そー考えると全てを MacOSX 上でできるのは良いことですかねー。

さてと。GarageBand。使い込んでみるとこれがまた中々良いですね。僕はガキの頃ヘビメタ少年だったので、なんか曲を作りたくなってしまいました。家にはフォークギターとウクレレがあるので二つのトラックでなんか曲作ってみたいなぁ。と思ってしまったのでありました;-)。

3月 042010
 

突然ですが、タイトルの通りです。つぶやきに関しては今までワッサーを使っていたのですが、iPhone アプリなどアクセス方法を考えた場合にツールの数が圧倒的に違うので、結局 Twitter を選んでしまいました。

後、Ustream についてですが「中継」ができるのが嬉しいかなぁ。YouTubu のアカウントは持ってないんだけど、Ustream のアカウントは作りました。

で、どちらも「いつ使うか?」なんですが、早い話、どっか飲みに行ったときそこからツイートしたり出てきた料理を中継してしまえ。って感じなのであります(^^;;。録画したビデオをアップロードすることは今のところ考えて無くて「生放送」って感じにしたいですね。

飲み屋に行って、ビールをゴブリと一口飲んだ後にオモムロに iPhone3G を取り出してまず Twitter で「今から生中継します。」ってつぶやいて、その後は Ustream を起動して注文して出てきた料理とか撮って、どんどん無くなっていく図がずっと流れるわけです。

あ。けど、最近は飲み屋に行くとまずセカイカメラでARタグ付けているんだった;-)。

でもって「あ。こいつホッピー中身おかわりしてやんの。」などと見ている人がツイートしたりすんですかね。中継見てくれる人がどれくらいいるか分かりませんが(^^;;。

ふむ。「Web2.0 in Your Pocket from motsuyaki shop.」って感じでしょうか;-)。結局今は、セカイカメラ・twitter そして Ustream とおちおち酒も飲んでいられないくらい忙しいのであります(^^;;。

twitter が @motsuyakiorg
Ustream は http://ustre.am/c4J9

です。宜しくお願いします;-)。

しかし、やっていることはどこぞの通信系キャリアの社長と一緒だなぁ。また、飲み屋でこんなことやっても良いのか?ビミョーだ・・。

この記事は二つのブログに掲載しています。

かけまわる子犬。
もつ焼き・オリジナル

2月 172010
 

もう少し、MacBook 及び MacOSX の話が続きます。おつき合いください。この後、BootCamp に Windows7 をインストールして多分終了かな;-)。

と、言うことで、前々回書いたエントリーで「Broadcaster 動かない。」と書いたら、コメントで「ちゃんと動くみたいですよ。」と頂いたので早速検証してみました。

結論を先に書くと確かに動作しましたf(^^;;。

さて、僕の場合、どうして「動かない。」と言ったかというとMacOSX Snow Leopard(以降 “SL” と記述)が出て、インストールした時点で QuickTime Broadcaster をインストールしたんだけど、はじかれて、更に確か、USB カメラのドライバーをインストールしようとした時にもはじかれたと記憶しています。

USB カメラは Sonix Technology Co., Ltd の SN9C102p と言うチップを使ったものを利用しているのですが、これはベンダのダウンロードサイトに行くと MacOSX 版のドライバもダウンロードできるので、そこからドライバをダウンロードしてインストールしていたのでありました。

ちなみに普段から MacBook に接続している USB カメラはこんな感じです;-)。暗いところでも赤外線でよーく見えるのよん。ただ、有効射程距離は短いんだけど。

Broadcaster2.jpg

インストールしようとすると「QuickTime7 をインストールしてください。」と言われたのは Darwin Kernel Version 10.0.0 です。今は Darwin Kernel Version 10.1.1 なので、バージョンアップで QuickTime7 のライブラリが入ったと想像できます。

ちなみに Darwin Kernel Version 10.0.0 の頃に QuickTime7 の Player をインストールしようとすると「最新版が入っているのでこれはインストールできません。」などと怒られていました。するっていと、上出のドライバとか Broadcaster は QuickTime7 にベッタリなので、実質利用できないんだー。と思った次第です。

ここで試しに QuickTime Broadcaster を ldd(MacoSX 的には otool -L) してみると /System/Library/Frameworks/QuickTime.framework と言うのがリンクされているです。なにーっ!! でもってもう一個 QuickTime Player X を ldd してみると、こっちは /System/Library/Frameworks/QTKit.framework と言うのがリンクされているです。orz。

今はもう Darwin Kernel Version 10.0.0 が手元に無いので解らないですが、一体いつ QuickTime7 もインストールしてないのに /System/Library/Frameworks/QuickTime.framework が入ったんだよーっ!! 状態となるのでありましたX-|。

なので Darwin Kernel Version 10.1.1 な人は QuickTime Broadcaster が動作するかと思われます。さすがは Apple。と言って良いのか?

動作している時のキャプチャです;-)。

Broadcaster.jpg

しかし、マイクが Built-in ってのがちょっと悲しいなぁ。MacBook 専用のマイクになるのか、はたまた、フツーのマイクを本体にさすと、音をちゃんと拾ってくれるのかなぁ?まだ試してないんですけど・・。

僕は FreeBSD のサーバ上で DSS を動作させているので比較的容易にストリーミングできるのであります。見てくれる人はほとんど皆無なんだけどね・・。もう少しコンテンツを増やさないと・・。

いやぁ、それにしても無事に動作して良かった良かった。で、この記事おしまいかな・・(^^;;。

9月 132008
 

僕はストリーミング用に自分で DSS を立ち上げているのだけど、なんか、今まで思いっきりカン違いしていることを発見した・・。

録画した動画を QuickTimePro でストリーミング用に書き出した mov ファイルは DSS 上で必ず「プレーリスト」を作成してからストリーミングしていたのだけど、その必要って全くなかったのね。素直に URL に mov ファイルを指定するだけで再生できたんだ・・。

どおりで .sdp ファイルが各種ブラウザで対応していないわけだ・・。ちなみにプレーリストを作成すると、rtsp://qtss.icmpv6.org/test.sdp とかなってプロトコルも拡張子も対応されていなかったのでした。

で、これらは HTML で吸収できるのか?とか思ったけど goolge で探し回ってもその例がほぼ存在しない・・。これは mov ファイルを http:// でアクセスするんだな。と言うことになるわけです。「プレーリスト」は必要なし。

と、言うことで過去のストリーミングはこれでは全然ダメと言うのが良くわかった。新しいのはこんな感じ。今度はちゃんとブラウザも認識してくれる書き方だよー。

電車からの風景
http://motsuyaki.org/Movies/20080616.qtl

http:// でアクセスして .qtl と言う拡張子のファイルを作成するわけです。ブラウザからのアクセスでプロトコルは問題なし、拡張子は QuickTime がインストールされていれば問題無く起動できることを確認しました。ふぅ。これにて一件落着。

さて、qtl ファイルの書き方ですが、大体以下のような感じ。XML なファイルとなります。再生時のオプションも指定できます。

<?xml version="1.0″?>
<?quicktime type="application/x-quicktime-media-link"?>
<embed src="rtsp://qtss.icmpv6.org/train.mov" autoplay="true" type="video/quicktime" controller="true" quitwhendone="false" loop="true" name="MOSS (Motsuyaki ORG Streaming Service)" > </embed>

 
さて、このファイルをウェブサーバ上に置くのだけど、今度は httpd の mime.types で認識してくれないので、このファイルが直接ブラウザに展開されてしまいます。なので AddType してあげる必要があります。conf/mime.types や httpd.conf に書いても良いのだけど、僕は .qtl ファイルを置いたディレクトリに .htaccess を置いてその中に記述してみました。以下のような感じ。

AddType application/x-sdp       .sdp
AddType application/sdp         .sdp
AddType application/x-quicktimeplayer   .sdp
AddType application/x-quicktimeplayer   .qtl

 
まぁ、ダメもとで .sdp の設定も書いたのだけど、やっぱりダメで(^^;;。.qtl のほうは正しく機能するようです。

と、言うことで、これでほぼ正しい設定が完了したと言う感じでしょう。ちなみに .qtl ファイルは QuickTimePlayer からでも出力できます。メニューの [ファイル] → [書き出す] → [ムービーから QuickTime Media Link] を選択すると一発です。色々なオプションも指定してくれるので簡単にできます。是非お試しあれ。

ふぅ。良かった。これでちゃんと DSS が機能しそうだぁ。

8月 272008
 

KDE3 の頃は mplayer で動画の再生をしていた。KDE3 の頃は ports/multimedia/kmplayer と言う、mplayer を KDE3 で使いやすくするものがあったりしたけど、素の mplayer でも特に問題はなかった。

KDE4 にしたら ports/multimedia/kdemultimedia4 をインストールすると doragonplayer と言うのがインストールされるようになった。mplayer みたいな感じで、konqueror のプラグインとしても動作する。まぁ、どっちを使っても良いだけど。

所で話はガラっと変わるけど、DVD ボックスを買ってしまった。「未来少年コナン」の 30 周年特別版。西暦 2008 年 7 月、核兵器を遙かに越える超磁力兵器により世界の半分が一瞬にして消滅してしまった。と言うアレですね。

2008 年 7 月と言うのはもう過ぎてしまいましたが、それでも「ルパン三世・カリオストロの城」よりは古いのだけど、いやぁ。懐かしいのと面白いのとで、あっと言う間に全 26 話を見てしまった。土曜日の午前中に DVD が届いて日曜日の夜には全部見た。

今まで、全 26 話を九時間で見た。と言う記録は「新世紀エヴァンゲリオン」があったけど、それと同等だねぇ;-)。いやはや。懐かしかったです。

と、言うことで本題に戻るのだけど、この DVD をちょっとだけ mplayer と doragonplayer で見てみた。一番悲しい点はどちらもデジタルドルビー 5.1 チャンネルに対応していないのは FreeBSD のドライバがヘボいと言うのはちょっとおいといてと。

どちらも綺麗に表示してくれます。ただ、mplayer のほうが完成度は高いですね。早送りとか巻き戻しができるしねぇ。そー考えると KDE4 と言うのはまだまだ開発中だ。と言うことが伺えます。

後、ブラウザのプラグインとしての機能。doragonplayer だけをインストールすると firefox の動画を見られないし、mplayer だけだと konqueror の動画見られない。konqueror は firefox のプラグインを参照してくれるけど、 firefox は KDE4 のプラグインを参照してくれないので、結局、メティアプレーヤーを二つインストールしなければならないのねぇ・・。と、言う感じ・・。

一応、両方の ldd の結果を付けておきましょうかね。これで対応しているメディアがある程度解ることでしょう;-)。

・ldd /usr/local/kde4/bin/dragon | sort の結果

libICE.so.6 => /usr/local/lib/libICE.so.6
libQtCore.so.4 => /usr/local/lib/qt4/libQtCore.so.4
libQtDBus.so.4 => /usr/local/lib/qt4/libQtDBus.so.4
libQtGui.so.4 => /usr/local/lib/qt4/libQtGui.so.4
libQtNetwork.so.4 => /usr/local/lib/qt4/libQtNetwork.so.4
libQtSvg.so.4 => /usr/local/lib/qt4/libQtSvg.so.4
libQtXml.so.4 => /usr/local/lib/qt4/libQtXml.so.4
libSM.so.6 => /usr/local/lib/libSM.so.6
libX11.so.6 => /usr/local/lib/libX11.so.6
libXau.so.6 => /usr/local/lib/libXau.so.6
libXcursor.so.1 => /usr/local/lib/libXcursor.so.1
libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6
libXext.so.6 => /usr/local/lib/libXext.so.6
libXfixes.so.3 => /usr/local/lib/libXfixes.so.3
libXft.so.2 => /usr/local/lib/libXft.so.2
libXi.so.6 => /usr/local/lib/libXi.so.6
libXpm.so.4 => /usr/local/lib/libXpm.so.4
libXrandr.so.2 => /usr/local/lib/libXrandr.so.2
libXrender.so.1 => /usr/local/lib/libXrender.so.1
libXtst.so.6 => /usr/local/lib/libXtst.so.6
libbz2.so.3 => /usr/lib/libbz2.so.3
libc.so.7 => /lib/libc.so.7
libexpat.so.6 => /usr/local/lib/libexpat.so.6
libfam.so.0 => /usr/local/lib/libfam.so.0
libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1
libfreetype.so.9 => /usr/local/lib/libfreetype.so.9
libgcc_s.so.1 => /lib/libgcc_s.so.1
libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0
libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0
libiconv.so.3 => /usr/local/lib/libiconv.so.3
libintl.so.8 => /usr/local/lib/libintl.so.8
libkdecore.so.7 => /usr/local/kde4/lib/libkdecore.so.7
libkdeui.so.7 => /usr/local/kde4/lib/libkdeui.so.7
libkio.so.7 => /usr/local/kde4/lib/libkio.so.7
libkparts.so.5 => /usr/local/kde4/lib/libkparts.so.5
libkutils.so.5 => /usr/local/kde4/lib/libkutils.so.5
libm.so.5 => /lib/libm.so.5
libpcre.so.0 => /usr/local/lib/libpcre.so.0
libphonon.so.4 => /usr/local/kde4/lib/libphonon.so.4
libpng.so.5 => /usr/local/lib/libpng.so.5
librpcsvc.so.4 => /usr/lib/librpcsvc.so.4
librt.so.1 => /usr/lib/librt.so.1
ibsolid.so.5 => /usr/local/kde4/lib/libsolid.so.5
libstdc++.so.6 => /usr/lib/libstdc++.so.6
libstreamanalyzer.so.0 => /usr/local/lib/libstreamanalyzer.so.0
libstreams.so.0 => /usr/local/lib/libstreams.so.0
libthr.so.3 => /lib/libthr.so.3
libxine.so => /usr/local/lib/libxine.so
libxml2.so.5 => /usr/local/lib/libxml2.so.5
libz.so.4 => /lib/libz.so.4

 
・ldd /usr/local/bin/mplayer | sort の結果

libGL.so.1 => /usr/local/lib/libGL.so.1
libICE.so.6 => /usr/local/lib/libICE.so.6
libSDL-1.2.so.11 => /usr/local/lib/libSDL-1.2.so.11
libSM.so.6 => /usr/local/lib/libSM.so.6
libX11.so.6 => /usr/local/lib/libX11.so.6
libXau.so.6 => /usr/local/lib/libXau.so.6
libXcomposite.so.1 => /usr/local/lib/libXcomposite.so.1
libXcursor.so.1 => /usr/local/lib/libXcursor.so.1
libXdamage.so.1 => /usr/local/lib/libXdamage.so.1
libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6
libXext.so.6 => /usr/local/lib/libXext.so.6
libXfixes.so.3 => /usr/local/lib/libXfixes.so.3
libXi.so.6 => /usr/local/lib/libXi.so.6
libXinerama.so.1 => /usr/local/lib/libXinerama.so.1
libXrandr.so.2 => /usr/local/lib/libXrandr.so.2
libXrender.so.1 => /usr/local/lib/libXrender.so.1
libXt.so.6 => /usr/local/lib/libXt.so.6
libXv.so.1 => /usr/local/lib/libXv.so.1
libXxf86dga.so.1 => /usr/local/lib/libXxf86dga.so.1
libXxf86vm.so.1 => /usr/local/lib/libXxf86vm.so.1
libaa.so.1 => /usr/local/lib/libaa.so.1
libartsc.so.0 => /usr/local/lib/libartsc.so.0
libasn1.so.9 => /usr/lib/libasn1.so.9
libatk-1.0.so.0 => /usr/local/lib/libatk-1.0.so.0
libaudio.so.2 => /usr/local/lib/libaudio.so.2
libc.so.7 => /lib/libc.so.7
libcairo.so.2 => /usr/local/lib/libcairo.so.2
libcam.so.4 => /lib/libcam.so.4
libcdda_interface.so.0 => /usr/local/lib/libcdda_interface.so.0
libcdda_paranoia.so.0 => /usr/local/lib/libcdda_paranoia.so.0
libcom_err.so.4 => /usr/lib/libcom_err.so.4
libcrypt.so.4 => /lib/libcrypt.so.4
libcrypto.so.5 => /lib/libcrypto.so.5
libdrm.so.2 => /usr/local/lib/libdrm.so.2
libdv.so.4 => /usr/local/lib/libdv.so.4
libexpat.so.6 => /usr/local/lib/libexpat.so.6
libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1
libfreetype.so.9 => /usr/local/lib/libfreetype.so.9
libfribidi.so.0 => /usr/local/lib/libfribidi.so.0
libgcc_s.so.1 => /lib/libgcc_s.so.1
libgdk-12.so.2 => /usr/local/lib/libgdk-12.so.2
libgdk-x11-2.0.so.0 => /usr/local/lib/libgdk-x11-2.0.so.0
libgdk_pixbuf-2.0.so.0 => /usr/local/lib/libgdk_pixbuf-2.0.so.0
libglib-12.so.3 => /usr/local/lib/libglib-12.so.3
libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0
libgmodule-12.so.3 => /usr/local/lib/libgmodule-12.so.3
libgmodule-2.0.so.0 => /usr/local/lib/libgmodule-2.0.so.0
libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0
libgpac.so.1 => /usr/local/lib/libgpac.so.1
libgssapi.so.9 => /usr/lib/libgssapi.so.9
libgthread-12.so.3 => /usr/local/lib/libgthread-12.so.3
libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0
libgtk-12.so.2 => /usr/local/lib/libgtk-12.so.2
libgtk-x11-2.0.so.0 => /usr/local/lib/libgtk-x11-2.0.so.0
libiconv.so.3 => /usr/local/lib/libiconv.so.3
libintl.so.8 => /usr/local/lib/libintl.so.8
libjack.so.0 => /usr/local/lib/libjack.so.0
libjpeg.so.9 => /usr/local/lib/libjpeg.so.9
libkrb5.so.9 => /usr/lib/libkrb5.so.9
liblber-2.4.so.3 => /usr/local/lib/liblber-2.4.so.3
libldap-2.4.so.3 => /usr/local/lib/libldap-2.4.so.3
liblirc_client.so.1 => /usr/local/lib/liblirc_client.so.1
libm.so.5 => /lib/libm.so.5
libmad.so.2 => /usr/local/lib/libmad.so.2
libmpcdec.so.5 => /usr/local/lib/libmpcdec.so.5
libncurses.so.7 => /lib/libncurses.so.7
libogg.so.5 => /usr/local/lib/libogg.so.5
libopenal.so.0 => /usr/local/lib/libopenal.so.0
libpango-1.0.so.0 => /usr/local/lib/libpango-1.0.so.0
libpangocairo-1.0.so.0 => /usr/local/lib/libpangocairo-1.0.so.0
libpangoft2-1.0.so.0 => /usr/local/lib/libpangoft2-1.0.so.0
libpcre.so.0 => /usr/local/lib/libpcre.so.0
libpixman-1.so.9 => /usr/local/lib/libpixman-1.so.9
libpng.so.5 => /usr/local/lib/libpng.so.5
libroken.so.9 => /usr/lib/libroken.so.9
librpcsvc.so.4 => /usr/lib/librpcsvc.so.4
libsbuf.so.4 => /lib/libsbuf.so.4
libsmbclient.so.0 => /usr/local/lib/libsmbclient.so.0
libspeex.so.1 => /usr/local/lib/libspeex.so.1
libssl.so.5 => /usr/lib/libssl.so.5
libstdc++.so.6 => /usr/lib/libstdc++.so.6
libtheora.so.0 => /usr/local/lib/libtheora.so.0
libthr.so.3 => /lib/libthr.so.3
libungif.so.5 => /usr/local/lib/libungif.so.5
libusbhid.so.3 => /usr/lib/libusbhid.so.3
libx264.so.50 => /usr/local/lib/libx264.so.50
libxmms.so.4 => /usr/local/lib/libxmms.so.4
libxvidcore.so.4 => /usr/local/lib/libxvidcore.so.4
libz.so.4 => /lib/libz.so.4

 
こうしてみると mplayer のほうが圧倒的に強い。と言うのが良く解るねぇ・・。doragonplayer はリンクしているライブラリが 51 個。mplayer は 90 個でした。

6月 172008
 

前回の続き です。DSS が 6.0.3 になったらストリーミングが tcp を利用するようになっていました。RTP over RTSP と言うみたいです。以下の URL にその詳細が載っています。

http://lists.apple.com/archives/Streaming-server-dev/2007/Feb/msg00030.html

サーバ側ではストリーミングデータを RTP の UDP ではなく、 TCP で流して再生するぜい。みたいな感じです。

僕は DSS は二台のサーバで起動しているのだけど、一台は BB ルータの DMZ 内に設置されたサーバ、つまり NAT 環境下で運用しているのがあるのだけど、上記の説明文を読むと、なるほど。とか思う。

ならば。と言うことでグローバルアドレスが付いているサーバで試したけど、やはり TCP で送信していた。NAT が有っても無くても UDP で送信するみたいです。ふむー。

と、言うことであればしょーがない。TCP でガマンするか。とか思ったのだけど、UDP で送信する方法が無いのかちょっと調べてみた。/usr/local/etc/streaming/ にある streamingserver.xml や、ストリーミング用の SDP ファイルを見たけど、UDP でストリーミングするオプションが無いのねぇ。と、言うことであきらめるか・・。

クライアントについてですが、MacOSX の QuickTime Player は TCP と UDP に対応しているのでサクっと動きます。

mplayer は -rtsp-stream-over-tcp と言うオプションを付加すれば見ることができるのは前回書いた通りです。

そして、Windows 版の QuickTime Player ですが、こいつは default では再生できないのであります。ちょっと調べたところ以下の設定を施せば見ることができるようになることを確認しました。

[編集]->[設定]->[QuickTime 設定] と来て [詳細]->[ストリーミング] の中の [トランスポート設定] を [カスタム] に。[自動] にしていたら再生してくれません・・X-(。

すると [トランスポートプロトコル] が UDP になっているのでそれを HTTP に。

でもってポートを 80 番ではなく、 554 に変更して保存します。

これで再生できるようになるかと思います。ふう。ちかれた・・。

6月 162008
 

ports-current を追いかけていたら DSS が 6.0.3 になっていた。

過去のこのブログでも「動画配信。」と「DSS-5.5.4 の使い方。」と、二回ほど取り上げてきた。今回はその三回目で最新版についてお届けして参りましょう。

まずは、実際にストリーミングをご覧ください。既に YS-11 のストリーミングは無いので新しいのを用意しました。どこの線路が解るかしら?コメントに路線名を書いていただいても結構です;-)。

-> 電車からの風景 -> rtsp://qtss.icmpv6.org/train.sdp

この動画は大体二ヶ月位は配信できるように頑張ってみます。

さてと。ここに用意したサンプルのストリーミングですが、現在、MacOSX の QuickTime7 でしか、素直に再生できません。 WindowsXP 上の QuickTime でも再生できません。

コンテンツ自体は デジタルカメラで撮ったものを QuickTime7.5 の Pro でストリーミング用に変換したものです。Video Codec は H264。 Audio Codec は AAC と言う、標準的なもので、それぞれ ffmpeg と faad で再生はできるはずです。

FreeBSD 上の mplayer で再生を試みましたが、とあるオプションを指定しなければ見ることができませんでした。mplayer をお使いの方はコマンドラインから以下を実行してみてください。

$ mplayer -fps 15 -rtsp-stream-over-tcp rtsp://qtss.icmpv6.org/train.sdp

 
“-fps” と言うオプションと -rtsp-stream-over-tcp と、言うオプションを付加しなければ再生できない。と、言うことが解りました。このオプションをつけると無事に再生できるようになります。

そもそも、RTP って UDP だったかなぁ?オプション的には TCP で流すぜぃ。って雰囲気っぽいんだけど・・。

DSS-5.4 ではこれらのオプションが無くとも再生できていたので DSS が 6.0.3 になってから色々と変わったのだろうとは思うのですが、まだ調査していません。暇をみつけて色々確認してみたいと思います。

ちなみに、コンテンツのほうは特に指定はありません。けど、DSS サーバの設定にもこれといったものは無いのです・・。余計な設定が無い(できない)というのはいかにも Apple らしいのですけど;-)。

最後にですが、DSS-6.0.3 の日本語メッセージを「ここ」に置いておきます。

最新版の DSS-6.0.3 ですが、もう少し調査が必要なことだけは確かです。

後、僕は Windows ユーザではないので Windows 上の QuickTime でどうして再生できないのかを深く追うことはしないと思います。あしからずご了承ください。

1月 202008
 

以前、Tiger に sendmail-8.14.1 をインストールしたのは書きました。MacOSX は IPv6 対応しているのに MTA である Postfix が IPv6 に対応していないため sendmail に置き換える。と言うのがことの発端であることには変わり有りません;-)。

さて、今回は Apple の最新 OS、しかも UNIX である Leopard にインストールしますが、Tiger に 8.14.1 をインストールしたのと大差ありませんので、割愛するところもあるかと思います。では、行ってみましょう;-)。

・ソースは http://www.sendmail.org/ から持ってくれば良いでしょう。
・/etc/mail は最新の FreeBSD から持ってくるか、以前 8.14.1 をインストールする時に使ったものを代用しても良いでしょう。
・site.config.m4 も以前利用していたもので問題無いでしょう。

それでは sendmail-8.14.2 を make しましょう。注意点としては、Leopaed は Darwin 9.1.0 な OS のバージョンですが、sendmail-8.14.2 は Darwin 8 にしか対応していません。 Build 時のオプションには以下のように指定してあげましょう。

./Build -c -f ~/site.config.m4 -E os=Darwin -E rel=8.9.1

 
インストール後は 8.14.2 をインストールし時と一緒で mail.local をコピーしたり mkdir や chown したりして環境を整えてあげます。これで大体おしまいです。

さて /etc/passwd にユーザを登録し /etc/group にグループを登録した後、Tiger の場合は NetInfo マネージャでユーザを登録していましたが、Leopard ではあの非常に不便な NetInfo マネージャが無くなり、dscl と言うコマンドで行う用になりました。が、それも大変なので「システム環境設定」のメニューから「ユーザの管理」で追加してください。

最後に起動スクリプトについてですが、Tiger の頃よりも Leopard は launchd がメインになりつつあります。なのでねsendmail も /etc/hostconfig ではなく、launchctl で登録して起動するようにしましょう。sendmail は二つのプロセスが起動するので二つの起動用設定ファイルが必要でする以下になります。

org.sendmail.sendmail.plist
org.sendmail.submit.plist

上記二つのファイルを /Library/LaunchDaemons/ にほうりこんだあと以下のコマンドを root 権限で実行します。

# launchctl load /Library/LaunchDaemons/org.sendmail.sendmail.plist
# launchctl start org.sendmail.sendmail
# launchctl load /Library/LaunchDaemons/org.sendmail.submit.plist
# launchctl start org.sendmail.submit

 
正常に起動したかは ps コマンドで確認できます。また、以下の launchctl で起動設定されたか確認するとこがてきまする

# launchctl list | grep mail
1      0       org.sendmail.submit
2      0       org.sendmail.sendmail

 
launchctl コマンドと設定ファイルである plist ファイルにはそれぞれ意味があるのでここには書きませんが頑張ってみてください。もしかすると launchctl load -w /Library/LaunchDaemons/org.sendmail.sendmail.plist などと 「-w」 オプションをつけたりとかするともっと幸せになれたりする場合もあります。

と、言うことで、Tiger から Leopred にバージョンアップしたことで、

・NetInfo マネージャは使わない。
・そろそろ /etc/hostconfig による /Library/StartupItems 使うのやめようよ・・。

の二つはキーワードになるかもしれないですねぇ;-)。