Есть ли способ получить продолжительность видеофайла с помощью ColdFusion?

У меня есть система, которая воспроизводит случайные видео и графические файлы, и я хочу установить с ними некоторые переходы затухания. Прямо сейчас, я хочу точно выбрать время, поэтому я считаю, что лучший способ начать с определения продолжительности видео, которое я собираюсь воспроизвести. У меня есть некоторые проблемы с определением длительности файлов с помощью 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)) />

Выкачанный поток содержит десятичное число секунд по продолжительности вместо ЧЧ: ММ: СС.ммм, так что я просто разбираю его... Мгновенная продолжительность... Как вы думаете?

2 ответа

Решение

Мой собственный (бесплатный / с открытым исходным кодом) VideoConverter.cfc обычно может это сделать.

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

 <cfset sInfo = VideoConverter.getVideoInfo(path)>

Найдите ключ "Duration" в структуре, возвращаемой этим методом. Если он существует, то VideoConverter.cfc смог определить продолжительность видео.

Внутренне он использует ffmpeg.exe для получения этой информации.

Для mp3s вы можете использовать это. Может работать с видео, если вы передаете видео файл

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

РЕДАКТИРОВАТЬ: Попытка с файлом WMV, и это дало мне 4076 секунд для 11-минутного видео 6 секунд. Попробовал с mp3, и он сказал, что 207 секунд mp3 за 3:24 секунды. Я использую CF9.01

Другие вопросы по тегам