如何在Python中同时录制音频和视频?

时间:2019-07-21 07:28:13

标签: python audio video multiprocessing

我需要使用Python记录和保存视频及其相应的音频。我可以单独执行此操作(先保存音频,然后保存视频),但不会同时发生。

当然,我考虑过使用多处理,但这仍然行不通

p1 = Process(target=listen_to_speaker())
p1.start()
# needs to run at the same time as
p2 = Process(target=record_save())
p2.start()

在这里

listen_to_speaker()记录音频并将其保存在.wav文件中(还使用speech_recognition模块存储该音频的文本转换)。

record_save()使用OpenCV记录网络摄像头中的视频并将其存储在.avi文件中

当前,将录制并保存音频,然后打开网络摄像头以录制视频。

我还尝试添加:

p1.join()
p2.join()

事情发生的方式没有改变。

我的预期结果是2个文件,一个视频和一个音频,它们彼此对应。

1 个答案:

答案 0 :(得分:0)

target=需要不带()且不带参数的函数名称。称为“回调”。

p1 = Process(target=listen_to_speaker)

p2 = Process(target=record_save)

如果必须运行带有参数的函数,则可以将它们作为元组分配给args

p1 = Process(target=listen_to_speaker, args=(arg1,arg2) )

p2 = Process(target=record_save, args=(arg1,arg2) )

如果函数只需要一个参数,那么您仍然必须使用元组args=(arg1,)


您当前的代码与此代码相似

result1 = listen_to_speaker()
result2 = record_save()

p1 = Process(target=result1)
p1.start()

p2 = Process(target=result2)
p2.start()

因此您可以在主线程中运行函数,并使用函数结果启动进程。

如果它们什么也不返回,那么您有target=None,因此进程甚至无法启动