audio
June 26, 2023
Запись радио
Запишем аудио-поток радиостанции из скрипта
import requests
import pyaudio
import wave
import threading
import os
class AudioRecorder:
def __init__(self):
self.frames = []
self.is_recording = False
self.stream = None
def start(self):
self.is_recording = True
threading.Thread(target=self.record).start()
print("Starting recording...")
def stop(self):
self.is_recording = False
filename = self.save_to_file()
print(f"File saved as {filename}. Size: {os.path.getsize(filename)} bytes")
def record(self):
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
p = pyaudio.PyAudio()
self.stream = p.open(
format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
while self.is_recording:
data = self.stream.read(CHUNK)
self.frames.append(data)
# print("Recording...")
self.stream.stop_stream()
self.stream.close()
p.terminate()
def save_to_file(self):
filename = "recording1.wav"
wf = wave.open(filename, 'wb')
wf.setnchannels(2)
wf.setsampwidth(pyaudio.get_sample_size(pyaudio.paInt16))
wf.setframerate(44100)
wf.writeframes(b''.join(self.frames))
wf.close()
return filename
recorder = AudioRecorder()
def start_recording():
recorder.start()
def stop_recording():
recorder.stop()
if __name__ == '__main__':
url = "https://icecast-vgtrk.cdnvideo.ru/vestifm_aac_64kbps"
r = requests.get(url, stream=True)
if r.status_code == 200:
print("Connected to audio stream")
start_recording()
else:
print("Failed to connect to audio stream")
input("Press Enter to stop recording...")
stop_recording()
Список радиостанций https://espradio.ru/stream_list/