3

ランダムなビデオと画像ファイルを再生するシステムを持っており、フェード トランジションを設定したいと考えています。今はタイミングを合わせたいので、これから再生する動画の長さを決めるところから始めるのが一番いいと思います。JavaScript を使用してファイルの期間を決定する際に問題が発生しているため、しばらく休ませて、代わりに ColdFusion を使用してこれを実行できる可能性があると考えました。

親友のGoogleに答えを見つけさせようとしましたが、役に立ちませんでした. ColdFusion でアップロードされたばかりのビデオ ファイルの長さを判断する方法を知っている人はいますか?

ありがとう。

アップデート:

私は何かを見つけることができました:

<!--- Set CrLf definition --->
<cfset CrLf = Chr(13)&Chr(10) />
<!--- Use FF Probe to extract stream information, Stream 1 contains duration, width and height info about the file --->
<cfexecute name="c:\inetpub\wwwroot\ffprobe.exe" arguments="#testFile# -show_streams" timeout="60" variable="info" errorVariable="errorOut" />
<!--- Concentrates on extracting information from the very first stream in the returned variable --->
<cfset StreamStart = Find("[STREAM]", info) />
<cfset StreamEnd = Find("[/STREAM]", info) />
<cfset Stream = Mid(info, StreamStart+9, StreamEnd - StreamStart - 12)&CrLf />
<!--- ^^ Parses out first stream --->
<!--- vv Extracts the duration, don't really mind the long decimal bit at the end! --->
<cfset adRefreshTime = Mid(Stream, Find("duration=",Stream)+9, Find(CrLf, Stream, Find("duration=",Stream)+9)-(Find("duration=",Stream)+9)) />

送り出されたストリームは、HH:MM:SS.mmm ではなく、継続時間に 10 進数の秒を保持するので、それを解析するだけです... 即時の継続時間...どう思いますか?

4

2 に答える 2

4

私自身の(無料/オープンソースの)VideoConverter.cfcは通常それを行うことができます。

https://github.com/sebtools/Video-Converter

 <cfset sInfo = VideoConverter.getVideoInfo(path)>

そのメソッドによって返される構造で「Duration」キーを探します。存在する場合、VideoConverter.cfcはビデオの長さを把握できました。

内部的には、ffmpeg.exeを使用してその情報を取得しています。

于 2013-02-18T16:40:25.070 に答える
2

mp3 の場合は、これを使用できます。ビデオファイルを渡すと、ビデオで動作する可能性があります

<cfset mp3File = createObject("java", "coldfusion.util.MP3File").init("C:\music.mp3")>
<cfoutput>mp3File.getDuration() : #mp3File.getDuration()# Sec</cfoutput><br>

編集: wmv ファイルで試してみたところ、11 分 6 秒のビデオで 4076 秒かかりました。mp3 で試してみたところ、3:24 秒の mp3 で 207 秒と表示されました。CF9.01を使用しています

于 2013-02-18T01:08:46.140 に答える