68

ビデオファイルに関する情報を取得するためにffmpegを使用していますが、情報をファイルに保存したくありません。ffmpegはすべてのビデオ情報を返しますが、出力ファイルを指定していないため、エラーとして返されます。私が使用しているコマンドは次のとおりです。

 ffmpeg -i C:\Test\3FA8D0E6-BD61-D160-98BB41304D63FAE3.mp4

私が得るエラーは「少なくとも1つの出力ファイルを指定する必要があります」です

を使用してColdFusionでこれを呼び出して<cfexecute>おり、出力はローカル変数に格納されているため、ファイルを指定したくありません...これをファイルに格納する必要はありません。

違いがあれば、私はこれをWindowsで実行しています。

4

4 に答える 4

120

FFmpegでは出力ファイルを指定する必要があるため、エラーが発生します。ファイルに関する情報を取得するためだけにそれを使用することは、その意図された使用法ではありません。

オプション1:エラーを無視します。 FFmpegは最初にファイル情報を出力するので、必要な情報を取得してエラーを無視することができます。

オプション2:代わりにffprobeを使用します。 FFprobeは、通常FFmpegにパッケージ化されている別のツールであり、メディアファイルに関する情報を取得するために設計されています。情報をさまざまな簡単に解析できる形式で出力することもできるため、FFmpegの出力の解析をいじくり回す必要はありません。

于 2012-07-09T18:17:32.233 に答える
7

代わりにffprobeを使用することになりました。これが私のColdFusionテストコードです...これはもっとうまく書くことができることを覚えておいてください。この時点では、幅/高さ/期間のみに関心があります。

<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>
于 2012-07-09T18:29:51.517 に答える
7

非常に遅いですが、うまくいけば、誰かが使いたくない場合に役立つでしょうffprobe@blahdiblahの回答を参照)。

ドキュメントに記載されているようにNullで使用できます:ffmpeg

ffmpeg -i C:\Test\3FA8D0E6-BD61-D160-98BB41304D63FAE3.mp4 -f null -
于 2020-09-19T21:13:32.127 に答える
2

ffmpegでそれを行うことは可能であり、情報をファイルに保存したくない場合は/dev/null、*nixシステムで送信することができます。

ffmpeg -i file.mp4 -hide_banner -f null /dev/null
于 2019-08-21T23:40:20.867 に答える