ogv形式でのみ動的な再生速度変更ができる機能を追加しました
よろしければ関数を追加したこちらのバージョンをダウンロードしてください m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用
http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
以下の関数を追加しました
// 動画ファイルの再生速度を設定する( 1.0 = 等倍速 2.0 = 2倍速 )
int SetPlaySpeedRateMovieToGraph( int GraphHandle, double SpeedRate ) ;
注釈の通り、第二引数に再生速度の倍数を指定します
動画の再生速度を再生中に上下キーで操作できるようにしたサンプルプログラムを作成してみましたので、
よろしければご覧ください
#include "DxLib.h"
#define MAX_SPEED 400
#define MIN_SPEED 50
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int MovieHandle ;
int PlaySpeedRate ;
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
// 画面サイズを設定
SetGraphMode( 720, 480,32 ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
// 動画の読み込み
MovieHandle = LoadGraph( "Movie.ogv" ) ;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
// 再生速度倍率を初期化
PlaySpeedRate = 100 ;
// 動画の再生開始
PlayMovieToGraph( MovieHandle, DX_PLAYTYPE_LOOP ) ;
// メインループ(何かキーが押されたらループを抜ける)
while( ProcessMessage() == 0 )
{
// 上下キーで再生速度倍率を増減
if( CheckHitKey( KEY_INPUT_UP ) == 1 && PlaySpeedRate < MAX_SPEED )
{
PlaySpeedRate ++ ;
SetPlaySpeedRateMovieToGraph( MovieHandle, PlaySpeedRate * 0.01 ) ;
}
if( CheckHitKey( KEY_INPUT_DOWN ) == 1 && PlaySpeedRate > MIN_SPEED )
{
PlaySpeedRate -- ;
SetPlaySpeedRateMovieToGraph( MovieHandle, PlaySpeedRate * 0.01 ) ;
}
// 画面のクリア
ClearDrawScreen() ;
// 画像の描画
DrawGraph( 0, 0, MovieHandle, FALSE ) ;
// 再生速度倍率を描画
DrawFormatString( 0, 0, GetColor( 255,255,255 ), "PlaySpeedRate : %.2f", ( double )( PlaySpeedRate * 0.01 ) ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
因みに、最初に申し上げました通り SetPlaySpeedRateMovieToGraph は ogv形式以外では
再生中の再生速度変更が非常に重い場合や、そもそも再生速度の変更ができない場合が殆どなので、
こちらの関数を使用して再生中に再生速度の変更を行う際は必ず ogv形式の
動画ファイルを使用するようにしてください