获取视频的长度我找不到如何以编程方式获取文件视频长度的简单示例。很多人说,哦,使用这个库/包装器或其他什么,但不是如何使用。我已经下载了ffmpeg但不知道如何实际使用它,而且似乎没有任何示例说明如何使用它来获取视频时长。我看到你如何使用它来转换视频,但我只想知道视频的持续时间。所有其他信息均无关紧要。有没有一种方法可以简单地执行此操作,无论是在C#、python、java等中,它只会返回一个表示视频文件长度的字符串。请尽可能提供示例。提前致谢!假定标准文件格式,例如wmv、avi、mp4、mpeg。有元数据的东西。这是一个例子:使用DirectShowLib;使用DirectShowLib.DES;使用System.Runtime.InteropServices;...varmediaDet=(IMediaDet)newMediaDet();DsError.ThrowExceptionForHR(mediaDet.put_Filename(FileName));//在文件中查找视频流intindex;vartype=Guid.Empty;for(index=0;index开源工具MediaInfo为媒体文件提供了全面的元数据,可以通过DLL形式从您自己的应用程序中轻松使用:void*Hande=MediaInfo::OpenQuick("**FILENAME**","**VERSION**;**APP_NAME**;**APP_VERSION**")MediaInfo::Inform()您可以使用-i标志获取有关多种类型视频格式的信息,包括使用ffmpeg的持续时间:ffmpeg-ivideofile.whatever如果你想要一个很好的库,用C#为你包装ffmpef那么你可以使用MediaHandlerPro我以不同的方式尝试了它获取视频长度:实际上也使用WindowsMediaPlayer组件,我们可以获得视频持续时间。以下代码片段可能对您有所帮助:usingWMPLib;//...varplayer=newWindowsMediaPlayer();varclip=player.newMedia(filePath);Console.WriteLine(TimeSpan.FromSeconds(clip.duration));不要忘记添加将出现在System32文件夹中的wmp.dll的引用。我发现的简单而完美的解决方案是使用MediaToolkitnugetBag。使用媒体工具包;//一种获取视频的宽度、高度和持续时间(单位为刻度)的方法。publicstaticTupleGetVideoInfo(stringfileName){varinputFile=newMediaToolkit.Model.MediaFile{Filename=fileName};使用(varengine=newEngine()){engine.GetMetadata(inputFile);}//FrameSize作为“1280x768”字符串返回。varsize=inputFile.Metadata.VideoData.FrameSize.Split(new[]{'x'}).Select(o=>int.Parse(o)).ToArray();返回新元组(大小[0],大小[1],inputFile.Metadata.Duration.Ticks);我最近找到了一个类似问题的解决方案,使用ColdFusion和FFMpeg的小表弟FFProbe...有没有办法使用ColdFusion获取视频文件的持续时间?FFProbe有一个show_streams参数,它在返回的输出中推出了初始流中的大量信息;包括视频的宽度、高度和持续时间...不确定C#运行等效于“ffprobe.exe-show_streamstestFile”语法,但我相信一旦你弄明白了,你就可以从中解析出你需要的信息你收到的输出。ffprobe是ffmpeg项目的企业工具。除了提供来自各种文件格式的信息外,它还可以输出JSON格式以简化解析。查看此答案以获取JSON输出示例。以上就是C#学习教程:获取视频长度,分享全部内容。如果对您有用,需要进一步了解C#学习教程,希望您多多关注---本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
