使用 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