Всем доброго времени суток. Помогите, пожалуйста, в одном вопросе.
Пытаюсь на питоне реализовать передачу аудиоданных в потоке через сокет.
Как сделать, чтобы аудиофайл в сокет отправлялся порциями(по байтам)? Между порциями аудио в сокет должен отправляться разделитель "--audio".
Использую библиотеку PyAudio
Вот код целиком. При отладке сокет открывается, api запрос отправляется и по факту стрим должен начаться, но вылетает ошибка.
#######Подключаемые модули
import requests
import socket
import pyaudio
import wave
##########################
#######Открываем сокет для стрима
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('192.168.13.122', 80))
#######Передаем API запросы по HTTP POST
url = 'http://192.168.13.122/cgi-bin/transmitaudio_cgi?user=admin&pwd=admin HTTP'
headers = {'Content-Type': 'audio/basic', 'Content-Length': '99999999', 'Connection': 'Keep-Alive', 'Cache-Control': 'no-cache'}
r = requests.post(url, headers=headers)
print(requests.__file__)
print(dir(requests))
#######Транслируем звук
filename = 'voice.wav'
# Set chunk size of 1024 samples per data frame
chunk = 1024
# Open the sound file
wf = wave.open(filename, 'rb')
# Create an interface to PortAudio
p = pyaudio.PyAudio()
# Open a .Stream object to write the WAV file to
# 'output = True' indicates that the sound will be played rather than recorded
stream = p.open(format = p.get_format_from_width(wf.getsampwidth()),
channels = wf.getnchannels(),
rate = wf.getframerate(),
output = True)
# Read data in chunks
data = wf.readframes(chunk)
# Play the sound by writing the audio data to the stream
while data != '':
stream.write(data)
data = wf.readframes(chunk)
# Close and terminate the stream
stream.close()
p.terminate()
sock.close()
Ошибка
Traceback (most recent call last):
File "C:\Users\Roman\Desktop\ПО HTTP Audio\cgiaudio.py", line 30, in <module>
wf = wave.open(filename, 'rb')
File "C:\Users\Roman\AppData\Local\Programs\Python\Python37\lib\wave.py", line 510, in open
return Wave_read(f)
File "C:\Users\Roman\AppData\Local\Programs\Python\Python37\lib\wave.py", line 164, in __init__
self.initfp(f)
File "C:\Users\Roman\AppData\Local\Programs\Python\Python37\lib\wave.py", line 131, in initfp
raise Error('file does not start with RIFF id')
wave.Error: file does not start with RIFF id.