ColdFusion: есть ли способ получить размеры видео? - PullRequest
0 голосов
/ 23 марта 2012

Есть ли способ в ColdFusion получить ширину и высоту видеофайла?

Ответы [ 2 ]

4 голосов
/ 23 марта 2012
1 голос
/ 23 марта 2012

Я использую маршрут ffmpeg.org, чтобы получить размеры для видео Flash, загруженных в одну из наших систем обслуживания.У меня есть командный файл, который я выполняю через CFEXECUTE и вводить в него параметры для ffmpeg.exe.Большая часть этого кода пришла от кого-то другого, но у меня, похоже, не было закладки их сайта.

<!--- Check if the file is a flash video --->
<cfif Form.FILETYPE IS "Flash Video" AND UCase(ListLast(Main, ".")) IS "FLV">
    <!--- Execute batch file to create Information txt file --->
    <cfexecute name="c:\windows\system32\CMD.EXE"
               arguments="/c #App.DocPath#\FFmpeg\GetFLVSizes #App.DocPath#\FFmpeg\ffmpeg.exe #App.RootPath#\files\#Main# #App.RootPath#\files\#ListDeleteAt(Main, ListLen(Main, '.'), '.')#_Info.txt"
               timeout="5">
    </cfexecute>

    <!---read in the text file that was created by ffmpeg--->
    <cffile action="read" file="#App.RootPath#\files\#ListDeleteAt(Main, ListLen(Main, '.'), '.')#_Info.txt" variable="strInformation">

    <!---find the pattern of two numbers, an 'x' then two more numbers
    These are the dimensions of the file there are no other items that will match
    this pattern, so this is safe--->
    <cfset strPattern=refind("[0-9][0-9]x[0-9][0-9]", strInformation) />

    <!---grab the 4 characters before the x, the x itself, then the 4 characters
    after Essentially this will be:

    1240x1000

    But sometimes the numbers will be 2, or 3 digits, but grab the whole thing--->

    <!---if this does NOT work, then set the size to 320px by 212px
    .flv files created by some applications will not have the dimensions in the
    header--->

    <cftry>
        <cfset strTemp=mid(strInformation, val(strPattern-2), 9)>

        <!---take the value of the last 4 digits for the width this will always
        end up with a number--->
        <cfset FLVHeight    =val(mid(strTemp, 6, 4)) />

        <!---to get the first number, we just need to isolate the first 4
        characters. But find out if there is a space, just in case this is less than 4
        digits--->
        <cfset FLVWidth = left(strTemp, 4) />
        <cfset flvspace = find(' ', Variables.FLVWidth) />
        <cfset FLVWidth = right(Variables.FLVWidth, val(4-flvspace)) />

        <!---set this as the default, this works with the swf file I use to display
        the flv--->
        <cfcatch>
            <cfset FLVWidth     = 320 />
            <cfset FLVHeight    = 212 />
        </cfcatch>
    </cftry>
</cfif>
...