Я пытаюсь транслировать rawVideo (массив numpy) на Twitch, используя Python с ffmpeg в Windows. Но после ~ 100 кадров я просто застреваю.
Мой параметр подпроцесса:
command = [
"ffmpeg.exe",
'-f', 'rawvideo',
'-vcodec','rawvideo',
'-s', '480x640',
'-pix_fmt', 'rgb24',
'-r', '30',
'-i', '-',
'-vcodec', 'libx264',
'-b:v' , '5M',
'-acodec', 'aac',
'-b:a', '256k',
'-r','30',
'-f', 'flv', 'rtmp://live-fra.twitch.tv/app/%removed for stackoverflow%'
]
[...]
pipe = subprocess.Popen( command, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
Отправка фреймов:
frames = 0
frame = np.zeros((480, 640, 3))
#print(pipe,dir(pipe))
while 1:
try:
pipe.stdin.write(frame.tobytes()) # < gets stuck here after ~100 frames
frames += 1
print("frame_send", frames)
except Exception as e:
out, ffmpeg_error = pipe.communicate()
print("error:" , ffmpeg_error , e , out )
break
time.sleep( 1 / 30 )
Не было ошибок, он просто застрял в "pipe.stdin.write (frame.tobytes ())"