¿Cómo grabar la marca de tiempo en un video?

Quiero grabar la marca de tiempo de los metadatos del video en el video.

Estoy teniendo grandes dificultades para encontrar una buena herramienta que haga eso.

¿Existe alguna herramienta de edición de video que permita insertar una marca de tiempo y cambiar la fuente?

Estoy editando videos HD.

¿También hay alguna herramienta que permita cambiar la marca de tiempo en los metadatos para su corrección?

no sé si stackexchange le notificará sobre mi comentario sobre mi respuesta, que en su mayoría lo reescribí. Bueno, de todos modos, apestaba, así que lo hice. Comentando aquí porque sé que aparecerá una notificación para ti.

Respuestas (4)

El filtro de FFmpeg drawtextpuede grabar códigos de tiempo en fotogramas.

editar: leí mal los documentos antes. Vi la timecodeopción al filtro, y se me pasó ver que había una ptsdisponible para expansión de texto. Consulte el historial de edición para obtener la respuesta más larga y menos útil.

Eventualmente pude probarlo, y aquí está la línea de comando que improvisé al pegar y ajustar algunos ejemplos:

ffmpeg -i /f/p/moto-g\ camera/VID_20141225_140557099.mp4 -filter_complex "drawtext=fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='frame %{n}\\: %{pict_type}\\: pts=%{pts \\: hms}': x=100: y=50: fontsize=24: fontcolor=yellow@0.8: box=1: boxcolor=blue@0.9" -c:a copy -c:v libx264 -preset veryfast -crf 16 -x264-params keyint=60 -map 0 foo.mkv

Tenga en cuenta que el texto real que se imprimirá necesita muchos escapes, para protegerlo del shell, luego del arg-to- de ffmpeg drawtext. Para modificarlo, cambie la text='frame %{n}\\: %{pict_type}\\: pts=%{pts \\: hms}'parte de ese comando ffmpeg.

salida de ejemplo: "trama 0: I: pts=00:00:00.0000" (I/B/P son tipos de trama, de %{pict_type}.)

Modificar xy yponerlo en otro lugar del marco. (puede usar x=iw/2para ponerlo horizontalmente en el medio. iw= ancho de entrada. (anclaje = esquina superior izquierda del texto, ¿creo?)) Modifique otros parámetros para cambiar colores o lo que sea.

Esto funciona incluso con video VFR. Lo verifiqué con el video de la cámara en un teléfono Moto G, que produce video con velocidad de fotogramas variable. El primer segundo tiene 30 fotogramas. Un intervalo posterior de 1 segundo en el video tiene 17 fotogramas. (Adentro, no muy bien iluminado, así que creo que es menor FPS para obtener más luz, no porque no pueda escribir en el almacenamiento flash lo suficientemente rápido). Las marcas de tiempo que pone en el contenedor MP4 son correctas, por lo que funciona bien.

Los parámetros de codificación -c:a copy -c:v libx264 -preset faster -crf 16 -x264-params keyint=60son mi sugerencia de lo que podría desear para los archivos borradores con marcas de tiempo grabadas: solo quiere que se codifique rápido y no le importa mucho el tamaño del archivo, ya que solo lo usará localmente, ya que tiene marcas de tiempo garabateado por todas partes. (Incluso hay un superrápido. Sin embargo, no use ultrarrápido, excepto el modo sin pérdidas).

keyint=60se asegurará de que haya un cuadro I al menos cada 60 cuadros, para un fregado eficiente. Déjalo fuera si no necesitas poder retroceder de manera eficiente; bájalo si quieres que la búsqueda de alta resolución sea más rápida.

Úselo -map 0si desea copiar múltiples flujos de audio y metadatos en la salida, en lugar de solo las primeras pistas de audio y video (y no, por ejemplo, metadatos de capítulos).

básicamente rehice mi respuesta, porque leí mal los documentos la primera vez. >.< Resulta que ffmpeg puede grabar marcas de tiempo sin necesidad de que le digan el FPS o algo estúpido como ese.
Gracias @peter-cordes. FFmpeg se ve increíble: acabo de visitar su sitio web. Pero parece bastante complejo y requiere mucha codificación pura: S
Heh, se necesitó mucha codificación para escribir, pero usarlo es, en lo más simple, solo una cuestión de encontrar una receta y luego usarla en diferentes archivos de entrada. En Mac, Windows o GNU/Linux, puede configurar algo que le permita arrastrar un archivo a una secuencia de comandos, de modo que la secuencia de comandos ejecute ffmpeg en su archivo, creando un nuevo nombre de archivo de salida in_name-timestamped.mp4o algo así. Sin embargo, probablemente sea más fácil hacerlo desde la herramienta de edición que ya usa, si formatea las marcas de tiempo de la manera que desee.
¿Captura de pantalla por favor?
En Windows, si coloca un acceso directo a un .bat en su escritorio, al arrastrar un archivo se ejecutará el .bat con el archivo arrastrado como un argumento de línea de comando. Entonces escribe un archivo bat que usa %1como entrada y timestamped-%1como salida. En GNU/Linux, coloca su comando en un script de shell y lo usa desde la línea de comando usted mismo, o crea un .desktoparchivo que le permite enviarle archivos desde un explorador de archivos gráfico. Supongo que algo similar es posible en OS X.
Fui a aprender un poco sobre el ffmpeg y la instalación. ¡Ahora sé algunas cosas básicas! @PeterCordes
Uso Windows, así que cambié la ubicación de la fuente a esto: ffmpeg -i in.mts -filter_complex "drawtext=fontfile=/Windows/Fonts/arial.ttf: text='frame %{n}\\: %{pict_type}\ \: pts=%{pts \\: hms}': x=100: y=50: fontsize=24: fontcolor=amarillo@0.8: caja=1: cajacolor=azul@0.9" -c:una copia -c: v libx264 -preestablecido muy rápido -crf 16 -x264-params keyint=60 -mapa 0 out3.avi
Pero recibí este error: [Parsed_drawtext_0 @ 03ba4060] Opción 'pts' no encontrada [AVFilterGraph @ 03d8b8a0] Error al inicializar el filtro 'drawtext' con argumentos 'fontfile=/Windows/Fonts/a rial.ttf: text=frame %{n} \\: %{pict_type}\\: pts=%{pts \\: hms}: x=100: y=50: fontsize=24: fontcolor =amarillo@0.8: box=1: boxcolor=azul@0.9' Error configurar filtros.
¿Sabes qué es este error y cómo solucionarlo? @PeterCordes
Su línea de comando, copiar/pegar en un shell y cambiar el archivo de entrada y la fuente, funciona para mí. Mis cotizaciones funcionan para un shell de Unix, supongo que DOS cmd.exe tiene reglas de cotización diferentes. (O en realidad, creo que cmd.exe pasa todo el argumento como una sola cadena, y cada programa necesita hacer su propia eliminación de comillas). No tengo un Windows que funcione con la configuración de ffmpeg en este momento.
Sin embargo, puedo decirle cuál debería ser la línea de comando que ve ffmpeg: ejecuté echo ffmpeg ..., así que vea qué sucede después de la eliminación de citas de bash.ffmpeg -i in.mts -filter_complex drawtext=fontfile=/Windows/Fonts/arial.ttf: text='frame %{n}\: %{pict_type}\: pts=%{pts \: hms}': x=100: y=50: fontsize=24: fontcolor=yellow@0.8: box=1: boxcolor=blue@0.9 -c:a copy -c:v libx264 -preset veryfast -crf 16 -x264-params keyint=60 -map 0 out3.avi
Si yo fuera tú, obtendría un shell Unix decente para Windows. Git viene con bash compilado con mingw. ( git-scm.com/download/win ) No es un bash cygwin completo, solo un puerto mínimo para Windows. El instalador también configura las entradas del menú contextual "nuevo git bash aquí" para las carpetas del explorador. Todavía se ejecuta en una ventana de texto de DOS, en lugar de un emulador de terminal decente, por lo que copiar/pegar apesta un poco, pero es bastante útil y muy liviano. La otra opción, por supuesto, es descubrir cómo citar su comando para cmd.exe. :PAG
Por cierto, supongo que citar es un error de problema, en lugar de una versión de ffmpeg que no admite pts, porque su mensaje de error dice que ffmpeg se estaba interpretando ptscomo una opción para el filtro de texto de dibujo, NO como parte del argumento de cadena para la textopción. Por lo tanto, el :argumento del texto no debe haberse citado correctamente. Probablemente hay una diferencia en cómo `\\` dentro de comillas dobles se maneja en Bourne Shell vs. DOS.
Además, no coloque h.264 en contenedores .avi, a menos que sea necesario. mkv es un contenedor mejor, al igual que mp4. AVI realmente no admite correctamente los cuadros B (que pueden hacer referencia a cuadros futuros). Los flujos de video se almacenan en orden de decodificación. Con marcos B, eso no es lo mismo que el orden de visualización. IIRC, esto es lo que hace que los cuadros B (incluso xvid con cuadros b) en avi sean un truco.

El software de edición de video por lo general viene con esta capacidad. After Effects, Premiere, Vegas, etc., todos admiten hacer esto de manera muy simple. Algunos de ellos agregan su propio código de tiempo en lugar del código de tiempo del meta, por lo que es posible que deba ajustar el punto de inicio para que coincida con su código de tiempo real, pero el resultado final debería ser el mismo.

Por ejemplo, en Premiere, la siguiente captura de pantalla muestra el efecto en Efectos de video/Video/Código de tiempo, así como las opciones asociadas con él.ingrese la descripción de la imagen aquí

Vale la pena mencionar que en Premiere, parece que la fuente está fija en arial, aunque se puede ajustar el tamaño y la posición. After Effects, sin embargo, permitirá la fuente de su elección.

Hola, gracias por tu respuesta. ¿Puede darme un poco más de información sobre cómo aplicar la marca de tiempo en Premier?
@Kash: actualicé mi respuesta para incluir una captura de pantalla con dónde está el efecto, cuáles son las configuraciones y cómo se ve.

Otra opción es la extensión Sony Vegas Pro + Vegasaur. Con esta extensión, puede extraer información de fecha/hora grabada de archivos de video y grabarla en video. Fuente, color, tamaño, etc. - totalmente personalizable.

ingrese la descripción de la imagen aquí

Prueba DaVinci Resolve. Capacidad de quemado muy fácil y capaz. Vea mi video tutorial sobre cómo usar esta útil característica.

Gracias. dan benson

Hola Daniel, bienvenido a Video.SE. ¿Podría incluir al menos un nivel básico de detalle en su respuesta aquí? Los tutoriales en video son geniales, pero si los enlaces fuera del sitio se cortan, ya no proporcionarán una respuesta. Debido a esto, las respuestas que no proporcionen al menos una explicación básica del recurso externo pueden rechazarse o eliminarse.