我正在.Net(VB)中创建一个显示视频文件列表(.mp4)的应用程序。我想要显示每个文件的持续时间。但是我找不到如何获得mp4文件持续时间的方法。请提供并提示或指导。谢谢
答案 0 :(得分:0)
您可以提取文件属性并获取特定文件的持续时间。此功能将有所帮助:
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
并调用函数
Dim MyDuration As String = GetDuration("C:\SomePath\SomeVideoOrAudioFile.avi")
希望这会有所帮助!!
<强>更新强>
如果使用与XP不同的操作系统,则应对aboce代码进行少量更改。
如果您使用的是Windows 7 ,请更改
Dim MyDuration As String = GetDuration("C:\SomePath\SomeVideoOrAudioFile.avi")
到
Return objFolder.GetDetailsOf(strFileName, 36).ToString
。
对于Windows Vista使用 Return objFolder.GetDetailsOf(strFileName, 27).ToString
答案 1 :(得分:0)
这是akhil kumar代码,我刚刚更新了其中的一些
您可以提取文件属性并获取特定文件的持续时间。此功能将有所帮助:
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
和类似的调用功能
Dim MyDuration As String = GetDuration("C:\SomePath\SomeVideoOrAudioFile.avi")
希望这会有所帮助!
更新
如果使用的操作系统与XP不同,则应对上述代码进行一些改动。
如果您使用的是Windows 7 ,请更改
Dim MyDuration As String = GetDuration("C:\SomePath\SomeVideoOrAudioFile.avi")
到
Return objFolder.GetDetailsOf(strFileName, 36).ToString
。
用于Windows Vista Return objFolder.GetDetailsOf(strFileName, 27).ToString
对于Windows 8使用 Return objFolder.GetDetailsOf(strFileName, 28).ToString
对于Windows 10使用 Return objFolder.GetDetailsOf(strFileName, 27).ToString