gpt4 book ai didi

python - 压缩音频数据的快速方法?

转载 作者:行者123 更新时间:2023-12-03 00:37:11 24 4
gpt4 key购买 nike

我正在尝试构建(受 teampeak 启发)一个通过 UDP 通信的 voip 程序。

这是我的来源(服务器):

import pyaudio
import socket

CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100

p = pyaudio.PyAudio()

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

udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp.bind(("0.0.0.0", 4444))

while True:
soundData, addr = udp.recvfrom(CHUNK * CHANNELS * 2)
stream.write(soundData, CHUNK)
print len(soundData)

udp.close()

客户:
import pyaudio
import socket


CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100

p = pyaudio.PyAudio()

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

udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

while True:
udp.sendto(stream.read(CHUNK), ("127.0.0.1", 4444))

udp.close()

它在 LAN 上运行良好,但在 WAN 中音频非常糟糕。

我认为原始音频不适合 voip,我正在寻找一种使用有损算法或编码器(mp3、AAC、ogg)压缩音频的方法

我尝试了 LZMA,但我不需要无损压缩,在我的情况下有损更好。

我有两条规则要遵守:
  • 该程序必须是跨平台的,所以我需要一种以“跨平台”方式压缩/解压缩的方法(在python内部)
  • 音频质量应该很好(不低于原始的 50%)
  • 最佳答案

    FFmpeg 适用于 Pipe 协议(protocol),并且相同的功能已移植到 ffmpy,因此可以将数据写入标准输入并从标准输出读取。您可能还必须提供一些计时结构来处理同步和适当的缓冲区管理,但我认为这没有理由不能工作。

    ffmpy: using the pipe protocol

    使用 FFmpeg on a rasberry pi 进行实时音频流式传输

    关于python - 压缩音频数据的快速方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39881122/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com