Estoy grabando video de Pi usando Camera Module con picamera:
import picamera
with picamera.PiCamera() as camera:
camera.resolution = (640, 480)
camera.start_recording('1.h264')
camera.wait_recording(5)
for i in range(2, 11):
camera.split_recording('%d.h264' % i)
camera.wait_recording(5)
camera.stop_recording()
Por separado, he usado una combinación de raspividy gstreamerpara transmitir video desde pi sin demora. ¿Hay alguna manera de almacenar y transmitir secuencias usando Python simultáneamente ?
Mi opinión es que debe haber una manera de usar la cámara como entrada y crear dos fuentes de salida: un video de 720p para almacenamiento y un video de 240p reducido para transmitir usando gstreamer ...
streaming-video
koogee
fuente
fuente

raspivid, podríateeenviar la salida a un archivo y gstreamer o cualquier otra cosa (verman tee). Siempre y cuando una transmisión sea directa al disco, no agregará mucha sobrecarga, pero si desea procesar la entrada en dos formatos diferentes simultáneamente, creo que será demasiado trabajo para el pi.Respuestas:
El
teecomando lee de entrada estándar y copia a cualquier número de archivos más salida estándar por defecto, veaman teepara más detalles. Esto significa que puede pedirle a tee que cree un archivo a partir de la entrada y luego canalice la salida a otra cosa.La adición de una tubería adicional en teoría agrega un poco de ineficiencia. En cuanto a si esto es significativo o no, tendrá que juzgar por sí mismo utilizando su propio método de transmisión. Mi método actual no es satisfactorio a plena resolución. No es un gran interés en este momento, pero cuando lo sea, intentaré encontrar algo mejor (por ejemplo, supuestamente gstreamer funciona mejor que clvc).
Sin embargo, vale la pena señalar que el archivo guardado localmente en el pi al mismo tiempo es de calidad perfecta, por lo que la actividad no interfiere con raspivid. Aquí hay un ejemplo:
Rompí esto en dos líneas para facilitar la lectura; puede presionar return after
|(pipe) y finalizar el comando tal como puede romper una línea\. Puedes reemplazarlocvlccon lo que quieras. Una vez más, aunque el flujo era de baja calidad,test_video.h264salió perfecto.Si bajo la resolución a 640x360, esta disposición está bien, con un segundo o dos de latencia, que es lo que normalmente obtengo. No creo que la
teesegunda tubería haga alguna diferencia en la calidad de la transmisión; Estos son capaces de un rendimiento mucho mayor que el necesario aquí y no requieren mucho en cuanto a recursos del sistema.La CPU funcionó al 35-45%, que es lo mismo que cuando se transmite video sin
tee.fuente
record_sequenceque toma unsplitter_portparámetro. También hay un ejemplo de grabación de hasta 4 salidas simultáneas desde la cámara.No hay nada de malo en la respuesta anterior de Ricitos de Oro, pero aquí hay otra que trata específicamente con la API de picamera. Puede usar una salida personalizada para realizar dicha división (tantas formas como desee) y enviar la salida a una variedad de destinos. En su caso, si desea grabar en un archivo y un socket, puede hacer algo como esto:
fuente