Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Android,按原样播放音频';正在从套接字服务器接收_Python_Android_Sockets_Audio_Pyjnius - Fatal编程技术网

Python Android,按原样播放音频';正在从套接字服务器接收

Python Android,按原样播放音频';正在从套接字服务器接收,python,android,sockets,audio,pyjnius,Python,Android,Sockets,Audio,Pyjnius,我正在尝试播放一个通过Android live上的Socket服务器发送的.wav文件 当我使用pyaudio时,以下解决方案适用于Linux: Client.py p=pyaudio.pyaudio() 区块=1024 格式=pyaudio.paInt16 通道=2 费率=44100 流=p.open(格式=格式, 频道=频道, 比率=比率, 输出=真, 帧(每帧缓冲区=块) 尽管如此: res=self.ClientSocket.recv(1024).decode() sys.stdout.

我正在尝试播放一个通过Android live上的Socket服务器发送的
.wav
文件

当我使用
pyaudio
时,以下解决方案适用于Linux:

Client.py

p=pyaudio.pyaudio()
区块=1024
格式=pyaudio.paInt16
通道=2
费率=44100
流=p.open(格式=格式,
频道=频道,
比率=比率,
输出=真,
帧(每帧缓冲区=块)
尽管如此:
res=self.ClientSocket.recv(1024).decode()
sys.stdout.flush()
data=“1”
而数据!="":
audio_bytes=self.ClientSocket.recv(1024)
流写入(音频字节)
stream.stop_stream()
stream.close()
p、 终止()
Server.py

类流_线程(线程):
def init(自身、连接、ip、端口、文件名、线程id):
Thread.init(self)
self.conn=conn
self.ip=ip
self.port=端口
self.filename=文件名
self.thread\u id=线程\u id
印刷品(
f“[]-连接到{self.ip}:{self.port}\tID:{self.thread_id}”)
印刷品(
f“[+]-蒸汽线程成功连接到{self.ip}:{str(self.port)}\tID:{self.thread_id}”)
def运行(自):
wf=wave.open(self.filename,“rb”)
p=pyaudio.pyaudio()
区块=1024
格式=pyaudio.paInt16
通道=2
费率=44100
流=p.open(格式=格式,
频道=频道,
比率=比率,
输出=真,
帧(每帧缓冲区=块)
数据=1
而数据:
数据=wf.readframes(块)
尝试:
self.conn.send(数据)
除:
打破
我很抱歉没有一个可复制的例子

我的问题是,你不能在android上使用
pyaudio
,因此上述解决方案(在桌面上工作)在移动设备上无法工作

职位,例如: 我已经给了我希望,我可以使用
jnius
:(下面的代码来自:)

来自jnius导入自动类
MediaPlayer=autoclass('android.media.MediaPlayer'))
AudioManager=autoclass('android.media.AudioManager')
self.sound=MediaPlayer()
self.sound.setDataSource(yourDataSource)#您可以提供任何数据源,如果在设备上,则提供文件路径,如果在线播放,则提供其url
self.sound.prepare()
self.sound.setLooping(False)#如果要循环,可以将其设置为true
self.sound.start()
#您也可以根据需要使用以下产品
#self.sound.pause()
#self.sound.stop()
#self.sound.release()
#self.sound.getCurrentPosition()
#self.sound.getDuration()
我想,如果我提供了一个文件路径或某个音频文件的URL,那么我应该在
self.sound.setDataSource(yourDataSource)
中放入什么来播放“字节”,但我需要的是播放发送到该设备的“字节”