Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
26 / 26 / 6
Регистрация: 19.10.2012
Сообщений: 131
1

Как проигрывать звук, добавляя к звуковому файлу через append()?

09.05.2013, 19:26. Показов 1150. Ответов 2
Метки нет (Все метки)

Всем привет. Питон изучаю вторую неделю, столкнулся с такой бедой: при добавлении к звуковому файлу методом функцией append( bin (_buffer) ), воспроизведение дальше не продвигается почему-то. А в функции play нет никакого намёка на указатель, чтобы передвинуть точку, с которой начинать проигрывание. Пайтон 2.х
Вообще, идёт соединение с какой-нибудь страничкой с мелодией, скармливается в файл на ЖД и постепенно проигрывается.
вот код, в общем случае:
Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class TempFile (object):
    
    def __init__ (self, link):
        
        self._track = urllib2.urlopen (link)
        self._name = 'res\\tmp.mp3'
        #link.split('/')[-1]#
        self._temp_file = open(self._name, 'wb')
        
        self._file_size_dl = 0
        self._block_sz = 262144#block size for write()
        
        self._buffer = self._track.read (self._block_sz)
        
        self._temp_file.write (self._buffer)
        
        self._sound = tkSnack.Sound ()
        self._sound.read('res\\tmp.mp3')
 
import thread
import urllib2
import Tkinter as tk
import tkSnack
 
root = tk.Tk()
frame = tk.Frame(root)
root.title('play')
frame.pack()
#init Snack lib
tkSnack.initializeSnack(root)
 
def buffering_play ():
    
    tmpFile = TempFile ('http://mixpromo.ru/getsong/4754727_165204743?dl=1.mp3')
    
    def save (tmpFile):
        
        while True:
            tmpFile._buffer = tmpFile._track.read(tmpFile._block_sz)
            if not tmpFile._buffer:
                break
                
            tmpFile._file_size_dl += len(tmpFile._buffer)
            tmpFile._temp_file.write(tmpFile._buffer)
            
            tmpFile._sound.append( bin (tmpFile._buffer) )
        
        tmpFile._temp_file.close()
        
    #thread for music playback
    thread.start_new_thread(tmpFile._sound.play, ())
    
    #thread for writing the file
    thread.start_new_thread(save, (tmpFile,))
          
b = tk.Button(frame, text='Play', command = buffering_play)
b.pack()
b1 = tk.Button(frame, text='destroy', command = root.destroy)
b1.pack()
 
root.mainloop()
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2013, 19:26
Ответы с готовыми решениями:

Как проигрывать звук?
Я вычитал что в паскале abc можно юзать такой код: var sound: system.Media.SoundPlayer; begin...

Путь к звуковому файлу для PlaySound в виде переменной
Моя программа считывает текстовый файл, из которого путь к звуковому файлу записывается в...

Как проигрывать звук в отдельном потоке?
Здравствуйте!Я хочу в фоне воспроизводить музыку в моем прилоежении.Но он не работает Я создаю...

Как проигрывать звук wav под IE каждые 10 сек.?
Собственно вопрос в сабже... Была такая вот бредовая идея: <script language="JavaScript"...

2
26 / 26 / 6
Регистрация: 19.10.2012
Сообщений: 131
12.05.2013, 14:35  [ТС] 2
Хм, вопрос отпал. Оказывается, возможности PyQt куда шире - не требуется даже скачивать файл, он соединение создаёт сам. Встал другой вопрос:
я использую функцию
Python
1
setCurrentSource (Phonon.MediaSource (url) )
и оно при запуске .py файла работает. После изгнания же в exe формат командой
Код
python setup.py py2exe --includes sip
проигрывать mp3 отказывается. Почему такое происходит?

Добавлено через 23 часа 46 минут
Таки взлетело, не хватало phonon_backend плагина. Проигрывается как-нужно.
Теперь другой вопрос.Как можно наладить общение между двумя диалоговыми окнами или элементами GUI?
Функциями emit и connect вроде только сигналы текстовые посылать можно.
0
26 / 26 / 6
Регистрация: 19.10.2012
Сообщений: 131
14.05.2013, 15:57  [ТС] 3
Усё, разобрался. Тему вхлам, если можно. Соединять объекты. как это делал я - слишком глупо и часто не работает, таки жалко, что опыта не было. Лучше класс-обёртка и объекты в его управлении.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2013, 15:57

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Проигрывать звук по времени на компьютере
Добрый день. У меня есть некоторый звуковой файл. Мне нужно его воиспроизводить по времени на...

При нажатии клавиши проигрывать звук
Помогите пожалуйста написать программу которая при нажатии клавиш будет проигрывать звук

Как добавить в конец многомерного списка строку через append?
Здравствуйте , подскажите как добавить в конец списка строку , нужно добавить ip адрес и...

Как открыть сразу несколько текстовых файлов через "append from"?
суть в чем: мне необходимо сформировать из 2-х файлов txt сделать 1 курсор (дбф)! вот примерно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.