源码
# 推流参数
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) # 视频流的参数
sizeStr = str(size[0]) + 'x' + str(size[1])
fps = cap.get(cv2.CAP_PROP_FPS) # 30p/self
fps = int(fps)
print('-------%d'%fps)
rtmpUrl = 'rtmp://localhost/videotest/pigtrace'
command = ['ffmpeg',
'-y',
# '-c', 'copy', # copy图像的质量会更好
'-thread_queue_size', '512',
'-f', 'rawvideo',
'-vcodec','rawvideo',
'-pix_fmt', 'bgr24',
'-s', sizeStr,
'-r', str(fps),
'-i', '-',
'-c:v', 'libx264',
'-pix_fmt', 'yuv420p',
'-preset', 'ultrafast',
'-f', 'flv',
rtmpUrl]
pipe_push = sp.Popen(command, stdin=sp.PIPE, shell=False)
原因
ffmpeg的fps用的是源视频流的fps,而现在处理之后的速度达不到10fps,于是将fps改下就可以了。
解决
fps = 5