Я прочитываю RTP поток из сокета в файл, после чего пытаюсь преобразовать его в wav.
Однако, в
полученном wav появляются сильные шумы.
При этом голос не искажен, но из-за шумов практически не слышно.
Если слушать тот же самый RTP поток захваченный Wireshark, то никаких шумов нет.
Python код которым прослушиваю rtp сокет
def listen_rtp(self):
timer = time.time()
data = []
while True:
# Если в течение 200мс не смогли прочитать новые данные, считаем что прослушивание аудиофрагмента завершено
if data and timer <= (time.time() - 0.2):
return b''.join(data)
try:
data.append(self.socket.recv(1024))
timer = time.time()
except TimeoutError:
pass
Основная идея такого подхода в том, что я могу прослушав один аудио фрагмент, записать его в один файл (с помощью таймаута определяю конец воспроизведения ИВР). Далее будет воспроизведен следующий, его уже в следующий файл и тд.
Записанные в файл байты, преобразовываю в wav с помощью ffmpeg
ffmpeg -f mulaw -ar 8000 -i output.g711u output_g711u.wav
Мне кажется, что эти шумы следствие того, что в файл попадает не только часть payload, но и остальные заголовки rtp.. Но пока что у меня нет идей как это сделать нормально.