Wyciąganie i konwersja MVE z Baldurs Gate do formatu mp4
7 January 2010
Comments
Znając strukturę binarnego pliku można wyciągać z niego interesujące nas dane. Na blogu multimedia.cx przedstawiono sposób wyciągania animacji z BIFFów (filmików pokazywanych np. między rozdziałami) i konwertowanie ich do normalnych formatów za pomocą FFmpeg.

#!/usr/bin/python
# parse-bif-graf.py
# by Mike Melanson (mike -at- multimedia.cx)
# Split apart a game resource archive format (GRAF) named BIF that comes
# from the game Baldur's Gate. Format details can be found at:
# http://wiki.xentax.com/index.php?title=Baldurs_Gate_BIF
from struct import *
import sys
if (len(sys.argv) <2):
print "Usage: parse-bif-graf.py <graf.bif>"
sys.exit(1)
graf_bif = sys.argv[1]
f = open(graf_bif, "rb")
bif_header = f.read(0x14)
if (bif_header[0:6] != "BIFFV1"):
print "%s does not conform to the BIFF format" % (sys.argv[1])
sys.exit(1)
file_count = unpack('<L', bif_header[8:12])[0]
header = f.read(file_count * 16)
for i in range(file_count):
(id, discard, offset, size, type) = unpack("<hhlll", header[i*16:i*16+16])
filename = "%s-%d.mve" % (graf_bif, id)
print "extracting file #%d at offset %d, %d bytes, to '%s'" % (id, offset, size, filename)
f.seek(offset)
out = open(filename, "wb")
file_data = f.read(size)
out.write(file_data)
out.close()
f.close()
for mve in `ls *.mve`
do
ffmpeg -y -i $mve -acodec libfaac -ab 128k -vcodec libx264 -vpre hq -b 500k -bt 500k `basename $mve .mve`.mp4
done
python parse-bif-graf.py bg2/Movies/MovEnd.bif
I konwertujemy wykonując skrypt basha w katalogu z plikami mve:
chmod 755 ./convert.sh ./convert.sh
RkBlog
Comment article