2013-02-18 52 views
3

我有一個播放隨機視頻和圖像文件的系統,我想設置一些淡入淡出的過渡。現在,我希望時機恰到好處,所以我認爲開始的最佳方式是確定我即將播放的視頻的持續時間。我在確定使用JavaScript的文件持續時間方面遇到了一些問題,所以我暫時擱置了一下,並認爲我可以通過ColdFusion來完成此操作。有沒有辦法使用ColdFusion獲取視頻文件的持續時間?

我試過讓最好的朋友谷歌找到答案,但無濟於事。那麼這裏的任何人都知道如何確定剛剛使用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,所以我只是把它解析出來......瞬間......你覺得怎麼樣?

回答

4

我自己的(免費/開源)VideoConverter.cfc通常可以做到這一點。

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

<cfset sInfo = VideoConverter.getVideoInfo(path)> 

尋找在通過該方法返回的結構中 「持續時間」 鍵。如果它存在,那麼VideoConverter.cfc能夠計算出視頻的持續時間。

在內部,它使用ffmpeg.exe來獲取該信息。

+0

你節省了一天! – Nich 2014-05-23 01:41:16

+0

已經意識到「路徑」需要本地視頻路徑,如果視頻在一個url上是遠程的呢? – Nich 2014-05-23 02:21:10

+0

只適用於本地視頻,對不起。 – 2014-06-01 02:08:36

2

對於mp3,你可以使用它。可以用視頻的工作,如果你傳遞一個視頻文件

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

編輯:試圖用一個WMV文件,它給了我4076秒了11分鐘6秒的視頻。嘗試了一個MP3,它說,3:24秒的MP3播放207秒。我正在使用CF9.01

+0

4076秒超過一小時。 – Travis 2013-02-18 14:54:40

+0

這是我的觀點。它不像廣告一樣工作。 – 2013-02-18 15:24:47

相關問題