diff options
author | Guido van Rossum <guido@python.org> | 1992-08-20 14:46:46 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1992-08-20 14:46:46 (GMT) |
commit | 8a861be7f366331249d11b8fd48ceff1e821f06c (patch) | |
tree | ee77dd08543b80d200b514dad45543f0ec3a3bd6 /Demo/sgi | |
parent | 3accf984b31f085786c5d4dc6fb58b1fe54e4ae9 (diff) | |
download | cpython-8a861be7f366331249d11b8fd48ceff1e821f06c.zip cpython-8a861be7f366331249d11b8fd48ceff1e821f06c.tar.gz cpython-8a861be7f366331249d11b8fd48ceff1e821f06c.tar.bz2 |
Add audio recording
Diffstat (limited to 'Demo/sgi')
-rwxr-xr-x | Demo/sgi/video/Vrec.py | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/Demo/sgi/video/Vrec.py b/Demo/sgi/video/Vrec.py index af3d874..e246f54 100755 --- a/Demo/sgi/video/Vrec.py +++ b/Demo/sgi/video/Vrec.py @@ -75,11 +75,19 @@ def main(): elif opt == '-t': TIME = string.atoi(arg) + if args[2:]: + sys.stderr.write('usage: Vrec [options] [file [audiofile]]\n') + sys.exit(2) + if args: filename = args[0] else: filename = 'film.video' + if args[1:] and not audio: + sys.stderr.write('-a turned on by appearance of 2nd file\n') + audio = 1 + if audio: if args[1:]: audiofilename = args[1] @@ -171,6 +179,8 @@ def record(v, filename, audiofilename): vout.writeheader() buffer = [] thread.start_new_thread(saveframes, (vout, buffer)) + if audiofilename: + initaudio(audiofilename, buffer) gl.wintitle('(rec) ' + filename) v.StartCapture() t0 = time.millitimer() @@ -202,9 +212,9 @@ def saveframes(vout, buffer): time.millisleep(10) else: x = buffer[0] - del buffer[0] if not x: break + del buffer[0] data, t = x vout.writeframe(t, data, None) del data @@ -212,6 +222,42 @@ def saveframes(vout, buffer): vout.close() +# Initialize audio recording + +AQSIZE = 8000 + +def initaudio(filename, buffer): + import thread, aiff + afile = aiff.Aiff().init(filename, 'w') + afile.nchannels = AL.MONO + afile.sampwidth = AL.SAMPLE_8 + params = [AL.INPUT_RATE, 0] + al.getparams(AL.DEFAULT_DEVICE, params) + print 'audio sampling rate =', params[1] + afile.samprate = params[1] + c = al.newconfig() + c.setchannels(AL.MONO) + c.setqueuesize(AQSIZE) + c.setwidth(AL.SAMPLE_8) + aport = al.openport(filename, 'r', c) + thread.start_new_thread(audiorecord, (afile, aport, buffer)) + + +# Thread to record audio samples + +# XXX should use writesampsraw for efficiency, but then destroy doesn't +# XXX seem to set the #samples in the header correctly + +def audiorecord(afile, aport, buffer): + while buffer[-1:] <> [None]: + data = aport.readsamps(AQSIZE/2) +## afile.writesampsraw(data) + afile.writesamps(data) + del data + afile.destroy() + print 'Done writing audio' + + # Don't forget to call the main program main() |