If you're running Python 2, install ``scikits.audiolab`` for the spectrograms::
- ./bin/pip install scikits.audiolab
+.. code-block:: bash
+
+ ./bin/pip install numpy==1.9.1
+ ./bin/pip install scikits.audiolab==0.10.2
-Audio spectrograms are currently not available on Python 3, since scikits.audiolab
-does not provide Python 3 support.
+For Python 3 ``scikits.audiolab`` has no package yet. Instead of the cool
+specrogram image a static icon is used until we found a replacement. (#5467)
Add ``[[mediagoblin.media_types.audio]]`` under the ``[plugins]`` section in your
``mediagoblin.ini`` and restart MediaGoblin.
_log.info('Creating OGG source for spectrogram')
self.transcoder.transcode(self.process_filename, wav_tmp,
mux_name='oggmux')
+
spectrogram_tmp = os.path.join(self.workbench.dir,
self.name_builder.fill(
'{basename}-spectrogram.jpg'))
- self.thumbnailer.spectrogram(
- wav_tmp,
- spectrogram_tmp,
- width=max_width,
- fft_size=fft_size)
-
- _log.debug('Saving spectrogram...')
- store_public(self.entry, 'spectrogram', spectrogram_tmp,
+
+ try:
+ self.thumbnailer.spectrogram(
+ wav_tmp,
+ spectrogram_tmp,
+ width=max_width,
+ fft_size=fft_size)
+
+ _log.debug('Saving spectrogram...')
+ store_public(self.entry, 'spectrogram', thumbnail,
self.name_builder.fill('{basename}.spectrogram.jpg'))
- file_metadata = {'max_width': max_width,
+ file_metadata = {'max_width': max_width,
'fft_size': fft_size}
- self.entry.set_file_metadata('spectrogram', **file_metadata)
+ self.entry.set_file_metadata('spectrogram', **file_metadata)
+
+ except IndexError:
+ _log.warn(
+ 'Your version of Numpy is too new to create the waveform thumbnail (#5457). '
+ "Try\n\t./bin/pip install numpy==1.9.1\n\t./bin/pip install scikits.audiolab==0.10.2")
+
+ except Exception as exc:
+ _log.warn('Failed to create spectrogram: '
+ + '{0}'.exc)
def generate_thumb(self, size=None):
if not size:
'{basename}-thumbnail.jpg'))
# We need the spectrogram to create a thumbnail
- spectrogram = self.entry.media_files.get('spectrogram')
- if not spectrogram:
- _log.info('No spectrogram found, we will create one.')
- self.create_spectrogram()
- spectrogram = self.entry.media_files['spectrogram']
-
- spectrogram_filepath = mgg.public_store.get_local_path(spectrogram)
+ try:
+ spectrogram = self.entry.media_files.get('spectrogram')
+ if not spectrogram:
+ _log.info('No spectrogram found, we will create one.')
+ self.create_spectrogram()
+ spectrogram = self.entry.media_files['spectrogram']
+
+ spectrogram_filepath = mgg.public_store.get_local_path(spectrogram)
+
+ except:
+ _log.warn('Failed to create spectrogram, using default audio image instead.')
+ spectrogram_filepath = 'mediagoblin/static/images/media_thumbs/audio.png'
self.thumbnailer.thumbnail_spectrogram(
spectrogram_filepath,