[AYUDA][PYTHON][PyAudio]Como pausar pyaudio (y poder usar la consola mientras)

Iniciado por Noxware, 1 Mayo 2014, 02:00 AM

0 Miembros y 1 Visitante están viendo este tema.

Noxware

hola, lo que sucede es que me pidieron algo para un loco proyecto en el que quieres reproducir musica desde un .bat... se me habia ocurrido usar pyaudio (no lo manejo pero copio los ejemplos y los adapto) y sys.argv para que desde un .bat se ejecute un comando con los argumentos para leer un archivo wav... pero tengo varios problemas:

primero que nada, no puedo ejecutar ningun comando hasta que no termine la cancion (que deberia estar de fondo)

segundo no se como pausar la musica por lo que tengo que esperar a que esta termine

... no se si hay otro problema pero por ahora son esos
"La mejor forma de conocer a una persona es viendo su código... o en una partida de ajedrez...

PD: Si no tengo faltas de ortografía es porque use el autocorrector."

tincopasan


Noxware

ninguno xD

pero e hecho algunas pruebas, por lo que ya puedo llamar mi programa desde un bat para que reproduzca un archivo especifico...

el codigo que estoy utilizando lo saque de http://people.csail.mit.edu/hubert/pyaudio/

y es este:

import pyaudio
import wave
import sys

CHUNK = 1024

if len(sys.argv) < 2:
    print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
    sys.exit(-1)

wf = wave.open(sys.argv[1], 'rb')

p = pyaudio.PyAudio()

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                channels=wf.getnchannels(),
                rate=wf.getframerate(),
                output=True)

data = wf.readframes(CHUNK)

while data != '':
    stream.write(data)
    data = wf.readframes(CHUNK)

stream.stop_stream()
stream.close()

p.terminate()


pero tengo muchas dudas sobre pyaudio... como se pausa??? hay alguna forma de reproduzca y siga ejecutando los comandos dentro de .bat sin interrumpirlo?
"La mejor forma de conocer a una persona es viendo su código... o en una partida de ajedrez...

PD: Si no tengo faltas de ortografía es porque use el autocorrector."

tincopasan

no sé nada de .bat, pero si querés reproducir un sonido de una forma fácil en pocas líneas usaría:
code\\
import winsound
winsound.PlaySound("archivo.wav", winsound.SND_ALIAS)
code\\

ahora bien, esto te crea el tema de seguir usando la consola simultaneamente, bueno para eso usaría un thread (hilo)

Sino en vez de usar la librería pyaudio usaría la de pygame que me parece brinda muchas más posibilidades.

Noxware

"La mejor forma de conocer a una persona es viendo su código... o en una partida de ajedrez...

PD: Si no tengo faltas de ortografía es porque use el autocorrector."

Noxware

"La mejor forma de conocer a una persona es viendo su código... o en una partida de ajedrez...

PD: Si no tengo faltas de ortografía es porque use el autocorrector."

tincopasan

¿te refieres a que al apretar una tecla se detenga el sonido antes de terminar?

Noxware

algo asi... pero no al pulsar la tecla, en realidad no tengo metodo todavia... pero me gustaria saber como pausarlo
"La mejor forma de conocer a una persona es viendo su código... o en una partida de ajedrez...

PD: Si no tengo faltas de ortografía es porque use el autocorrector."

tincopasan

ah! entonces no podrás con winsound, no tiene muchas opciones, y menos pausar!, para eso uso pygame, pero debes agregar la librería de acuerdo a la versión de python. Te recomiendo que busques reproducir sonidos con pygame, verás que es fácil y te permite usar wav y mp3 por ejemplo, además de pausar.

Noxware

me quedo con pyaudio, que ya encontre la opcion detener pero tengo otra duda... yo soy nuevo en python (hace poco que inicie) pero lo que es mas, soy nuevo en los lenguajes orientados a objetos y necesito saber como utilizar cosas que estan en otra clase...

este es el codigo: http://paste.ubuntu.com/7389077

pero como dije, soy nuevo en los lenguajes tipo POO y no se como usar:


stream.stop_stream()
stream.close()

p.terminate()


que es para detener el sonido de la otra clase...
"La mejor forma de conocer a una persona es viendo su código... o en una partida de ajedrez...

PD: Si no tengo faltas de ortografía es porque use el autocorrector."