web-dev-qa-db-fra.com

Générer une image de forme d'onde pour un fichier audio?

Quelle est la chaîne de puits gst-launch appropriée pour utiliser l’un des audiovisualizers ?

Un autre outil qui fonctionne?

J'ai vu le http://rg42.org/wiki/sndfile-waveform

Mais avant d'essayer de le compiler, il y a peut-être un moyen de le faire avec gstreamer? Ou quiconque peut confirmer qu'il compilera bien.

2
int_ua

Vous ne pouvez pas utiliser les audiovisuels de Gstreamer car ils ne créent tous qu'une image pour un rendu semblable à une étendue (c'est-à-dire un récepteur vidéo, tel que ximagesink).

Prenons le /usr/share/sounds/ubuntu/stereo/bell.ogg comme fichier exemple.

Si j'ouvre ce fichier avec audace, je peux voir un aperçu de la forme d'onde:

enter image description here

Mais si j'utilise le pipeline suivant:

gst-launch filesrc location=/usr/share/sounds/ubuntu/stereo/bell.ogg ! decodebin ! audioconvert ! wavescope ! jpegenc ! filesink location=waveform.jpg

Je ne reçois qu'une forme d'onde tronquée correspondant aux premiers échantillons de mon fichier:

enter image description here

sndfile-waveform est, comme vous pouvez le deviner, l’outil parfait pour cette tâche, mais nécessite d’être construit à partir du source (il installera cependant environ 200 Mo de dépendances):

  1. Installer toutes les dépendances

    Sudo apt-get build-dep sndfile-tools 
    Sudo apt-get install octave-signal libsamplerate0-dev git
    
  2. Cloner le sndfile-tools repo

    git clone https://github.com/erikd/sndfile-tools.git
    
  3. Construisez les binaires sndfile-tools:

    cd sndfile-tools/
    ./autogen.sh 
    ./configure 
    make
    
  4. Créer une forme d'onde avec sndfile-waveform (le canal par défaut est 0, il peut être modifié avec l'option --channel)

    ./bin/sndfile-waveform /usr/share/sounds/ubuntu/stereo/desktop-login.ogg waveform.png
    

    Le fichier png résultant:

enter image description here

Le même fichier en audace:

enter image description here

4
Sylvain Pineau