For Q1, there's an API, WriteImageToFile(filename) , for taking a snapshot of the irrlicht visualization at each rendering frame, then you can stitch together the pictures to make a video.
vis.BeginScene()
vis.Render()
vis.EndScene()
if (steps % render_steps == 0):
filename = 'img_'+ str(render_frame).zfill(4) +'.jpg'
vis.WriteImageToFile(filename)
render_frame += 1
Thank you,
Luning