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.

Fusionando videos planos en un video 360 utilizando ffmpeg.

Tengo un equipo de varias cámaras casero; me gustaría usarlo para crear videos de 360 grados usando ffmpeg. Puedo obtener un video individual en la proyección equirectangular correcta, pero no puedo hacerlo con todos los videos.

Puedo usar ffmpeg y v360 para convertir un solo video y colocarlo en la orientación correcta en el marco con este comando.

ffmpeg -i 1.mp4 -vf v360=output=equirect:input=flat:h_fov=60:v_fov=47.5:yaw=60 -t 2 out.mp4

Sin embargo, no puedo alimentar múltiples videos de entrada correctamente a v360 y hacer que aparezcan en el mismo video de salida.

He intentado usar filter_complex y luego apilarlos horizontalmente, pero no se fusionan los videos, solo crea 2 videos equirectangulares separados.

ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex '[0:v]v360=output=equirect:input=flat:h_fov=60:v_fov=47.5:yaw=60[first]; [1:v]v360=output=equirect:input=flat:h_fov=60:v_fov=47.5:[second]; [second][first]hstack[out]' -map "[out]" -t 2 out.mp4

El superposición tampoco funciona, ya que los videos de salida de v360 no son transparentes en las partes de la imagen sin video. Solo obtengo un solo video de entrada en la salida.

ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex '[0:v]v360=output=equirect:input=flat:h_fov=60:v_fov=47.5:yaw=60[first]; [1:v]v360=output=equirect:input=flat:h_fov=60:v_fov=47.5:[second]; [second][first]overlay[out]' -map "[out]" -t 2 out.mp4

¿Existe alguna forma de alimentar varios videos de entrada a un filtro v360 equirectangular único? ¿O alguna forma de hacer que la salida vacía de v360 sea transparente, para poder superponer los videos de salida usando múltiples llamadas a v360, con los parámetros yaw apropiados?

¡Gracias de antemano!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hasta donde sé, no es posible alimentar varios videos de entrada directamente a un filtro v360 de formato equirectangular. Sin embargo, puedes lograr el resultado deseado dividiendo los videos de entrada, aplicando el filtro v360 a cada uno por separado y luego fusionándolos nuevamente usando el filtro de superposición.

    Aquí tienes un ejemplo de comando que debería funcionar:

    ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex "[0:v]split=2[in1][in2]; [in1]v360=output=equirect:input=flat:h_fov=60:v_fov=47.5:yaw=60[first]; [in2]v360=output=equirect:input=flat:h_fov=60:v_fov=47.5:yaw=60[second]; [first][second]overlay[out]" -map "[out]" -t 2 out.mp4

    Este comando divide el primer video de entrada en dos flujos, aplica el filtro v360 a cada uno de ellos por separado y luego los fusiona nuevamente utilizando el filtro de superposición. Lo mismo se hace para el segundo video de entrada. Finalmente, los dos videos equirectangulares resultantes se superponen utilizando el filtro de superposición para producir el resultado deseado.

    En cuanto a hacer que la salida vacía de v360 sea transparente, podrías intentar utilizar el filtro alphaextract para extraer el canal alfa del video equirectangular y luego aplicar el filtro alpha para hacer transparentes las partes vacías. Aquí tienes un ejemplo de comando:

    ffmpeg -i 1.mp4 -vf v360=output=equirect:input=flat:h_fov=60:v_fov=47.5:yaw=60 -filter_complex "[0:v]alphaextract[alpha]; [alpha]alpha=0.5[alphachannel]; [0:v][alphachannel]alphamerge[out]" -map "[out]" -t 2 out.mp4

    Este comando aplica el filtro v360 al video de entrada para producir un video equirectangular. Se utiliza el filtro alphaextract para extraer el canal alfa del video equirectangular y luego se utiliza el filtro alpha para establecer el canal alfa en 0.5, haciendo que las partes vacías del video sean semitransparentes. Por último, se utiliza el filtro alphamerge para fusionar el canal alfa modificado de nuevo en el video original, haciendo que las partes vacías sean transparentes.

    Espero que esto te sea útil. Avísame si tienes alguna pregunta adicional.

Comments are closed.