Making movies¶
using recordmydesktop¶
A video tutorial can be produced in the following way:
change the screen resolution to 1280x1024,
record the movie of the screen (without sound) using recordmydesktop (gtk-recordMyDesktop),
convert the resulting ogv into avi using mencoder:
mencoder video.ogv -o video.avi -oac copy -ovc lavc
record and edit the sound track using audacity:
- use 44100 Hz for recording and save the final file as sound.wav,
- make sure not to keep the microphone to close to avoid signal peaks,
- cut microphone signal peaks, insert silences, …
edit the movie using avidemux (to match the sound track):
load the video.avi:
, make sure to use the following options when editing and saving: , , ,add the sound.avi:
,cut video frames (or copy and insert still frames to extend the video) to match the sound track. Set beginning mark and end mark - the cut or copy/paste operation applies to the selected region,
make sure to save intermediate stages when working on the video
(as AVI):- avidemux caches the audio track so to match the audio to a freshly cut video you can copy the audio file into another name, and add the sound track from that name,
- sometimes when cutting frames avidemux does not allow to set the markers correctly, and there is no undo the last step in avidemux!
save the video_final.avi (that matches the sound track), and encode it into mpeg4 format using mencoder, using two passes:
opt="vbitrate=550:mbd=2:dc=10 -vf unsharp=l:0.4:c:0.0:hqdn3d" mencoder -ovc lavc -lavcopts vcodec=msmpeg4v2:vpass=1 -nosound -o /dev/null video_final.avi mencoder video_final.avi -oac mp3lame -af resample=32000:0:2 -lameopts vbr=3:br=80:mode=3 \ -ovc lavc -lavcopts acodec=mp3lame:vcodec=msmpeg4v2:vpass=2:$opt \ -info name="Overview and installation of ASE":artist=CAMd:copyright="CAMd 2009" -o video_final_mpeg4.avi
convert video_final.avi into a 800x600 swf file for streaming:
ffmpeg -i video_final.avi -pass 1 -s 800x600 -b:a 256k -ar 44100 -ac 1 \ -vcodec flv -b:v 1200k -g 160 -mbd 2 oi_en_800x600.swf ffmpeg -i video_final.avi -pass 2 -s 800x600 -b:a 256k -ar 44100 -ac 1 \ -vcodec flv -b:v 1200k -g 160 -mbd 2 -y oi_en_800x600.swf
using avconf to collect png files¶
Load the trajectory and write the images out as single png files, e. g.:
from ase import io
t = io.read('mytrajectory.traj')
for i, s in enumerate(t):
# rotate to the desired direction
s.rotate('z', 'x', rotate_cell=True)
# repeat with keeping old cell
cell = s.get_cell()
s = s.repeat((1, 3, 3))
s.set_cell(cell)
ofname = str(i) + '.png'
print('writing', ofname)
io.write(ofname, s,
show_unit_cell=True,
bbox=[-3, -5, 50, 22]) # set bbox by hand, try and error
In case you do not have avconv, install it (ubuntu):
sudo apt-get install libav-tools libavcodec-extra-53 libavdevice-extra-53 libavformat-extra-53 libavutil-extra-51 libpostproc-extra-52 libswscale-extra-2
Convert the png files to a movie (img.mov):
avconv -i "%d.png" -r 25 -c:v libx264 -crf 20 -pix_fmt yuv420p img.mov
the options are:
-i “img%d.png” uses these files as the input, %d is a placeholder for the number
-r 25 the desired frame rate, 25 FPS in this case
-c:v libx264 use the h264 codec x264
-crf 20 the video quality, 20 is pretty high, the default is 23
-pix_fmt yuv420p a compatible pixel format