SAMPLE_LENGTH_SECONDS = 4
-# 48000 samples per seconds, at 1024 samples per buffer
-NUM_AUDIO_BUFFERS = round(SAMPLE_LENGTH_SECONDS * 48000 / 1024)
+VIDEO_FRAMERATE = 25
+VIDEO_BUFFERS = SAMPLE_LENGTH_SECONDS * VIDEO_FRAMERATE
+
+AUDIO_SAMPLERATE = 48000
+AUDIO_SAMPLESPERBUFFER = 1024
+AUDIO_BUFFERS = round(SAMPLE_LENGTH_SECONDS * 48000 / 1024)
LIVE_PIPELINE_TEMPLATE = """
- videotestsrc num-buffers=1 pattern=black ! \
+ videotestsrc num-buffers=%d pattern=black ! video/x-raw,framerate=%d/1 ! \
textoverlay valignment=center halignment=center font-desc="%s" text="{0}" ! \
autovideosink \
- audiotestsrc num-buffers=%d freq={1:f} ! audio/x-raw,rate=48000 ! \
+ audiotestsrc num-buffers=%d samplesperbuffer=%d freq={1:f} ! audio/x-raw,rate=%d ! \
autoaudiosink
-""" % (FONT_DESC, NUM_AUDIO_BUFFERS)
+""" % (VIDEO_BUFFERS, VIDEO_FRAMERATE, FONT_DESC, AUDIO_BUFFERS,
+ AUDIO_SAMPLESPERBUFFER, AUDIO_SAMPLERATE)
FILE_PIPELINE_TEMPLATE = """
- matroskamux name=mux ! filesink location="{2}/sample_{0}.mkv"
- videotestsrc num-buffers=1 pattern=black ! \
+ webmmux name=mux ! filesink location="{2}/sample_{0}.webm"
+ videotestsrc num-buffers=%d pattern=black ! video/x-raw,framerate=%d/1 ! \
textoverlay valignment=center halignment=center font-desc="%s" text="{0}" ! \
- queue ! schroenc rate-control=3 ! mux.
- audiotestsrc num-buffers=%d freq={1:f} ! audio/x-raw,rate=48000 ! \
+ queue ! vp9enc ! mux.
+ audiotestsrc num-buffers=%d samplesperbuffer=%d freq={1:f} ! audio/x-raw,rate=%d ! \
queue ! audioconvert ! vorbisenc quality=0.5 ! queue ! mux.
-""" % (FONT_DESC, NUM_AUDIO_BUFFERS)
+""" % (VIDEO_BUFFERS, VIDEO_FRAMERATE, FONT_DESC, AUDIO_BUFFERS,
+ AUDIO_SAMPLESPERBUFFER, AUDIO_SAMPLERATE)
+
+PNG_REST_SAMPLE_TEMPLATE = """
+ videotestsrc num-buffers=1 pattern=black ! \
+ textoverlay valignment=center halignment=center font-desc="%s" text="rest" ! \
+ pngenc ! filesink location="{0}/sample_rest.png"
+""" % FONT_DESC
def create_test_videofont(pipeline_template, notes_range, destination_dir=None):
+ print("Silence")
+ pipeline_string = pipeline_template.format("rest", 0, destination_dir)
+ player = vidi.Player.from_pipeline_string(pipeline_string)
+ player.play()
+
for i, note_number in enumerate(notes_range):
note = vidi.SpnNote(note_number)
os.mkdir(destination_dir)
create_test_videofont(FILE_PIPELINE_TEMPLATE, notes_range,
destination_dir)
+
+ pipeline_string = PNG_REST_SAMPLE_TEMPLATE.format(destination_dir)
+ player = vidi.Player.from_pipeline_string(pipeline_string)
+ player.play()
else:
create_test_videofont(LIVE_PIPELINE_TEMPLATE, notes_range)