2011-12-17 19 views
10

Al usar ffmpeg para generar una serie de marcos como imágenes, the only format I can find documentation for es frame_%d.jpg. El identificador %d se reemplaza por el recuento de cuadros secuenciales.ffmpeg filename formato de salida

¿Hay otros parámetros que pueda usar en el formato de archivo de salida? Específicamente, necesito la capacidad de agregar la marca de tiempo del marco específico.

+0

Tomando esto en cuenta con ffmpeg-dev - http://ffmpeg.org/pipermail/ffmpeg-devel/2011-December/117790.html –

Respuesta

5

Resulta que este comportamiento no se puso en práctica en el momento.

Implementé una versión inicial del soporte %t en mi fork de FFmpeg (https://github.com/yuvadm/FFmpeg), y actualmente estoy trabajando en la limpieza del parche para que pueda fusionarse en sentido ascendente.

+2

¿Alguna vez envió esto al proyecto principal? Hay una [solicitud abierta de 3 años de antigüedad] (https://trac.ffmpeg.org/ticket/1452) (que encontré al intentar hacer esto yo mismo). –

+0

@YuvalAdam eche un vistazo a [su repositorio ffmpeg en github] (https://github.com/yuvadm/FFmpeg/commit/e1524dda42c9056f393a0ec0eb494d5dc31e2b1e#commitcomment-19635439). :) – Florida

3

The strftime option le permite expandir el nombre de archivo con información de fecha y hora. Compruebe the documentation of the strftime() function para la sintaxis.

Por ejemplo para generar archivos de imagen desde el strftime() %Y-%m-%d_%H-%M-%S patrón, el siguiente comando ffmpeg puede usarse:

ffmpeg -f v4l2 -r 1 -i /dev/video0 -f image2 -strftime 1 "%Y-%m-%d_%H-%M-%S.jpg" 
+2

Por lo que yo entiendo, esto mostrará la hora y fecha reales, mientras que mi requisito es el tiempo de ejecución del video. –

+0

Desafortunadamente solo la "segunda" granularidad (le da tiempo al reloj de pared) pero funciona ... – rogerdpack

+0

Para aquellos de nosotros en Ubuntu 14 que forzaron a usar avconv la opción strftime no está disponible para la segmentación. No pude encontrar una solución, pero pude instalar FFMPEG en ubuntu 14 haciendo 'sudo add-apt-repository ppa: mc3man/trusty-media' ' sudo apt-get update' 'sudo apt-get dist -upgrade' 'sudo apt-get install ffmpeg' – Tycon

1

Pirateé un script bash que crea nombres de archivo basado en el tiempo en la película. Utiliza un formato: "hh_mm_ss" en el nombre del archivo. Se puede ver en:

https://github.com/pozar/makemoviethumbs

+0

parece requerir la velocidad de fotogramas "constante", que por desgracia no tengo: | – rogerdpack

0

Otra opción que tendría sería la de ejecutar ffprobe -show_packets en él, y utilizar esos datos para "inferir" la marca de tiempo de cada archivo jpg generada (suponiendo que se genera uno por cada cuadro de video entrante). ¡Ay!

0

Por número de fotogramas puede utilizar el informe con el modo de depuración especial:

FFREPORT=file=\'file.log\':level=48 && ffmpeg ... -vf select=eq(pict_type\,PICT_TYPE_I) -vsync vfr -f image2 OUTPUT 

a continuación, puede coincidir con el nombre con preg_match_all:

preg_match_all("/] n:(\\d+)\\.[^>]+pict_type:I/Us",$log,$m,PREG_PATTERN_ORDER,5000); 
$frames=$m[1]; 

disfrutan por favor!

+1

Debe formatear su código como código. –

Cuestiones relacionadas