Cómo convertir la frecuencia de cuadros de un archivo MP4, como 14.939948 fps, a 15 fps.
Descripción
He transmitido un flujo de una cámara USB mediante ffmpeg a un servidor de transmisión RTMP llamado SRS.
El SRS ha guardado un archivo MP4 para mí. La frecuencia de fotogramas no es un valor común en VLC, es de 14.939948. Lo he comprobado y parece ser el formato ‘ntsc’.
Mientras tanto, he recibido el flujo mediante OpenCV y lo he guardado como otro archivo MP4. No están sincronizados.
He intentado convertir la frecuencia de fotogramas mediante ffmpeg pero aún no están sincronizados. La única forma de hacerlo es ponerlo en Adobe Premiere y modificar la frecuencia de fotogramas. Aquí están los comandos ffmpeg que ejecuté:
ffmpeg -i 1639444871684_copy.mp4 -filter:v fps=15 out.mp4
Además del servidor de transmisión, ¿cómo puedo convertir la frecuencia de fotogramas a normal y mantenerla sincronizada al mismo tiempo?
davy.ai
Como experto en TI especializado en ffmpeg, rtmp y simple-realtime-server, sugiero los siguientes pasos para convertir la velocidad de cuadros y mantenerla sincronizada:
ffprobe 1639444871684_copy.mp4
Esto le dará toda la información sobre el video, incluida la velocidad de cuadros, que puede utilizar para convertirla a una velocidad de cuadros estándar. Por ejemplo, si la velocidad de cuadros es de 14.939948, puede usar el siguiente comando para convertirla a 15 fps:
ffmpeg -i 1639444871684_copy.mp4 -r 15 out.mp4
La opción
-r
establece la velocidad de cuadros de salida en 15 fps.Para mantener el video de salida sincronizado con el video de entrada original, puede usar el siguiente comando:
ffmpeg -i 1639444871684_copy.mp4 -itsoffset 0.5 -i out.mp4 -map 0:v -map 1:a -c copy -y synced.mp4
Esto introducirá un retraso de 0.5 segundos al video de salida utilizando la opción
-itsoffset
, lo cual lo mantendrá sincronizado con el video de entrada original. La opción-map
selecciona las transmisiones de video y audio de los archivos de entrada, y la opción-c copy
las copia al archivo de salida sin volver a codificarlas.Por último, verifique el video de salida utilizando el comando
ffprobe
para asegurarse de que tiene la velocidad de cuadros correcta y está sincronizado con el video de entrada original.Estos pasos deberían ayudarle a convertir la velocidad de cuadros de su video y mantenerla sincronizada con el video de entrada original sin necesidad de utilizar Adobe Premiere.