【HSP3】GOM PlayerをHSPで操作してみるサンプル

GOM PlayerをHSPで操作してみるサンプルです。当然ながらGomPlayerが必要です。インストールしてあるのに動かない場合はGomX.dllをregsvr32する必要あるかも?

GOM PlayerをHSPで操作してみるサンプルです。当然ながらGomPlayerが必要です。インストールしてあるのに動かない場合はGomX.dllをregsvr32する必要あるかも?

	tt = "GOM PlayerをHSPで操作してみるサンプル"
	// GomXの設置
	axobj GomX, "{632CC9D6-5602-4854-AFD2-6EFC59177DE5}", 640, 480
	// イベントの登録
	comevent GomXEvent, GomX, "{46899D92-473E-413E-9F47-8D0765860AE9}", *event

	// プログラム情報のダイアログ表示
		;GomX->"AboutBox"
		
	// バージョン取得
		;dialog GomX("Version")
		
	// 表示スタイル
		; -mode:normal	デフォルト、コントロールあり
		; -mode:nude	コントロールなし
		;GomX("UiMode") = "-mode:nude"
	
	// 0 にすると右クリックメニューを無効にする
		;GomX("EnableContextMenu") = 0
	
	// 操作を有効にするかどうか? 0 だと操作できなくなる
		;GomX("Enabled") = 0
	
	// (詳細不明)メッセージを有効にするかどうか? デフォルト 0
		;GomX("EnableMessage") = 1
	
	// 開いたら自動再生するかどうか? 1 で自動再生
		GomX("AutoStart") = 1
	
	// レンダラーモード
		;0 = システム既定
		;1 = Overlay Mixer(指定しないとデフォはこちら?)
		;2 = Video Renderer
		;3 = VMR7 Windowed mode
		;4 = VMR9 Windowed mode
		;5 = VMR7 Renderless mode
		;6 = VMR9 Renderless mode
		;7 = Enhanced Video Renderer
		GomX("RenderMode") = 0
	
	// アスペクト比の維持 1だと無視する 再生中にやるとうまくいかない?
		;GomX("StretchToFit") = 1
	
	// ファイル名の指定(http、rtspとかでもOKみたい)
		dialog "*", 16
		if stat == 0 : end
		GomX("Url") = refstr
		
	// 用途不明
		;GomX("SubUrl") = "ファイルのパス"

	// ファイルの再生
		GomX->"play"
	
	// ファイルフォーマット取得
		;dialog GomX("GetMediaFormat")	// GomX->"GetMediaFormat" を実行し comresで変数に返却
	
	// 停止
		;GomX->"stop"
	
	// 一時停止
		;GomX->"pause"
	
	// 再生速度 1.0 を基準とする
		;GomX("Rate") = 2.0	; 2倍速で再生
	
	// ミュート設定 1 でミュートする
		;GomX("Mute") = 1
		
	// 左右スピーカーバランス? デフォルトが50
		;GomX("Balance") = 0
	
	// 音量 デフォルトが50 0~100 まで指定
		;GomX("Volume") = 50
	
	// フルスクリーンモード 1 でフルスクリーンになる
		;GomX("FullScreen") = 1
		
	// (用途不明) サブタイトルを有効にするかどうか?
		;GomX("EnableSubtitle") = 0
		
	// (用途不明) サブタイトルのサイズを指定?
		;GomX("SubtitleSize") = 0

	// (用途不明) サブタイトルのモードを指定?
		;GomX("SubtitleMode") = 0
		
	// (用途不明) ロゴの指定?
		;GomX("LogoUrl") = "画像ファイルのパス?"
	
	// (用途不明) スピーカーモード? スピーカーのチャンネル数と思われる
		;GomX("SpeakerMode") = 1
	
	// ビデオの幅を取得
		;dialog GomX("GetVideoWidth")	// もしくは GomX->"GetVideoWidth" を実行し comresで変数に返却
		
	// ビデオの高さを取得
		;dialog GomX("GetVideoHeight")	// もしくは GomX->"GetVideoHeight" を実行し comresで変数に返却
	
	// 10秒先送りする
		;GomX->"fastForward"
		
	// 10秒巻き戻す
		;GomX->"fastRewind"
	
	// 30秒の位置にシークする
		;GomX("CurrentPosition") = 30.0
	
	// 動画の静止画キャプチャを保存 保存するファイルのパスを指定
	// BMPとJPEG形式に対応している模様
		;GomX->"CapImageFile" "C:\\dump.jpg"
	
	// (キャプチャ関連のようだが用途不明)
	// AsyncCapture(BSTR sSrcPath,BSTR sDstPath, long dSec)
		;GomX->"AsyncCapture" "入力パス?", "出力パス?", 0 // 整数値
	
	// (用途不明)コマンド?
		;GomX->"Command" "何が指定できるか不明"
		
	repeat
	
		// 現在時間を文字列で取得
			;GomX("CurrentPositionString")
			
		// 合計時間を文字列で取得
			;GomX("DurationString")
			
		// 現在時間を小数(秒)で取得
			;GomX("CurrentPosition")
			
		// 合計時間を小数(秒)で取得
			;GomX("Duration")
			
		// 再生状態を取得 4 = 再生中, 3 = 一時停止, 2 = 停止, 1 = 不明, 0 = クローズ状態
			;GomX("GetPlayState") // もしくは GomX->"GetPlayState" を実行し comresで変数に返却
			switch GomX("GetPlayState")
				case 0
					st = "クローズ" : swbreak
				case 1
					st = "不明(1)" : swbreak
				case 2
					st = "停止中" : swbreak
				case 3
					st = "一時停止中" : swbreak
				case 4
					st = "再生中" : swbreak			
				default
					st = "不明(それ以外)" : swbreak
			swend

		title tt + " "+ GomX("CurrentPositionString") + "/" + GomX("DurationString") + " " + st
		
		wait 12
	loop
	
stop

*event
	// イベントの処理
	dispid = comevdisp(GomXEvent)
	switch dispid
		case 1	// ストリームが最後まで到達した場合 EndOfStream(long Result)
			dialog "最後まで再生したよ!"
			swbreak
		case 2	// エラーが発生した GomxError(long ErrorCode)
			comevarg e, GomXEvent, 0, 0
			dialog "エラーコード: "+e+" のエラーが発生しました"
			swbreak
		case 3	// プレイヤーの状態が変更された GomxState(long State)
			comevarg state, GomXEvent, 0, 0
			logmes str(state)
			swbreak	
		default
			swbreak
	swend
return