ONScripter(4)

avi ファイル再生。

 いろいろ考えてみましたが、Raspberry Pi OS の avifile で動画再生は難しいと思いました。そこで、Xkanon でも使っている mplayer を利用して再生を試みることにしました。

 修正・追加が必要になりますがちょっと腰を据えてやってみます。mplayer はオプションで wid を指定して、指定した ID のウィンドウに描画します。そこで、SDL でウィンドウ ID を取得する方法を探したら、https://wtetsu.hatenablog.com/entry/20080125/1201098760
が見つかりました。

#include <SDL_syswm.h>

SDL_SysWMinfo wmInfo;
SDL_GetWMInfo(&wmInfo);
HWND hwnd = wmInfo.window;

 システム情報の中に Windows のハンドルがあります。
SDL_SysWMinfo は、
http://sdl.beuc.net/sdl.wiki/SDL_SysWMInfo
に説明があり、メンバの window は X11 では Window (つまり、X11 の WindowID)であることがわかります。

 USE_AVIFILE の定義の代わりに USE_MPLAYER を定義することにして、mplayer 用にソースを修正・追加します。ただし、アーカイブ内の動画再生には未対応となります。

 手持ちのゲームの中で avi を使っているのはねこねこソフトの朱だけですが、これで朱も普通にプレイできるようになりました。
 ただ、system() 関数で mplayer を起動しているせいか、マウスやキーボードのイベントが mplayer に渡らないようで、動画のスキップはできませんでした。fork して exec とかで動かせばいいんだとは思いますが、そこまでするつもりはありません。

ONScripter

Posted by sirius