在python中使用mplayer从WebSocket播放音频延迟了4到5秒

在python中使用mplayer从WebSocket播放音频延迟了4到5秒,python,websocket,pipe,delay,mplayer,Python,Websocket,Pipe,Delay,Mplayer,我在另一个进程上启动mplayer cmdline = ['mplayer', '-noconsolecontrols', '-nocache', '-'] player = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stderr=subprocess.PIPE) 我从websocket接收音频数据,并通过写入进程的stdin将音频数据馈送到mplayer: player.stdin

我在另一个进程上启动mplayer

cmdline = ['mplayer', '-noconsolecontrols', '-nocache', '-']

player = subprocess.Popen(cmdline, stdin=subprocess.PIPE, 
                          stderr=subprocess.PIPE)
我从websocket接收音频数据,并通过写入进程的stdin将音频数据馈送到mplayer:

player.stdin.write(audiodata)
它可以工作,但音频延迟4到5秒。我很确定是mplayer造成了延迟,因为我可以看到mplayer不会立即播放音频,而是等到它收到相当多的音频数据。我已经关闭了缓存,所以我怀疑mplayer在解码之前还需要一定数量的数据

这些代码是用python编写的,并在Ubunbtu上运行。 我想知道我是否可以让mplayer在收到音频后立即播放它


非常感谢

请在编写之后立即添加
player.stdin.flush()
。这有帮助吗?我确实尝试过刷新,还尝试过在每个接收到的音频数据末尾添加“\n”,但这些都不起作用。