Marcas de agua FFmpeg fuera de lugar

Estoy tratando de agregar una marca de agua de un ícono (una flecha que apunta hacia la derecha) en la esquina superior derecha de dos videos diferentes usando FFmpeg. Ambos videos tienen la misma resolución (1280x720) y uso el mismo comando para agregar el ícono En un video, el ícono aparece en el lugar correcto, sin embargo, en el otro video, el ícono aparece en la esquina inferior derecha.

¿Alguien ha encontrado el mismo problema?

Captura de pantalla de marcas de agua correctas y fuera de lugar

Respuestas (1)

La imagen de la izquierda es un video de retrato almacenado como paisaje pero con una etiqueta de rotación. Por lo tanto, las coordenadas de la imagen superpuesta surten efecto con referencia a la representación almacenada. Para tales casos, debe rotar el video de antemano 1) agregando el filtro de transposición antes de la superposición 2) deshabilitando la rotación automática en el video de entrada * y 3) restableciendo manualmente la etiqueta de rotación en la salida, por ejemplo

ffmpeg -noautorotate -i input.mp4 -i arrow.png -filter_complex "[0]transpose=1[bg];[bg][1]overlay=X:Y" -metadata:s:v rotate=0 out.mp4

*no es necesario si su ffmpeg es de abril de 2015 o anterior.


Para verificar la etiqueta de rotación de un video, puede ejecutar

ffprobe input.mp4 -show_entries stream_tags=rotate -v 0 -of compact=p=0:nk=1

Obtendrá un valor de ángulo. Si es 90, use transpose=1. Si es 270, usatranspose=2

No tengo suficiente representante para escribir un comentario directamente, gracias de todos modos. Sin embargo, cuando ejecuto "ffprobe -input.mp4 -show_entries stream_tags=rotate -v 0 -of compact=p=0:nk=1" , mi registro imprime que "Error en la validación del comando. No hay barras en la ruta de salida: compact=p=0:nk=1 no es válido". No sé cuál es el problema, ¿puede señalarlo a ¿a mí?
Parece que estás en Android y estás usando un contenedor. Debe preguntar en Stack Overflow cómo ejecutar el comando en Android.