広告を除去してそろそろ手じまいかかな…

さすがにこのサイト(+blog)を維持するのは無理

とにかく今現在の仕事が忙しいので何をするにも時間がない状態でした。サーバの維持でも使用料の値上がりがかなり厳しく、元々「広告費で稼いでサーバを回しながら有名になっていく」の予定だったのですが、結局この十数年でこのサイトによって稼げたのは数万円程度ということで、そちらの方でもかなりの赤字を出している状態に陥っています。あとはインボイスの影響ですね。あれのせいで広告収入でもインボイス、といわれる羽目になって広告を出すことと管理の手間が全く合わなくなってしまったため解除しています。広告を解除したことで記事の内容だけになってしまいとても寂しいサイトになってしまいましたね。

 

いろいろと体制を縮小していきます

このサイトも近いうちに閉じてしまおうかと考えています。今は使用料を支払って間もないですので維持はしますが、次のタイミングで更新を停止してしまう予定です。WindowsModePatchについては消えると個人的には惜しいものですので誰か引き継ぎ手がいればソースコードを渡して管理してもらいたいな~とは思います。が、過去のゲームをやると言ってもそこまで古いゲームでもなければゲームのウィンドウ化の問題点や解像度変換の問題はないでしょうし、古すぎるゲームなら需要はあるのかもしれませんが、ちょっとそれを維持できるだけの自分のリソースがないので…。

また、Stable DiffusionなどAIを使う方法などいろいろとやっていることはあり、記事にできなくはないのですが、やはり毎日の生活が維持できなくなるのでもう無理という結論です。IT系の仕事でしっかりと稼げればよかったのですが、その方面からは全く仕事の案件などはなかったので…。難しいものですね。

 

ということで、今回はここまでにしておきましょう。

PHPのバージョンアップなどで機能更新

どうも気がつかない間にサーバの一部プロセスがダウンしていたようで、blogにアクセスできなかったりした模様で…。

 

メンテナンスにより機能向上を図る

サボっていたメンテナンスを行いました。具体的には

  • PHP7.4→PHP8.2への入れ替え
  • WordPressの更新
  • その他サーバプログラムの入れ替え

となっています。PHP8.2への入れ替えがメインですね。

 

PHPのバージョンアップをするときにはWordPressのプラグインの動きを確認しよう

PHPのバージョンアップを行うとセキュリティが向上したり動作速度が向上するのはよく言われているのですが、バージョンアップによりWordPressが動かなくなる、という問題もよくある現象です。この場合は動かないプラグインを一時的に無効化すること(管理画面が開くなら無効化処理を行う。管理画面すら開かないのであればpluginsディレクトリにある対象のプラグインのディレクトリ名を変更してしまうのが早い)で対応して、動かないプラグインを削除するか同じ機能を持ったプラグインを入れなおす作業が必要です。

問題なのはどのプラグインが動かないかを調べること、ですね。管理画面すら開かなくなった場合がかなり厳しいですが、その場合はWebサーバ側のログからエラーが出ているプラグインを調べたり、ターミナル上で直接phpを動かしてみることでFatal Errorが出ているプラグインの名前を見てみたり、phpのエラー表示設定を一時的にWebブラウザ側に見えるようにしてエラーを確認する、などが必要になります。この作業も慣れないとと難しいかもしれません。

 

次は生成系AIを使ってみるか…

メンテナンスも終わったので今の自分の流行についてです。生成系AIがトレンドになっていますので自分も使ってみようということでOpenAIのアカウントを取得してみたり、画像生成のためにStableDiffusionWebUI(Automatic1111)を入れていくつかのモデルを入れてみたり、OpenAIのAPIを使うと有料なのでどうにか自分のPCでできないか、と思いtext-generation-webuiを入れてみたりしています。

ちなみにStableDiffusion WebUIもText Generation WebUIもある程度の速度で動かすにはメモリがたくさんあるGPUが必要ですので注意してください。これらのAIを動かすためにPCのパーツの一部入れ替えをしています。具体的には

  • PCのGPUをGeForce RTX 3060(12GB)に入れ替え
  • PCのメインメモリを48GBに増強

としています。AIを動かすときにはある程度強力かつメモリがあるGPUがあればCPUの速度はそれなりでも動かせますが、この2点だけはしっかりと増強しておかないとまともに動かせない可能性が大きいです。こうしておけば上の2つであれば動かせると思います。使用感などに関しては時間があれば書いていきたいと思います。

 

スマホのスペックによる動画再生できる形式の差を調べてみる Xperia 5 III & moto g52j 5G編

あることを考えていてDSDVを使って電話番号を2つ持ちにしようかと思い、キャリア側で購入したXperia 5 IIIを補助スマホに、DSDVができるちょっと安めのスマホであるmoto g52j 5Gをメインスマホにしようかと思いデータを移行しているときに気がついた現象。「あれ?moto g52j 5G側での動画再生でハードウェアを利用できないものがいくつかあるような気が・・・」というところから始まっています。

 

簡単に比較してみよう

というわけでちょっと比較してみました。ハードウェアを利用できるかどうかはMX Playerを使ってHWで再生できるかどうかで調べています。

  Xperia 5 III moto g52j 5G
XviD 640×480 × ×
DivX 1280×720
H.264 1920×1080
H.264 10bit 1920×1080 × ×
H.264 3840×2160 ×
H.265 1920×1080 ×
H.265 3840×2160 ×

 

つまり、こういうことがいえるわけです。

moto g52j 5Gは解像度が4Kレベルの動画やH.265などの上位のコーデックを用いるとハードウェアを利用して動画再生ができなくなるという現象が起こる。Xperia 5 IIIはある程度高解像度の動画や上位のコーデックでもハードウェアを使って再生できる。

 

普通に使っている限りは問題は出ないが・・・

Youtubeなどの動画も普通に見ている限りはそんな高解像度ではないですので何も問題はないのですが、例えばVRなどは高解像度ですのでスマホで再生するとなると再生支援が追いつかなくなりまともに見ることができなくなる、という現象が発生します。今回別件でVR動画にもチャレンジしていたのですが、VR動画を再生すると妙にかくかくして再生がおかしいな、と思い調べてみた結果がこれでした。

 

VR動画をスマホで見る場合はスペックに注意

あまり表には出てこないスペックだとは思いますがこういう情報も必要になることがあるようですね。しっかりとしたSoCが積まれている端末で再生してください。といってもその辺がわからない人も多いと思いますのでその場合は「その手の情報が書いてある端末」か「単純に高性能がうたわれている端末」を購入するのが無難という結論に至りそうです。はい。

 

DirectShow Extend Filter Library 0.16公開

ある意味大変な間違いをしていたためにlibvpxのコンパイルが通らなかったことがわかったので改めてビルドし直しました…。

 

x86用のプロジェクトを作製した後のmake cleanを忘れるとこうなるのか…

というわけで真相がこれ。x86用の環境とx86-64用の環境はほぼ同一で作るようにしていたのでconfigureをx86用で通してmakeしたものをコピーしてlibvpxのライブラリを作成してそのままconfigureでx86-64用の設定をしてmakeをして…と思っていたのですが、どうもこれがまずかったようです。

x86用の設定が残ったままとなり、x86-64用の各種定義やらアセンブラのコンパイル環境がうまく設定されなかった結果、x86-64用のライブラリの作成に失敗していた、が真相だったようです。ちなみにmakeでその手のファイルも作り直されるのを失念していたのでただの間抜けですね。vcprojをコピーしただけではその辺の設定が正しく通らないので注意しましょう。

 

x86用のプロジェクトとx86-64用のプロジェクトを「ディレクトリ単位で」分けることで解決

ちょっとデータ容量がもったいないですが、ビルドできないよりましかな、という結論です。そのデータ量を惜しむならばハードリンクでもすればいいのですが、さすがにそちらの方が作業の手間なのでこういう結論になりました。こんなことで悩む人は多くないと思いますが、気をつけるべき点ですね。

 

Vectorのライブラリも更新

こっちはこっちで一体何年ぶりなのでしょうかね。毎月通知だけは受け取っていたのですが。しばらくたったら正式公開されると思いますのでそちらからダウンロードしたい人はちょっと待っていてくださいね。

 

DirectShow Extend Filter Library 0.15公開(ただしx86版のみ)

ただし書きが悲しいですよね…。x86版の方は形になりましたのでここまででいったん公開です。

 

放置しすぎたためにGUIDが違うわライブラリがビルドできないわ…

発端は「使ったときにWMVやWebMがうまく再生できない」というメールでした。少しだけ時間の余裕ができたので調べてみようと思いビルド環境を組み上げ…ることがなんと至難なことか。

まあ、わかりやすく言うとさすがに10年ほど前にビルドしたものなので環境が違いすぎること。特に

  • VisualStudioのバージョンを2010から2017への変更
  • WebM系のライブラリをできる限り最新環境へとアップデート

の2点を行ったのですが、特に後者がかなり難しかったというのが大変だった理由で、今回x64版がビルドできなかった理由だったりします。

 

webmdshow(WebMをDirectShow経由で再生するライブラリ)が2015年以降ほぼ更新されていない!

そう、今回の最大の問題点がこれだったけです。つまりVisualStudio2017(やそれよりも新しいVisualStudio)を前提にしていないコードのままになっていた、というのが問題だったわけです。特に

  • DirectShowの基本ライブラリ(BaseClasses)と同じ名前を使っているために名前空間の分離が必要(これは前から)
  • オーディオの読み取り部分でVorbisを読み込むパターンしかなく、Opusを読み込むパターンが用意されていない
  • 付属のlibvpxが古いため最新のlibvpxをビルドする必要がある

の3点が問題になりました。1点目は根性で相変わらずカバーです。2点目については今回Opusに関しては元から変換フィルタだけは用意されていたのでwebmdshow側でOpusが来たときにフォーマットを認識するコードを追加することでこれはなんとか回避しました。ところが3点目についてlibvpxはx86版はビルドできたのですが、x64版はアセンブラがコンパイルできないためにライブラリの生成に失敗する、という現象でストップしてしまいました。ソリューションの作成はLinux側で作ることで回避できるのですが、アセンブラがコンパイルできない問題はさすがに予定外です。何が悪いのか今現在はさっぱりわからないのでこちらは保留状態になっています。

 

Visual Studio 2017に対応していないライブラリ群は除外することに

一部のライブラリが古すぎてコンパイラのコード生成に失敗したりライブラリのリンクに失敗するという問題がありましたので0.15の段階でサポートを外すことにしました。もし使いたい場合は一応0.14版も残しておきますのでそちらを利用してみてください。何のサポートがなくなったはソフトウェアのページで確認してみてください。