Escribe una película de manera eficiente directamente desde np.array usando tuberías

Tengo una matriz 4D numpy de fotogtwigs de la película. Estoy buscando una función para escribirlas en una película, a una velocidad de fotogtwigs determinada. Tengo FFMPEG instalado en mi sistema operativo, y como puedo ver en estas respuestas , la forma más eficiente de hacerlo es a través de tuberías.

Sin embargo, tengo muy poca experiencia en el uso de tuberías, y las explicaciones en el enlace anterior tienen poco sentido para mí. Además, muy pocas de las respuestas parecen en realidad implementar tuberías, y la que utiliza mencoder, no FFMPEG. Soy relativamente inexperto con FFMPEG, así que no estoy seguro de cómo modificar la cadena de comandos de la respuesta de mencoder para que funcione en FFMPEG.

LO QUE ME GUSTARÍA

Una función de la siguiente forma:

animate_np_array (4d_array, framerate) -> output.mp4 (u otro códec de video)

Que implementa tuberías para enviar cuadros uno tras otro a FFMPEG, y que puedo copiar y pegar en mi código existente.

Además, es absolutamente necesario que esta función nunca grafique realmente ninguno de los marcos, ya que las llamadas a la función matplotlib.imshow () (como he visto normalmente utilizada) ralentizan considerablemente las cosas.

La API de ImageIO ofrece una forma sencilla de hacer esto:

import imageio imageio.mimwrite('output_filename.mp4', np_array , fps = [an int]) 

Aunque no estoy seguro de si esto usa tuberías o no, es increíblemente rápido.