打印图像并录制音频输入

时间:2015-02-03 09:11:12

标签: python image audio record intervals

我对编程很态度,但希望学习和发展。

我想写一个在语言治疗中有用的简单应用程序 - 但首先它是简单的演示。

应用程序即将在投影期间显示图像和录制声音。 几乎没有变量 - 间隔和图像/声音/影片剪辑路径 - 取自外部txt文件(开头 - 后来我想用预先配置的配置执行一些创建者)。

配置文件现在看起来像:

10
path1
path2
...

第一行是以秒为单位输入间隔,接下来是图像,声音或影片剪辑的路径(我现在尝试使用图像)。

#!/usr/bin/python
# main.py

import sys
from PyQt4 import QtGui, QtCore

from Tkinter import *
import numpy as np

import pyaudio
import wave

import time

from PIL import Image, ImageTk

import multiprocessing

import threading
from threading import Thread

master = Tk()

conf_file = open("conf.txt", "r")   #open conf file read only
conf_lines = conf_file.readlines()  
conf_file.close()

interwal = conf_lines[0]            #interval value from conf.txt file
bodziec1 = conf_lines[1]            #paths to stimulus file (img / audio / video)
bodziec2 = conf_lines[2]
bodziec3 = conf_lines[3]

CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = interwal           #every stimulus has it's own audio record file for further work

timestr = time.strftime("%Y%m%d-%H%M%S")    #filename is set to year / month / day - hour / minute / second for easier systematization

def nagrywanie():                               #recording action - found somewhere in the all-knowing web
    p = pyaudio.PyAudo()

    stream = p.open(format=FORMAT,
                    channels=CHANNELS,
                    rate=RATE,
                    input=True,
                    frames_per_buffer=CHUNK)

    print("* nagrywanie")                                   #info about record to start

    frames = []

    for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
        data = stream.read(CHUNK)
        frames.append(data)
    print("* koniec nagrywania")                            #info about record to end

    stream.stop_stream()
    stream.close()
    p.terminate()

    wf = wave.open(timestr, 'wb')
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b''.join(frames))

def bod1():                                                 #stimulus 1st to display / play
    image = Image.open(bodziec1)
    photo = ImageTk.PhotoImage(image)

def bod2():
    image = Image.open(bodziec2)                            #stimulus 2nd to display / play
    photo = ImageTk.PhotoImage(image)

def bod3():
    image = Image.open(bodziec3)                            #stimulus 3rd to display / play
    photo = ImageTk.PhotoImage(image)

def odpal():                                                #attemption to run display and recording at the same time
    Thread(target = bod1).start()
    Thread(target = nagrywanie).start()

    # Wait interwal for odpal                               #give impetus for time in first line of the conf.txt
    time.sleep(interwal)

    # Terminate odpal                                       #stop giving impetus
    bod1.terminate()

    # Cleanup                                               #?? this part is also copied from all-knowing internet
    p.join()

b = Button(master, text="OK", command=odpal)                #wanted the program to be easier for non-programmers to operate so few buttons are necessary
b.pack()

mainloop()

当问及一些程序员关于代码时,它就像骑自行车一样简单,所以我想学习如何自己编写代码。

我想这对于专业人士来说是和平的蛋糕 - 感谢那些想要阅读这些垃圾的人们。

我需要花很多时间才能理解和弄清楚我正在礼貌地询问帮助的确切信息 - 不仅是为了教育而且是为了更好的诊断。

请原谅我的语言 - 英语不是我的母语。

0 个答案:

没有答案