En mi aplicación, el usuario puede buscar una posición específica (media.currentPosition), luego presionar el botón Guardar, la imagen se exportará, aquí está mi comando ffmpeg que estoy usando para lograr esto:
"-i",Video.mp4,"-filter_complex","[1:v][0:v]scale2ref=iw:ih[ovr][base];[ovr]colorchannelmixer=aa=0.7[ovrl];[base][ovrl]overlay[v]","-map","[v]","-ss",GetPositionInVideo,"-vframes","1","-q:v","2", "-preset", "ultrafast",directoryToStore+"/"+"Image.jpg"};
Es una aplicación de Android, por lo que es así en una matriz de cadenas. El comando funciona perfectamente PERO tarda una eternidad en completarse.
En mi registro mostrará esto repetidamente:
[Progress]: frame= 0 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed= 0x
hasta que se alcanza el marco, entonces muestra esto:
[Progress]: frame= 1 fps=0.0 q=2.0 Lsize=N/A time=00:00:00.04 bitrate=N/A speed=0.00151x
luego termina instantáneamente.
Entonces, lo que creo que está sucediendo es que ffmpeg procesa cada fotograma hasta que alcanza el fotograma deseado y luego lo procesa.
Mi pregunta:
¿Hay alguna manera de aumentar la velocidad / tiempo de procesamiento de exportar un solo cuadro de un video a una imagen? - ¿Quizás omitiendo los cuadros no deseados e ir directamente al cuadro que el usuario quiere exportar?
-ss
antes-i
? ¿Y dónde debería-to
estar entonces?-ss
antes-i
y-to
después-i
. Tenga en cuenta que la semántica de-to
/-t
cambia según cómo lo busque. Ver aquí: trac.ffmpeg.org/wiki/Seeking#Notes-to
por alguna razón me ignoran. Estoy usando un video y una imagen como entrada. ¿Debo hacer una nueva pregunta?