es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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:

    1. Primero, determine la velocidad de cuadros del video de entrada utilizando el siguiente comando:

      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.

    2. 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.

    3. 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.

Comments are closed.