From: katata@... Date: 2003-02-18T20:08:12+09:00 Subject: [ruby-list:37131] Ruby/SDLで複数のmpegを扱うには はじめまして、片多と申します。 Ruby/SDLをいろいろと試しているのですが、複数のmpegファイルをを扱ってみようと思い、 以下のようなスクリプトを動かしてみると、 -- require 'sdl' SDL.init( SDL::INIT_VIDEO|SDL::INIT_AUDIO ) screen = SDL.setVideoMode( 640, 480, 32, SDL::SWSURFACE ) mpeg1 = SDL::MPEG.load( 'A1_10a.mpg' ) mpeg2 = SDL::MPEG.load( 'A1_10b.mpg' ) # <- エラー! mpeg1.setDisplay(screen) mpeg1.play loop do case event = SDL::Event2.poll when SDL::Event2::KeyDown mpeg1.stop exit end end -- 7行目の「mpeg2 =」の行で以下のようなエラーがでます。 -- plaympeg.rb:7:in `load': Couldn't load A1_10b.mpg: Audio device is already opened (SDL::Error) from plaympeg.rb:7 -- すでにオーディオデバイスは開いているよ、とのことですが、 どのようにすればよいのでしょうか。 7行目をコメントにすればもちろん動画が再生されます。 一応Ruby/SDLのソースを見てみました。 rubysdl_smpeg.cの52行目、 -- mpeg = SMPEG_new(STR2CSTR(filename),NULL,SDL_WasInit(SDL_INIT_AUDIO)); -- が関係してそうな気がしますが、あまり詳しいことまではよくわからないです。 ともかく1つのスクリプトの中で複数のmpegファイルを扱えれば、思っているので 何かご存知の方がおられましたらアドバイス等お願いできますでしょうか。 私の環境は以下のとおりです。 ・mswin版Ruby 1.6.7 ・Ruby/SDL 0.8.2(ホームページからダウンしたWindows用バイナリ) ・mingw32-ruby16.dll(mingw版Ruby/SDLをmswin版Rubyで動かすためのDLL)