プログラマのつれづれなるままにプログラマのつれづれなるままに音宮志久が思ったことなどをネタにします。プログラムネタ・数学ネタがメインです。その他コメントを残すなんと動画をまとめてレイヤー状態で再生できるプレーヤーを作ってみました。レイヤー状態なのでいろいろとおもしろい効果を見ることができるかもしれません。ソフトウェアの部屋よりダウンロードができます。いいですが、今回は初めからバージョンは1.00として公開します。再生している曲は同じだが微妙に演出がちがう2つの動画を重ねて見比べるいわゆる「人物違い」の動画を並べて同時再生してみるだったりします。後者については美少女ゲームのOPなんかでは2ndOPで見ることができるタイプのものです。ゲーム名は限定しませんが。同時に再生できて並べて表示ができる動画プレーヤーはないことはないですが、今回のように再生している画像を「重ねて」表示する(半透明描画など)それぞれの動画オブジェクトを「完全に同時に」再生する開始時間に時差がある場合、その時差を含めて再生命令を行えることはできないのが痛いですね。この手のプログラムはだいたいWindowsMediaPlayerの機能を借りてきてプログラムに組み込んでいるだけなので同時処理がどうしても甘くなりがちなのと、指定した時間だけずらして再生を行うといった動作ができないですからね。それを解決するためにこういうものを作ってみたわけですよ。「できる限り同時に(もしくは指定した時間差をつけて)」再生を実行する、ことにかなり重点が置かれています。CPUコアの個数が再生しようとしてる動画の数を上回っているならほぼ確実に同時に再生が始まるように設計されています。映像がない音だけのものでも同時再生を行うことができるのが強みですね。描画と言った特殊な表示再生を得意としています。「レイヤー状態での描画」と「動画管理」を使っています。描画はDirect3D9経由、動画管理はDirectShow経由で行っています。実際は「レイヤーとして描画」ではなく、一度テクスチャを作った上で「ポリゴンとして描画」しているのでちょっと設定を増やせば3D的に描画ができたりします。意味はほぼなさそうなのでいまのところは放置です。そんな要望があるとも思えませんからね。あるとおもしろいですが。おかげで違う意味で苦労しました。Direct3D9+DirectShowで設計することは決めていたものの、初めはコードをサブセットで実装しようかと思いあまりにも面倒になってキャンセル。次に元々ADVシステム用(ウィンドウのリサイズなどが考慮されていなかったり、デバイスのリセットが固定されている)だったのをコードを追加して何とか対応しようとしてごにょごにょ。おまけに「完全に同時に再生する」と言うことからかなりの数のスレッドを使うことになって同期処理で一度訳がわからなくなりかかったり。大きくなるとそれなりに設計しないとどこがどうなるのか考えるのが面倒になりますね。機能要望があればこのblogのコメントや掲示板にでも今のところは動画再生以外は余り機能を積んでいません。一応「レイヤーとして描画」を意識しているのでその部分の設定(透過率および描画領域)はそれなりですが。readmeにも書いたとおり拡張を考えている部分がないわけではないですが、余り意味がなさそうなんですよね。動画再生プログラム自身は特殊なものであればそこまで不要というわけでもないでしょうから何かあることを期待しながら。ついでにバグフィックスも今回のテストのおかげでライブラリにあったバグを修正することができました。おかげで一部のプログラムを修正して公開することに。放置しないでたまにこういうのをやらないとだめになるものですね。成果が得られたかな、というところです。ついでですが、結局ダウンロードカウンタを外しました。無くてもいまのところ大丈夫でしょう、と。必要になったらphp版で組んでみようかと思います。コメントをキャンセルメールアドレスが公開されることはありません。志久プログラムネタや思いついたり世間で話題になっている数学ネタを解説したりしています。プログラマとしては今年度(つまり2020年3月)までの復帰となるか、完全復帰となるか、別の仕事に戻るかは運と実力次第。ちなみに教育系のプログラムでもOKです。アクセスカウンタアクセス数:スポンサーリンク。