coldfusion - Uso de ffmpeg para obtener información del video: ¿por qué debo especificar un archivo de salida?
(2)
Está dando un error porque FFmpeg requiere que se especifique un archivo de salida. Su uso solo para obtener información sobre un archivo no es su uso previsto.
Opción 1: ignorar el error. FFmpeg imprime la información del archivo primero, para que pueda obtener la información que necesita e ignorar el error.
Opción 2: Utilice ffprobe en ffprobe lugar. FFprobe es otra herramienta generalmente empaquetada con FFmpeg que está diseñada para obtener información sobre archivos multimedia. Incluso puede generar la información en una variedad de formatos fáciles de analizar, por lo que no tiene que perder el tiempo analizando la salida de FFmpeg.
Estoy usando ffmpeg para obtener información sobre un archivo de video y no quiero guardar la información en un archivo. ffmpeg está devolviendo toda la información del video, pero está regresando como un error porque no estoy especificando un archivo de salida. El comando que estoy usando es:
ffmpeg -i C:/Test/3FA8D0E6-BD61-D160-98BB41304D63FAE3.mp4
El error que recibo es "Se debe especificar al menos un archivo de salida"
Estoy llamando a esto en ColdFusion usando <cfexecute>
, y la salida se está almacenando en una variable local, por lo que no quiero especificar un archivo ... Simplemente no necesito almacenar esto en un archivo .
Si hay alguna diferencia, estoy ejecutando esto en Windows.
Terminé usando ffprobe en su lugar. Aquí está mi código de prueba de ColdFusion ... tenga en cuenta que esto podría escribirse mejor. En este punto, solo estoy interesado en ancho / alto / duración.
<cfset fsVideoFile = "C:/videos/test.mp4">
<cfset width = 270>
<cfset height = 480>
<cfset duration = 0>
<cfexecute
name="ffmpeg/bin/ffprobe.exe"
arguments="#fsVideoFile# -v quiet -print_format json -show_format -show_streams"
timeout="60"
variable="jsonInfo"
errorVariable="errorOut" />
<cfif IsJSON (jsonInfo)>
<cfset videoInfo = DeserializeJSON (jsonInfo)>
<cfdump var="#videoInfo#">
<cfset duration = videoInfo.format.duration>
<cfloop array="#videoInfo.streams#" index="stream">
<cfif stream.codec_type EQ "video">
<cfset width = stream.width>
<cfset height = stream.height>
<cfbreak />
</cfif>
</cfloop>
</cfif>