def mp3add(srcfile, mp3files, outfile, force=False, debug=0): if not force and os.path.exists(outfile): raise IOError('file already exists: %r' % outfile) fout = file(outfile, 'wb') writer = FLVWriter(fout, debug=debug, has_video=True, has_audio=True) fin = file(srcfile, 'rb') parser = FLVParser(fin, debug=debug) for (i, (tag, _, timestamp, _, _)) in enumerate(parser): if tag == 8: pass elif tag == 9: writer.write_video_frame(timestamp, parser.get_data(i)) elif tag == 18: (k,v) = parser.parse_metadata(parser.get_data(i)) if k == 'onMetaData': writer.set_screen_size(v.get('width',0), v.get('height',0)) else: writer.write_other_data(tag, parser.get_data(i)) parser.close() fin.close() for fname in mp3files: m = re.match(r'([^:]+):(.+)$', fname) ranges = None if m: fname = m.group(1) ranges = MultipleRange(m.group(2)) audio = AudioSink() fp = file(fname, 'rb') audio.load(fp) fp.close() if ranges: for (_,s,e) in ranges: audio.put(writer, s, e, s) else: audio.put(writer) writer.close() fout.close() return
def mp3add(srcfile, mp3files, outfile, force=False, debug=0): if not force and os.path.exists(outfile): raise IOError('file already exists: %r' % outfile) fout = open(outfile, 'wb') writer = FLVWriter(fout, debug=debug, has_video=True, has_audio=True) fin = open(srcfile, 'rb') parser = FLVParser(fin, debug=debug) for (i, (tag, _, timestamp, _, _)) in enumerate(parser): if tag == 8: pass elif tag == 9: writer.write_video_frame(timestamp, parser.get_data(i)) elif tag == 18: (k, v) = parser.parse_metadata(parser.get_data(i)) if k == 'onMetaData': writer.set_screen_size(v.get('width', 0), v.get('height', 0)) else: writer.write_other_data(tag, parser.get_data(i)) parser.close() fin.close() for fname in mp3files: m = re.match(r'([^:]+):(.+)$', fname) ranges = None if m: fname = m.group(1) ranges = MultipleRange(m.group(2)) audio = AudioSink() fp = open(fname, 'rb') audio.load(fp) fp.close() if ranges: for (_, s, e) in ranges: audio.put(writer, s, e, s) else: audio.put(writer) writer.close() fout.close() return