Encontrando Fragmentos de Video en Contenido de Video Más Grande¶
Introducción¶
La tecnología de huellas de video permite a los desarrolladores identificar y localizar segmentos específicos de video dentro de archivos de video más grandes. Esta guía demuestra el proceso de implementación usando un poderoso SDK de Huellas de Video que funciona con varios formatos de video y niveles de calidad.
Los ejemplos principales en este tutorial usan la implementación de API .NET, pero funcionalidad equivalente está disponible a través de la API C++ para desarrolladores que prefieren soluciones de código nativo.
Proceso de Implementación¶
Paso 1: Analizar el Archivo de Fragmento¶
Primero, necesitamos extraer una huella del fragmento de video más pequeño que queremos localizar dentro del video más grande. Este proceso implica analizar las características únicas del video y generar una firma digital.
// crear fuente de archivo de video
var fragmentSrc = new VFPFingerprintSource(ShortFile, VFSimplePlayerEngine.LAV);
fragmentSrc.StopTime = TimeSpan.FromMilliseconds(5000);
// obtener huella
var fragment = VFPAnalyzer.GetSearchFingerprintForVideoFile(fragmentSrc, ErrorCallback);
En este bloque de código:
- Creamos una fuente de huella apuntando al archivo de fragmento corto
- Establecemos un límite de duración de 5 segundos para el análisis
- Generamos una huella buscable usando el analizador
Paso 2: Analizar el Video Objetivo¶
A continuación, necesitamos extraer una huella del video más grande donde buscaremos nuestro fragmento. El proceso es similar, pero sin limitaciones de tiempo.
// crear fuente de archivo de video
var mainSrc = new VFPFingerprintSource(LongFile, VFSimplePlayerEngine.LAV);
// obtener huella
var main = VFPAnalyzer.GetSearchFingerprintForVideoFile(mainSrc, ErrorCallback);
Paso 3: Configurar el Manejo de Errores¶
Para mantener un manejo de errores robusto, implementamos una función de callback que captura y muestra cualquier error encontrado durante el proceso de generación de huellas.
Paso 4: Realizar la Operación de Búsqueda¶
Con ambas huellas listas, ahora podemos buscar el fragmento dentro del archivo de video más grande.
// establecer el nivel máximo de diferencia
var maxDifference = 500;
// buscar un fragmento de video en otro video usando huellas
var res = VFPSearch.Search(fragment, 0, main, 0, out var difference, maxDifference);
// verificar el resultado
if (res > 0)
{
TimeSpan ts = new TimeSpan(res * TimeSpan.TicksPerSecond);
Console.WriteLine($"Fragmento detectado en {ts:g}, nivel de diferencia es {difference}");
}
else
{
Console.WriteLine("Archivo de fragmento no encontrado.");
}
En este código:
- Definimos un nivel de tolerancia para diferencias entre huellas
- Realizamos la operación de búsqueda entre nuestro fragmento y el video principal
- Verificamos si se encontró una posición coincidente (valor de resultado positivo)
- Convertimos el resultado a una marca de tiempo y la mostramos junto con el valor de diferencia
Consideraciones de Rendimiento¶
La tecnología de huellas usa algoritmos sofisticados que equilibran precisión y rendimiento. Para resultados óptimos:
- Considera ajustar el nivel máximo de diferencia basándote en tus requisitos específicos
- Procesa videos en su resolución nativa cuando sea posible
- Para archivos muy grandes, considera dividir la búsqueda en fragmentos manejables
Recursos Adicionales¶
Para documentación completa, ejemplos de implementación en otros lenguajes e información de licencias, visita la página del producto.