Soy nuevo en StackOverflow. Y no sé cómo estructurar la pregunta correctamente.
Estoy intentando crear un servidor de transmisión de medios para mi proyecto donde una cámara Raspberry transmitirá al servidor nginx rtmp y mi computadora periódicamente creará fragmentos de las transmisiones y las guardará como .h264
.
Este es mi comando ffmpeg ejecutándose picamera
(estoy usando python 2.7 y la biblioteca picamera).
cmdline = ['ffmpeg', '-i','-','-vcodec','copy','-crf','30','-maxrate','2M','-bufsize',' 1M','-an', '-f','flv', Cam_URL]
logger.debug("Starting the streaming process to server")
rtmpstream = subprocess.Popen(cmdline, stdin=subprocess.PIPE)
try:
camera.framerate = 24
camera.resolution = (1280, 720)
camera.brightness = int(config_hash['Brightness'])
camera.rotation = int(config_hash['Rotation'])
camera.iso = int(config_hash['ISO'])
camera.sharpness = int(config_hash['Sharpness'])
camera.start_recording(rtmpstream.stdin, quality = 20,bitrate = 0, format = 'h264')
ffmpeg
en mi maquina:
ffmpeg -i (media server url) -vcodec copy -maxrate 2M -bufsize 1M qwertyuip.h264
La tasa de bits en pi se mantiene constante en alrededor de 2 Mbits antes de grabar, pero cuando empiezo a grabar en mi PC, la tasa de bits en pi aumenta como loca a 11000 kbits. Esto está consumiendo todo mi ancho de banda.
¿Puedes ayudarme a mantener una tasa de bits casi constante?
Respuesta1
Las opciones -vcodec copy
y -maxrate 2M
son mutuamente excluyentes: si la transmisión se copia (no se recodifica), ffmpeg no tiene influencia sobre la velocidad de datos (aparte del relleno), por lo que la velocidad de datos generada por su cámara será la velocidad de datos que transmite ffmpeg.
Tienes dos opciones:
- Vuelva a codificar el video (como
-c:v h264 -b:v 2M
), pero dudo que RasPi tenga suficiente potencia para hacerlo mientras ejecuta el servidor de la cámara también. - Haga que el servidor de su cámara produzca una velocidad de salida adecuada. Esta es la forma en que abordaría el problema, en primer lugar observando qué opciones de salida y configuraciones permite.