2013-02-18 51 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

相关问题