gpt4 book ai didi

Python 管道从网络套接字接收到 tcp/udp pcm 数据到子进程(aplay)

转载 作者:可可西里 更新时间:2023-11-01 02:54:46 30 4
gpt4 key购买 nike

我这辈子都弄不明白。我正在尝试获取通过网络连接接收到的数据,然后将其通过管道传输到子进程,该子进程将通过 aplay 将数据流式传输到我的声卡。

我已经设法做到了这一点,但它在接收数据时会短暂暂停。

while True: 
data = sock.recv(1024)
p1.stdin.write(data)

设置从网络连接无限期传输的管道的最佳方法是什么?设置多处理或线程来执行此操作?

谢谢!

最佳答案

播放声音特别棘手 - 人耳对声音播放中的任何中断都很敏感,感知到的质量会很差。此外,您永远无法预测网络中的延迟/抖动/延迟。因此,以下模型是最好的:

  1. 多线程 - 一个线程从网络接收并提交到队列。另一个线程从队列中读取并提交音频数据到声卡。
  2. 有一个可以容纳 1-2 秒数据的 jitter buffer 。 (取决于您的应用程序。如果您正在编写语音聊天应用程序,则缓冲的数据不应超过 150 毫秒)。
  3. 如果此缓冲区中的数据用完,请在开始播放前重新缓冲。播放中的暂时停顿比音频中的持续中断要好。

关于Python 管道从网络套接字接收到 tcp/udp pcm 数据到子进程(aplay),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17055881/

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