gpt4 book ai didi

python - 如何从无尽的音频流中获取和划分音频

转载 作者:行者123 更新时间:2023-12-04 23:09:53 24 4
gpt4 key购买 nike

首先,我有一个无尽的摄像头流,其中包括音频和视频。
如何在流式传输时根据 RTSP 流式传输的时间间隔获取分割的 .wav 文件。
I want to
我已经尝试了下面的代码,但在流结束之前我无法获取音频数据

command = ['ffmpeg.exe',
'-i', 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4',
'-f', 's16le',
'-acodec', 'libmp3lame',
'-ar', '44100',
'-ac', '2',
'-']

pipe = sp.Popen(command, stdout=sp.PIPE)

raw_audio = self.pipe.stdout.read()
print(raw_audio)

最佳答案

试试 -f segment 输出容器。就像是:

command = ['ffmpeg.exe',
"-i", r"rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4",
'-vn', '-acodec', 'pcm_s16le', '-ar', '44100', '-ac', '2',
"-f", "segment", '-segment_time','3','out%03d.wav']
)
现在,如果您真正需要的是原始样本而不一定是 .wav 文件,您需要通过删除 '-acodec', 'libmp3lame' 来修复您的命令。选项并指定要读取的样本数:
# how to read a block of audio data from stdout
n = 44100 * 3 # # of samples (sampling rate * duration)
nbytes = n * 2 * 2 # (#samples * #ch * 2 bytes/sample)
while True:
raw_audio = np.frombuffer(self.pipe.stdout.read(nread),shape=(n,2), dtype=np.int16)

... # do your thing

关于python - 如何从无尽的音频流中获取和划分音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72044065/

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