Finalmente rimetto mano al blog, scrivendo un post totalmente tecnico!!
Dalla versione 2011 di Autodesk Maya i codec integrati per effettuare un playblast video sono alquanto inutili: uno funziona male, un altro genera un video troppo grande da poter utilizzare ed un altro non va affatto.
Nella versione a 64bit poi le cose vanno ancora peggio!
Per risolvere questa situazione ho realizzato uno script che effettua un playblast di immagini JPEG e le converte in un filmato video tramite l'encoder FFmpeg.
Ecco le righe per effettuare il playblast come sequenza di JPEG:
cmd.setAttr("defaultRenderGlobals.imageFormat", 8) #imposto a JPEG
format = "image"
compression= "jpg"
image = "nomeFile" #senza estensione, Maya poi aggiunge il frame padding
startFrame=cmd.playbackOptions(q=1,ast=1)
endFrame=cmd.playbackOptions(q=1,aet=1)
cmd.playblast(filename=image,offScreen=1, startTime=startFrame,endTime=endFrame,v=0, compression=compression, format=format,p=100, showOrnaments=1,fp=4,widthHeight=[960,650],fo=1)
Queste invece le righe per convertire le immagini in un file video di qualsiasi formato si voglia (sì, anche Quicktime!):
import subprocess ffmpeg = "path_to_ffmpeg/ffmpeg.exe" bitrate = "100000k" #ffmpeg command: ffCommand = ffmpeg + ' -b %s -i %s.%%04d.jpeg -s 960x650 -aspect 1.477 -pix_fmt rgb24 %s\'%(bitrate, image, file) process = subprocess.Popen(ffCommand, shell=True)
Ho dovuto aggiungere le specifiche di bitrate, aspect-ratio e pixel_format poichè di default FFmpeg converte a 4:3 (vedere la documentazione di FFmpeg per ulteriori specifiche).
Per verificare il completamento del processo, basta eseguire questo controllo:
if not process.wait(): #returns True when FFmpeg stops
....
Attenzione: se il file video esiste già, FFmpeg attenderà un'azione da parte dell'utente e perciò il processo rimarrà impantanato. Occorre eseguire un controllo sull'esistenza e in caso positivo cancellare il file.

