使用 python 直播麦克风并在网络浏览器或通过 android 媒体播放器播放
Live stream microphone using python and play it on a web browser or through android media player
我对python不是很熟悉。
我的目标是使用 python 流式传输麦克风音频并在 android 应用程序上接收和播放它。
经过数小时的搜索后,我发现了一些 python 代码使用套接字执行此操作并且可以正常工作,但我无法找到有关如何在 android 应用程序上捕获该流的任何教程一边玩吧。
这是套接字流代码之一:
import pyaudio
import socket
import select
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 4096
audio = pyaudio.PyAudio()
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('', 4444))
serversocket.listen(5)
def callback(in_data, frame_count, time_info, status):
for s in read_list[1:]:
s.send(in_data)
return (None, pyaudio.paContinue)
# start Recording
stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK, stream_callback=callback)
# stream.start_stream()
read_list = [serversocket]
print ("recording...")
try:
while True:
readable, writable, errored = select.select(read_list, [], [])
for s in readable:
if s is serversocket:
(clientsocket, address) = serversocket.accept()
read_list.append(clientsocket)
print ("Connection from"), address
else:
data = s.recv(1024)
if not data:
read_list.remove(s)
except KeyboardInterrupt:
pass
print ("finished recording")
serversocket.close()
# stop Recording
stream.stop_stream()
stream.close()
audio.terminate()
我的问题是我想获得一个流 url,其末尾有一个输出文件,例如:
http://192.168.1.3:4444/out.mp3
使用 vlc cli 我可以轻松做到:
cvlc -vvv alsa://plughw:1 --sout '#transcode{acodec=mp3,ab=16,channels=1,scodec=none}:standard{access=http,dst=0.0.0.0:8888/out.mp3}'
但出于某种原因我确实想使用 vlc,但不知道如何在 python 上实现。
您可以使用 os 模块中的 os.system('insert command here')
。它将在系统终端执行参数。
您可以 运行 使用您的 python 脚本
cvlc
我对python不是很熟悉。 我的目标是使用 python 流式传输麦克风音频并在 android 应用程序上接收和播放它。
经过数小时的搜索后,我发现了一些 python 代码使用套接字执行此操作并且可以正常工作,但我无法找到有关如何在 android 应用程序上捕获该流的任何教程一边玩吧。 这是套接字流代码之一:
import pyaudio
import socket
import select
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 4096
audio = pyaudio.PyAudio()
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('', 4444))
serversocket.listen(5)
def callback(in_data, frame_count, time_info, status):
for s in read_list[1:]:
s.send(in_data)
return (None, pyaudio.paContinue)
# start Recording
stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK, stream_callback=callback)
# stream.start_stream()
read_list = [serversocket]
print ("recording...")
try:
while True:
readable, writable, errored = select.select(read_list, [], [])
for s in readable:
if s is serversocket:
(clientsocket, address) = serversocket.accept()
read_list.append(clientsocket)
print ("Connection from"), address
else:
data = s.recv(1024)
if not data:
read_list.remove(s)
except KeyboardInterrupt:
pass
print ("finished recording")
serversocket.close()
# stop Recording
stream.stop_stream()
stream.close()
audio.terminate()
我的问题是我想获得一个流 url,其末尾有一个输出文件,例如: http://192.168.1.3:4444/out.mp3
使用 vlc cli 我可以轻松做到:
cvlc -vvv alsa://plughw:1 --sout '#transcode{acodec=mp3,ab=16,channels=1,scodec=none}:standard{access=http,dst=0.0.0.0:8888/out.mp3}'
但出于某种原因我确实想使用 vlc,但不知道如何在 python 上实现。
您可以使用 os 模块中的 os.system('insert command here')
。它将在系统终端执行参数。
您可以 运行 使用您的 python 脚本
cvlc