推荐 最新
中年复健狗

python subprocess启动多个ffmpeg shell?

我需要依次调用三次subprocess. 发现最后一个没有执行? 在流媒体服务器的控制台上只能看到: aac和mp4的rtmp信息, 看不到live的rtmp连接 参考代码: if __name__ == "__main__": device: str = "cuda:0" if torch.cuda.is_available() else "cpu" model, tokenizer = loadModel(device=device) # # 音频(aac) # audioProcess = sp.Popen(["ffmpeg", "-f", "s16le", '-y', '-vn', "-ac", "1", "-ar", "16000", "-channel_layout", "mono", '-acodec','pcm_s16le', "-i", "pipe:", "-ar", "44100", "-f", "flv", rtmpAURL], stdin=sp.PIPE) # # 视频(mp4) # vedioProcess = sp.Popen(["ffmpeg", "-re", '-y', '-an', '-rtbufsize', '1024M', "-f", "dshow", "-i", "video=Q8 HD Webcam", "-pix_fmt", "yuvj420p", "-framerate", "25", '-vcodec', 'libx264', '-preset', 'fast', '-crf', '25', "-vf", "scale=640:480", "-f", "flv", rtmpVURL], shell=True) # #https://stackoverflow.com/questions/18618191/ffmpeg-merge-multiple-rtmp-stream-inputs-to-a-single-rtmp-output #ffmpeg -i rtmp://ip:1935/live/micMyStream7 -i rtmp://ip:1935/live/MyStream7 -filter_complex "[0:a][1:a]amix[a]" -map 0:v -map "[a]" -c:v copy -f flv rtmp://ip:1935/live/bcove7 # # 合并(live) # mergeVAP = sp.Popen(["ffmpeg", "-i", rtmpAURL, "-i", rtmpVURL, "-c:v", "copy", "-c:a", "aac", "-preset", "veryfast", "-f", "flv", "-flvflags", "no_duration_filesize", rtmpURL], shell=True, stderr=True) writeAudioThead = Thread(target=soundRecorder, args=(model, device, tokenizer, audioProcess)) writeAudioThead.start() writeAudioThead.join() audioProcess.wait() vedioProcess.wait() mergeVAP.wait() 问题1:这三个是串行执行的. 如何让他们异步执行 问题2: 上面的示例串行执行, 为什么 mergeVAP没有执行.在命令行上执行是可以执行的

0
1
0
浏览量170