Re: Get Video File Duration
Save them in the database
Re: Get Video File Duration
You need to open each file and read the data out of the headers ...
if you look at the AVI format you can use the Frame Rate and Total frames to get the length in seconds of the clip ....
Total seconds = Total frames / Frame rate ...
Depending on how you do it this should not take too long to read all the listed files..
Gremmy..
Re: Get Video File Duration
Like countless others, I also could not seem to find how to get video durations. Many forums have been searched, all with many people searching for the same thing, and none with any successful methods of doing so. However, I used to be able to do this in VBA, and I have found a way to make this work in VB.NET by adapting the code I used to use. Basically, in the details view of windows, it already lists the durations of both video and audio files. So basically, we just extract it from windows. Some file formats even windows cannot get this information (like for example .mp4) but for all that windows can find, here's how to do it:
Code:
'1) Declare this at the top of your code module:
Imports System.IO
'2) Declare the function itself:
Function GetDuration(ByVal MovieFullPath As String) As String
If File.Exists(MovieFullPath) Then
Dim objShell As Object = CreateObject("Shell.Application")
Dim objFolder As Object = _
objShell.Namespace(Path.GetDirectoryName(MovieFullPath))
For Each strFileName In objFolder.Items
If strFileName.Name = Path.GetFileName(MovieFullPath) Then
Return objFolder.GetDetailsOf(strFileName, 21).ToString
Exit For
Exit Function
End If
Next
Return ""
Else
Return ""
End If
End Function
'3) Call the function like this:
Dim MyDuration As String = GetDuration("C:\SomePath\SomeVideoOrAudioFile.avi")
Hope this helps!! ;)
Re: Get Video File Duration
Please use CODE TAGS when you post.
Code:
' And remove the old post by deleting it
Re: Get Video File Duration
Quote:
Originally Posted by
dglienna
Please use CODE TAGS when you post.
Code:
' And remove the old post by deleting it
Thanks dglienna for pointing me out how to space the code text. It was my first post on this forum, and I had a feeling there was a way to get the code to keep the correct spacings, just I didn't see the page with all the code syntaxes. But now I know it's standard BB code on this forum, they should all be looking how I wanted them from now on. It's now been amended, and the old post deleted. Does this look better?
Once again, thanks for pointing me in the right direction! ;)
Re: Get Video File Duration
Just an addition. My code was written for Windows XP, but if you are runnning a different operating system, you must change the value from the following line:
XP:
Code:
Return objFolder.GetDetailsOf(strFileName, 21).ToString
Vista:
Code:
Return objFolder.GetDetailsOf(strFileName, 36).ToString
Windows 7:
Code:
Return objFolder.GetDetailsOf(strFileName, 27).ToString
(Obviously, if you intend your application to be used cross-platform, then the more efficient way would be to check which OS is being used first, and then dynamically add the value)
Re: Get Video File Duration
XP:
Code:
Return objFolder.GetDetailsOf(strFileName, 21).ToString
Vista:
Code:
Return objFolder.GetDetailsOf(strFileName, 36).ToString
Windows 7:
Code:
Return objFolder.GetDetailsOf(strFileName, 27).ToString
very useful informatioin....
does anybody knows the right number (21, 36, 27....) for windows 8...?
thanks in advance.....
Re: Get Video File Duration
when I used this code in Microsoft access 2017, I cannot make it run, it gives me error on import system.io (compilation error: invalid outside procedure), if I remove this then I get error on path.getdirectory
how can I get the length of the video of a given file.
appreciate any help. thanks
Code:
'1) Declare this at the top of your code module:
Imports System.IO
'2) Declare the function itself:
Function GetDuration(ByVal MovieFullPath As String) As String
If File.Exists(MovieFullPath) Then
Dim objShell As Object = CreateObject("Shell.Application")
Dim objFolder As Object = _
objShell.Namespace(Path.GetDirectoryName(MovieFullPath))
For Each strFileName In objFolder.Items
If strFileName.Name = Path.GetFileName(MovieFullPath) Then
Return objFolder.GetDetailsOf(strFileName, 21).ToString
Exit For
Exit Function
End If
Next
Return ""
Else
Return ""
End If
End Function
'3) Call the function like this:
Dim MyDuration As String = GetDuration("C:\SomePath\SomeVideoOrAudioFile.avi")
Hope this helps!! ;)[/QUOTE]
Re: Get Video File Duration
save them in database and see file properties of it.