カテゴリ:PC( 97 )
【音楽】 DirectShowでmp3を再生する(暫定版)
 過去、MCIなどを使って音声の再生プログラムを作っていたが、64bitOSだと使えないということがわかった。上手くやれば使えるのかもしれないが、どうせこのまま廃れていく技術なので、DirectSoundに手を出してみることにした。MicrosoftはXACTに誘導したいようだが、こちらはライセンスの問題もあってか、はなからmp3の再生ができない。

 とはいえ、普通にDirectSoundを使うだけでは、mp3の再生ができない。そこでCodeZineのsyu5さんの記事や、カクタスソフトウェアさんの記事、グーグル先生にお世話になって、ソースファイルからmp3のデコーダにピンをつないで、アナログ出力することまではなんとか漕ぎ着くことができた。

 難点は再生を続けていくうちにハンドルリークが起きてしまうこと。ピンを作って解放した時に、メモリはちゃんと解放されるのだが、いくつかのハンドルが生き残ってしまう。このため1,000ファイル程度再生するとアプリケーションが落ちてしまった。この原因は未だ解明できておらず、悩ましい今日このごろ。

 ピンの概念は、ここや、ここも参考になると思う。
[PR]
by hidemite | 2014-12-01 22:56 | PC
【録画PC】 急に録画できなくなった
 録画PCのSSD問題が解決して、24時間稼働できるようになり順調の兆しを見せていたが、1週間ぶりにPS3録画したものを見ようとしたら、一切見られない。PC上で確認したら、どうやらスクランブルが解除できていなかったようだ。動作を確認した時に、映像が見られることを確認していたはずなのに、なぜこうなった。TVTestでテレビが見られるかを確認したら、スマートカードリーダがなんたらというエラーメッセージが出てきた。

 で、エラーコードの「SCARD_W_UNSUPPORTED_CARD」で検索したら、日本のサイトにはヒットしなかったものの、マイクロソフトの変な日本語訳に行き着いた。どうやら修正プログラムが出ているらしい。ただ、変な日本語訳だし、アドレスのjaを取っても英語にならないし、おまけに何のタイミングのいたずらかDMMの宣伝サイトのウインドウが開いて、本当にマイクロソフトのページなのか?と思わせる流れだったので「修正プログラムをダウンロードできます」というボタンから「メールアドレスを入れて下さい」という流れにはちょっと躊躇してしまいました。

 まあ、メール一つで問題が解決するなら安いものだと思い、メールアドレスを入力。程なくして修正パッチのダウンロード先がメールに記載されて送られ、ダウンロードしてパッチを当てて再起動したら、無事録画できるようになりました。私のOSはWHS2011で対象に入っていませんでしたが、Win7の派生なので問題なく使えています。

 現在はRecTaskCentreを使って録画していますが、改めてCPU使用率を確認したところ、8TS録画で70~90%でした。うち2ch分の映像閲覧まではなんとか可能で、3ch見ようとするとさすがに映像がカクつきます。同時閲覧のみなら5chくらいは可能ですね。おそらく12TSまでは無理でしょうけど10TSまではいけるんじゃないでしょうか。低消費電力、低価格のAthlon5350による録画PCの構築は、4K放送までは現役で稼働してくれそうな気がしています。その前に熱でHDDが壊れるかもしれませんが・・・
[PR]
by hidemite | 2014-07-19 16:39 | PC
【録画】 Athlon5350とPT2で録画サーバを再構築
 Athlon5350の調子がすこぶるいいので、PT2の録画サーバも更新することにした。更新を期に電源も12V9Aの基板をラジオガアデンで購入し、PicoPSUで運用することにして、電源周りの空間をスッキリさせた。

 標準のAM1マザーだとSATAが2ポートしかないので、必然的に必要なマザーボードはASRockのAM1HかAM1Bシリーズになる。AC運用するならAM1Hを買えば安いのだが、PicoPSUが余っていたということと、19VのACアダプタなり電源を新たに購入しなければいけないということで、結局AM1Bシリーズに落ち着いた。元々は手持ちのACアダプタで運用しようと思っていたが、HDDを3台もつなげているので5Aだと無理かなと思い出力に余裕をもたせた。

 マザーを更新しただけだが、結局E-350で使っていた時のSSDは起動せず、OSを再インストールすることになった。移植にはそれほど時間もかからず、録画も快調・・・と思ったら2日位でハングアップするようになってしまった。最初は熱処理が問題なのかなと思っていたのだが、いくらファンの数を増やしても、強力にしても変わりはないし、よくよくCPUの温度をみても、熱暴走する温度まで上がっていたわけではなかった。

 色々調べた結果、SSDに使っていたClucialのC300とIntelのチップセットの組み合わせで、Win7でプチフリーズするという現象を確認。LPM問題と言われているようで、最後の頼みの綱としてここのページを参考にしてレジストリを書き換え、ファームウェアも007にアップデートしたら、途端に安定するようになった。なんだ、こんな所に原因があったのか・・・E-350では何もしなくても全く大丈夫だったのに。

 原因の追求がなかなかできず、途中でやっぱりE-350に戻そうかなとも思っていたが、これにて一件落着。E-350だと8TSの同時録画は難しかったが、Athlon5350だと8TS録画して録画したファイルを見てもカクつかない。だいぶ進歩したものだと嬉しくなってしまった。これで録画ライフはもっと快適になった。あとは見る時間がないだけだけど。
[PR]
by hidemite | 2014-07-01 14:48 | PC
【組込】 Kabini(Athlon5350)でPS2-PCを作る
b0000480_15115967.jpg


 AMDの新しい省電力プラットフォームAM1シリーズが発売され、長らくE-350を使っていた私としては、非常に興味をそそられた。普段はネットを見るだけに使っているリビングPCは、なるべく省電力のもので組んで、小さい筐体でテレビの横に置きたい。そう思って作った初代のPCがAtomだった。しかし、発熱や動作速度が遅い。そしてその次に手を出したのがION機。しかし、グラフィックは改善されたものの、如何せんCPUパワーの不足が目立っていた。

 そんななかでE-350が出た時は衝撃的だった。ACアダプタでの動作が現実的になり、ファンレスとはいかないまでも、かなりファンの動作音を抑えることができたので、SSDを使えば動作音はほぼないに等しい環境を作れるようになった。ただ、最近のFlashバリバリのページを見ようとすると、動作がもっさりすることが気になるようになった。

 そんななか出てきたAM1シリーズ。性能が高まって更に省電力、おまけに安いということもあって、まさに自分が求めたものに叶いそうなモノ。CPU(Athlon5350)とマザー(AM1I)合わせて1万円ちょっとなので試しに買ってみた。やはり、E-350より格段に動きがスムーズになっている。ニコニコ動画でコメントがたくさんあってもカクつかないし、webページの読み込み速度も早くなった。これならあと数年は使えるリビングPCになるだろう。

 あとはどの筐体に組み込むか。ちょうど手元に使わないPS2があって、新型も持っていたことから、旧型のPS2に入らないか挑戦してみることにした。結論としては、なんとか入った。PS2は、DVDやコントローラーを差す上部と、メイン基板が入っている下部で奥行きが異なり、当初は下部に入れようと思っていたけど、尺が足りない。一方で上部なら図ったかのようにピッタリ。本当はDVDの出し入れも本物同様にやりたかったけど、ITXマザーではそれが叶わないので、諦めることに。余った下部にドライブ類を格納することにした。

 写真だと見づらいけど、下部にスロットイン式のDVDドライブが入っている。上部のDVD挿入部とメモリーカード差込部は、0.5mmの黒い塩ビシートで塞いでその上から接着剤でダイレクトに接着した。マザーが逆さまに取りつけてあるので、上下逆になっている。バックパネルは黒い塩ビシートで自作。

b0000480_1452543.jpg


 内部全景。個人的にACアダプタ外付けが嫌なので、なんとか内蔵してみた。電源ボタンとLEDはPS2のものをそのまま流用。ただ、電源ボタンとCDのイジェクトボタンで共用されている線があって、そのまま繋ぐと機能しないのでイジェクトボタンのみ暫定的にお飾りになっている。左が上部、真ん中が下部、右が中間部になっている。この中間の部分も筐体の一部になっているので外せないし、しっかり残さないと強度が保てない。

b0000480_1512274.jpg


 各部拡大、上部。マザーはかなりスッキリしている。Athlon 5350の上部のファンは取り外して、後述するケース唯一の12cmファンに活躍してもらうことに。最終的にケースを止めるネジ部分の左上と右下で固定できるようにしている。真ん中のネジ止めは邪魔になるのでカット。PS2のヒートシンクに接触する鉄板は剥ぎ取って、筐体に接着してあるものだけ残した。右下は電源ボタンとLEDの変換部分と、PicoPSUと、DCコンバータ。PicoPSUは、直挿しだと高さが超えてしまうので、電源ケーブルを付け直している。

b0000480_15121216.jpg


 中間部。ACアダプタは16V5Aのノート用の電源。ACインレットはPS2のものをそのまま流用。テープで止めているけど、このあとちゃんとマウンタをアルミ板で作っている。PicoPSUには12Vでわたさないといけないので、先のDCコンバータをかませている。秋月電子で購入した12V8A対応のものを使用。ファンは12cmファンがギリギリ入る大きさだったので、回転数による騒音を減らすためにこの大きさを採用。ただ、そのままだとマザーの音声出力の部分に鑑賞するので、マザー側の一角だけ削っている。

b0000480_15121082.jpg


 下部。DVDドライブと、その下にSSDが隠れている。PS2のUSB接続部と通気孔の部分を広げてDVDの出口を作り、マウンタはアルミ板で自作。また、Slimline SATAの変換ケーブルをそのまま使うと電源のコネクタが大きいので、電源ファンと同じ3ピンの端子に付け替えた。

b0000480_1512733.jpg


 12V5Aということは最大60Wしかないので、動作は大丈夫かなぁと思っていたのだが、ニコニコ動画などのweb閲覧を使っている分には動作に支障がない。まだ最大負荷のテストなどはしていないので、今後動作チェックをしたいところ。ただケースは多少熱を持つので、もう少し排熱の構造を考えないといけないかもしれない。ま、とりあえず動くのでいいや。PT2の録画PCもこれでいけるなあと思いつつ、標準のマザーだとSATAが2つしかないので、いろいろこだわるとお金がかかってしまい本末転倒になるので、悩みどころ。と思ったら、今はAM1B-ITXも5千円以下で買えるのね。

 今回の加工で一番役に立ったのが、ホットナイフ。熱の力でプラスチックを溶かしながら切断していくもので、説明書には板は1ミリまで切断可能と書いてあるが、ゆっくりと時間をかければ3ミリくらいの板まではなんとかなる。いままでは力技でなんとかしていたが、今回はこのホットナイフのおかげで加工がだいぶ楽になった。
[PR]
by hidemite | 2014-05-26 16:11 | PC
【シャットダウン】 一時的にWindows Updateを止める
 会社のパソコンで、作業中にWindows Updateが行われ「あと○分で勝手に再起動しちゃうよー」となんとも悲しいメッセージが表示されることがあるが、「今はやめてくれ」と思うこともしばしば。インストールの期限が決まっているので、それまでにインストールしておけば、いきなりの警告に合わずに済むのだが、うっかりして期限切れになり、強制的なインストールになることが殆ど。

 で、なんとかこれを一時的に回避できないか調べていたところ、コマンドプロンプトから以下のコマンドを入力すると、回避できることがわかった。ただ、この回避はAdministratorの権限(Power Userでもいける?)が必要で、会社のPCなどは、そのパスワードを知っていないといけないのだけど。

 スタートボタンを押して、ファイル名を指定して実行、または、プログラムとファイルの検索、という項目で「cmd」と入力すると、黒い画面が表示され、最終行が以下のようになるので、

C:\なんとかかんとか> net stop wuauserv

と赤字の部分を入れて、Enterキーを押すと、

Windows Updateサービスを停止中です...
Windows Updateサービスは正常に停止されました。


と表示され、停止できます。
復活させたいときは

C:\なんとかかんとか> net start wuauserv

とすればOK。不具合は出ないと思いますが、皆さん自己責任でお願いします。やはり手作業で影響を与えているので、時間を見てできるだけ再起動しておいたほうがいいのかもしれません。まあ、そもそも再開すれば強制的に再起動に向かうのですが。
[PR]
by hidemite | 2013-06-12 14:40 | PC
【DirectShow】 64ビットOSでの再生終了検知
 DirectShowを使って再生をすると、曲が終わった時にウインドウメッセージを取得して、自分でグラフをStopさせないといけない。で、開発環境を変更したら、IMediaEvent.GetEvent / FreeEventParamsで、EC_COMPLETEが取得できなくなってしまった。小一時間悩んだ末、OSが32bitから64bitに変更したことが原因と行き着いた。(開発はVB.NET)

 どうやらGetEvent関連のパラメータは、64bitOSだと、8バイトの変数が必要らしい。なので、

Function GetEvent( _
 ByRef lEventCode As EventCode, _
 ByRef lParam1 As Integer, _
 ByRef lParam2 As Integer, _
 ByVal msTimeout As Integer) As Integer

 だと、EventCodeの返り値が正しく取得できない。で、lParam1とlParam2の部分がLongになっていれば、なんとか動作しそう、という所まで突き詰めた。しかし、これを変えてしまうと、32bitOSで正しく動作しないかもしれない。ということで、最終的にはIntPtrを使うことで落ち着いた。

 よく、32bitOSと64bitOSの違いを検知するために、System.Intptrが何バイト使用するかを見ているが、IntPtrは32ビット=4バイト、64ビット=8バイトと、システムに合わせて可変する。このため、OSの環境に依存する関数を、変数の定義を変えることなく使用できるのだ。ということで、GetEventの定義を

Function GetEvent( _
 ByRef lEventCode As EventCode, _
 ByRef lParam1 As IntPtr, _
 ByRef lParam2 As IntPtr, _
 ByVal msTimeout As Integer) As Integer

と変更したら、正しくEC_COMPLETEが取得できた。めでたしめでたし。FreeEventParamsは、Integerのままでも動いたが、一応整合性をとるために、IntPtrにした。

 こういうことがあるから、32bitのOSで動いて、64bitで動かない、ということになることがあるんだなぁ。なんて得しない仕組みなんだ。
[PR]
by hidemite | 2013-06-09 00:33 | PC
【圧縮】 Vector、パッカーの使用を禁止へ
 ソフト配信大手のVectorが、開発者に対して「ソフトの作成時におけるパッカー(Packer)の使用中止に関するお願い」というメールを送った。その理由としては大きく2つ。

1)パッカーは、プログラムを解析されにくくする目的で、
 ウィルス等のマルウェアに対して使用されることが多くある。
 そのためセキュリティソフトが「ウイルスだ!」という可能性がある。

2)パッカーで圧縮可能なファイルサイズは微々たるもの。メリットがない。

 そもそもパッカーとは何ぞや?とプログラミングをやっていても聞きなれない言葉に、私の脳はフル回転。LZHの配信も中止になった上に、ZIPの配信もダメになるのか?どうしたらいいんだ?と考えてしまった。

 で、google先生に教えてもらったら、「パッカーは、実行できる状態で圧縮や暗号化を行うツール」つまり、実行ファイルの中身が圧縮・または暗号化されているモノ、ということがわかった。ウイルスをわかりにくくするための亜種を作るのに最適な手段として活用されているらしい。

 ウイルスを潜り込ませる手口がどんどん巧妙になっていて、イタチゴッコの様相を見せている。ソフト開発者も色々と工夫している一方、制限がどんどん多くなって、キビシイなぁ。
[PR]
by hidemite | 2013-05-29 08:21 | PC
【音楽】 Internet Radio Player 2.21
 インターネットラジオ局と、Radiko対応ラジオ局が聴取できるソフト、Internet Radio Playerがバージョンアップしました。Radiko配信局の聴取は、一旦プログラムを起動した後に再生ボタンを押して頂く必要があります。また、再生のタイミングによってエラーが出る(依然原因究明中)ことがありますが、その時は、曲名部分で右クリックしてプルダウンから放送局を選びなおしてください。(Radikoの再生には、最新のFlashのインストールが必要です。また、本ソフトのインストールには管理者権限が必要になります。)

Internet Radio Player 2.21のダウンロード(MediaFire)

 一部放送局のリンク切れの修正、および地域FM(サイマルラジオ)局をプリセットに追加しました。4月26日時点でサイマルラジオのホームページに掲載されているすべての放送局を登録しています。プログラムを起動した後に、メニュー画面から「設定」を選び、「地域FM(サイマルラジオ)局を追加する」ボタンを押してください。
b0000480_15322235.jpg

 追加した放送局は「Channel ReMAP」タブで、選曲リストに登録出来ます。Before欄から、割り当てたいチャンネル番号を選択し、After欄から、新しく登録したい放送局を選択、その右下の「変更」ボタンを押すと、新しく割り当てられ、Result欄に[]付きで変更部分が表示されます。右下の「OK」ボタンを押すと、変更が適用されます。(Cancelボタンを押すと、変更は適用されません。)
b0000480_15331124.jpg

 サイマルラジオ実施局は、24時間放送を行なっている局と、権利の関係などで放送時間が限定されている局があります。詳しくはサイマルラジオのページでご確認ください。

過去・使い方
[PR]
by hidemite | 2013-04-26 15:44 | PC
【音楽】 Internet Radio Player 2.11
 インターネットラジオ局と、Radiko対応ラジオ局が聴取できるソフト、Internet Radio Playerがバージョンアップしました。4月1日からwebが新しくなったことに伴うものです。(Radikoの再生には、最新のFlashのインストールが必要です。また、本ソフトのインストールには管理者権限が必要になります。)

 Radiko配信局の聴取は、一旦プログラムを起動した後に再生ボタンを押して頂く必要があります。また、再生のタイミングによってエラーが出る(依然原因究明中)ことがありますが、その時は、曲名部分で右クリックしてプルダウンから放送局を選びなおしてください。

 設定画面で「ホットキー有効」「Check It!を即アマゾンで検索」の両方にチェックを入れると、楽曲(NowOnAir情報)が表示される放送局では、[Ctrl]+[F12]キーで再生されている曲をAmazon.co.jpで検索します。これはウインドウが最小化されている場合でも有効です。


ダウンロードはこちら

過去・使い方
[PR]
by hidemite | 2013-04-01 10:54 | PC
【俯瞰】 googleマップが進化
 googleマップが進化して、一部の地域で斜め45度から見ることができるようになった。思いのほか立体感があって、ビックリ。現在は、東京・川崎・千葉・仙台で見られるそう。東京タワー、ディズニーランドは勿論のこと、羽田空港や、衛星写真では建設中になっているスカイツリーも立体的に見ることができる。
b0000480_17454249.jpg

 で、どこまで対応しているんだろう、と気になったので、首都圏の限界点を捜索。東京を中心に、ほぼ同心円状に広がっていると仮定して、鉄道の各路線ごとに探ってみた。()内は、ギリギリ見られるか見られないかの当落線上。

東海道線:横浜
横浜線:菊名(新横浜)
田園都市線:溝の口
小田急線:よみうりランド前
京王線:調布
中央線:武蔵境
西武新宿線:田無
西武池袋線:東久留米
東上線・副都心線:赤塚(成増)
三田線:志村坂上
埼京・東北線:十条・東十条(赤羽)
南北線:王子神谷
舎人線:江北
伊勢崎線:梅島(西新井)
TX:青井/流山おおたかの森~守谷
千代田線:北綾瀬
常磐線:取手
成田線:新木
北総線:小室
京成線:京成臼井
総武線:物井
千葉モノレール:千城台
外房線:鎌取
京成千原線:ちはら台
内房線:五井

現時点でも意外に広い。ホント、googleはスゴイね。
[PR]
by hidemite | 2013-03-21 17:47 | PC