audiowaveform generates waveform data from audio streams. The data it generates is equivalent to the waveform data generated by bbc/audiowaveform.
It was written because the former does not generate waveforms 'on the fly' from a http audiostream nor from a pipe/socket.
It supports every format/codec combination with at least one audio channel that ffmpeg can read.
- ffmpeg: generate a single channel (mono) stream of pcm encoded audio data from the audio source to a pipe.
- ruby-audio: (based on libsndfile): read pcm data from the pipe
snd = Sound.new source: 'http://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_480p_surround-fix.avi'
snd.channels #=> 1
snd.sample_rate #=> 48000
snd.waveform #=> {:sample_rate=>48000,
:samples_per_pixel=>2048,
:bits=>8,
:length=>13979,
:data=>[ ..., -7, 9, -8, 10, -9, 10, -8, 10, -10, 9, -12, 11, -19, 16, -18, 18, -26, 21, -32, 22,... ]}