Como veo en la documentación: "Para habilitar este dispositivo de entrada ... En Windows, debe ejecutar los archivos IDL a través de widl". ¿Alguien puede explicar qué significa: "necesita ejecutar los archivos IDL a través de widl" y cómo hacerlo?
Respuesta corta
No debería necesitar hacer algo así en su caso. Esto hace referencia a un paso en el proceso de compilación de FFmpeg desde cero con el soporte de DeckLink (que se hizo para crear el binario al que se vinculó).
Solución de problemas
[NULL @ XXXXXXXXXXXXXXXX] Requested output format 'XYZ' is not a suitable output format
es un error genérico, que generalmente indica que tiene algo mal en su comando FFmpeg (es decir, ha especificado las opciones "incorrectas" o la combinación de opciones).
Dicho esto, lo más probable es que tengas un problema diferente . A pesar del hecho de que la compilación a la que se vincula debe admitir la opción --enable-decklink (como se indica), le falta otra opción ( --disable-w32threads ) que requiere la compatibilidad con DeckLink (al menos sin parches). Aparentemente, la última compilación para admitir esa opción fue la compilación del 10 de diciembre de 2016 ( ffmpeg-20161210-edb4f5d ).
Desafortunadamente, esta compilación ya no parece estar fácilmente disponible. La siguiente mejor opción sería probar las compilaciones v3.2 (por ejemplo, ffmpeg-3.2-win64-static.zip ), que todavía están disponibles (a partir de este escrito) en los antiguos directorios de compilación Zeranoe de 32 y 64 bits .
Nota: Las opciones de configuración (con qué opciones se creó FFmpeg) se enumeran en el banner de configuración, la sección de "configuración" inicial larga que aparece si simplemente escribe "ffmpeg" en la línea de comando.
Respuesta larga
Un lenguaje de definición de interfaz (IDL) es una forma de:
[...] describa una interfaz de forma independiente del idioma, permitiendo la comunicación entre componentes de software que no comparten un idioma.
En este caso, Black Magic Design (que produce la serie de tarjetas de captura DeckLink ) proporciona un Kit de desarrollo de software (SDK) que tiene un número de archivos IDL que aparentemente son necesarios para construir FFmpeg con soporte de DeckLink.
Debido a que los archivos IDL se pueden usar en una variedad de situaciones, deben ejecutarse a través de un compilador IDL para generar archivos que se puedan usar con otras aplicaciones en una cadena de herramientas determinada. widl es el compilador del lenguaje de definición de interfaz de Wine , que se puede usar en lugar de midl (el compilador del lenguaje de definición de interfaz de Microsoft). widl se incluye con MinGW-w64 , además de estar disponible en Linux, por lo que sospecho que esta es al menos parte de la razón por la que se recomienda.
Si bien no pude encontrar ejemplos de uso de widl (aparte de la página de manual vinculada anteriormente), esta vieja publicación en el foro de Zeranoe sugiere que midl se puede usar para procesar los archivos IDL requeridos de manera similar a widl en forma de, por ejemplo:
midl /h DeckLinkAPI.h DeckLinkAPI.idl
donde / h es el modificador de encabezado para midl (con el modificador comparable -h en widl). Los archivos resultantes se usarían con las opciones --extra-cflags
y--extra-ldflags
.
Nota: Esta publicación mucho más reciente indica el uso de DeckLinkAPI.h, DeckLinkAPI_i.c y DeckLinkAPIVersion.h (este último se incluye en el SDK sin conversión). No me queda claro si estos son los únicos archivos requeridos. La publicación también hace referencia a la construcción con "--disable-w32threads" como se mencionó anteriormente.