Pymedia, musica y video con python.

imagen / Derek Gavey - flickr
  
15 de Enero de 2016   0  

Ya hemos visto lo poderoso que es python para la ciencia, la educación, la biología, los juegos, etc. Python es multiparadigma, esto significa que lo encontraremos donde menos nos lo esperemos y tal es el caso de pymedia que nos ayuda a llevar a python en la música y video.

Pymedia es una librería de python para acceder y manipular archivos multimedia, esta librería hace que la reproducción/creación de audio y video sea muy fácil ,  incluso para los novatos en programación. 

 La instalación de esta librería la podemos encontrar aquí: http://pymedia.org/tut/install_src.html

Ejemplo 1:

Un ejemplo rápido de esta librería podría ser la reproducción de un archivo WAV:

#! /bin/env python

import sys

def playWAV( fname ):
  import pymedia.audio.sound as sound
  import time, wave
  f= wave.open( fname, 'rb' )
  sampleRate= f.getframerate()
  channels= f.getnchannels()
  format= sound.AFMT_S16_LE
  snd1= sound.Output( sampleRate, channels, format )
  s= ' '
  while len( s ):
    s= f.readframes( 1000 )
    snd1.play( s )
  
  # Since sound module is not synchronous we want everything to be played before we exit
  while snd1.isPlaying(): time.sleep( 0.05 )

# ----------------------------------------------------------------------------------

# Play a wav file through the sound object

# http://pymedia.org/

if __name__== '__main__':
  if len( sys.argv )!= 2:
    print "Usage: play_wav <file>"
  else:
    playWAV( sys.argv[ 1 ] )

 

Ejemplo 2:

Graba cualquier sonido desde el micrófono o línea de entrada y guardalo en format mp3:

import time, sys
import pymedia.audio.sound as sound
import pymedia.audio.acodec as acodec

def voiceRecorder( secs, name ):
  f= open( name, 'wb' )
  # Minimum set of parameters we need to create Encoder

  cparams= { 'id': acodec.getCodecId( 'mp3' ),
             'bitrate': 128000,
             'sample_rate': 44100,
             'channels': 2 } 
  ac= acodec.Encoder( cparams )
  snd= sound.Input( 44100, 2, sound.AFMT_S16_LE )
  snd.start()
  
  # Loop until recorded position greater than the limit specified

  while snd.getPosition()<= secs:
    s= snd.getData()
    if s and len( s ):
      for fr in ac.encode( s ):
        # We definitely should use mux first, but for

        # simplicity reasons this way it'll work also

        f.write( fr )
    else:
      time.sleep( .003 )
  
  # Stop listening the incoming sound from the microphone or line in

  snd.stop()

# ----------------------------------------------------------------------------------

# Record stereo sound from the line in or microphone and save it as mp3 file

# Specify length and output file name

# http://pymedia.org/

if __name__ == "__main__":
  if len( sys.argv )!= 3:
    print 'Usage: voice_recorder <seconds> <file_name>'
  else:
    voiceRecorder( int( sys.argv[ 1 ] ), sys.argv[ 2 ]  )

 

Si quieres conocer mas de esta librería y sobre todo conocer mas ejemplos puedes visitar: http://pymedia.org/tut/index.html



Gaspar Dzul

Desarrollador Front End y Móvil.