Sakura Martinez
Member
I have been using this script without editing any of it for a while now. And I came across a movie that is in .mkv format and I was wondering if anyone could make it so that this script would play .mkv formatted videos.
I know that the easiest way would have to be converting the video into .avi or .wmv format, but I have problem with conversion and the converter I am using since whenever I convert the file, it tends to skip and the video and audio don't match (the video is delayed), so I thought of using the original .mkv file and thus, the problem is that I don't know if it is possible with the script.
Another thing is that, is it possible to have a codec go with the game so that when the game installs, the codec would also be installed and it would allow the user's default player to be able to play .mkv files?
Can anyone provide support for this? I really am in need of this and any help is greatly appreciated.
Below is the script I use when playing .wmv and .avi scripts in RMXP:
I know that the easiest way would have to be converting the video into .avi or .wmv format, but I have problem with conversion and the converter I am using since whenever I convert the file, it tends to skip and the video and audio don't match (the video is delayed), so I thought of using the original .mkv file and thus, the problem is that I don't know if it is possible with the script.
Another thing is that, is it possible to have a codec go with the game so that when the game installs, the codec would also be installed and it would allow the user's default player to be able to play .mkv files?
Can anyone provide support for this? I really am in need of this and any help is greatly appreciated.
Below is the script I use when playing .wmv and .avi scripts in RMXP:
Code:
class Scene_Movie
##Copy this into a new section of your game.
##To play a file, move the avi file into a "movies" subdirectory (yourgame\data,
##yourgame\graphics, yourgame\movies).
##Then call "Scene_Movie.new(filename)" where filename is your movies actual filename
## (minus the .avi). exp Scene_Movie.new("???")
## If you want to play multiple movies in a row
##(for example before the game starts, maybe a "developed by", "produced by", "intro movie"
## set or something... Go to the "main" section of code and find the line "$scene = Scene_Title.new".
##Just after that line add:
##CODE
##Scene_Movie.new("dev_by")
##Scene_Movie.new("pro_by")
##Scene_Movie.new("intro")
##$scene = Scene_Movie.new("intro",8,false)assuming the filename of the intro movie is "intro.avi" and it's 8 seconds long.
##class Scene_Movie
def initialize(movie)
@readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
@movie_name = Dir.getwd()+"\\Movies\\"+movie+".avi"
main
end
def main
game_name = "\0" * 256
@readini.call('Game','Title','',game_name,255,".\\Game.ini")
game_name.delete!("\0")
@wnd = Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L')
@temp = @wnd.call(0,0,nil,game_name).to_s
movie = Win32API.new('winmm','mciSendString','%w(p,p,l,l)','V')
movie.call("open \""+@movie_name+"\" alias FILE style 1073741824 parent " + @temp.to_s,0,0,0)
@message = Win32API.new('user32','SendMessage','%w(l,l,l,l)','V')
@detector = Win32API.new('user32','GetSystemMetrics','%w(l)','L')
@width = @detector.call(0)
if @width == 640
fullscreen
Graphics.update
sleep(1)
Graphics.update
sleep(1)
Graphics.update
sleep(1)
end
status = " " * 255
movie.call("play FILE",0,0,0)
loop do
sleep(0.1)
@message.call(@temp.to_i,11,0,0)
Graphics.update
@message.call(@temp.to_i,11,1,0)
Input.update
movie.call("status FILE mode",status,255,0)
true_status = status.unpack("aaaa")
if true_status.to_s != "play"
break
end
if Input.trigger?(Input::B)
Input.update
break
end
end
movie.call("close FILE",0,0,0)
bail
end
def bail
if @width == 640
fullscreen
end
end
end
def fullscreen()
$full.call(18,0,0,0)
$full.call(13,0,0,0)
$full.call(18,0,2,0)
$full.call(13,0,2,0)
end
$full = Win32API.new('user32','keybd_event','%w(l,l,l,l)','')