繁体   English   中英

如何在C#中访问视频文件信息

[英]How to access video file info in c#

我正在从文件夹中读取.mp4文件,目前,我正在使用FileInfo提取名称FileInfo,这仅限于电影包含的一些细节。 我还需要提取其他信息,例如标题字幕注释类型导演导演制片人

DirectoryInfo dirInfo = new DirectoryInfo(@"..\bin\Debug\Folder");
FileInfo[] fileNames = dirInfo.GetFiles("*.mp4");
foreach (FileInfo fi in fileNames)
{
    string movieName = fi.Name.Split('.')[0]; // returns the file name
    VideoFile newVideo = new VideoFile(movieName); // insert name in object
            director.ListVid.Add(newVideo); // add object to a director object - aka another list
}
 listVideoDirector.Add(director); //add director object to list

我的videoFile对象具有更多属性。 我需要从实际文件中提取它们

我用过FFProbe库

下载库: https : //www.nrecosite.com/downloads/video_info_free.zip

例如 :

string path = "Video path";
NReco.VideoInfo.FFProbe ffProbe = new NReco.VideoInfo.FFProbe();
MediaInfo videoInfo = ffProbe.GetMediaInfo(path ); 

TimeSpan videoDuration = videoInfo.Duration;

if (videoInfo.Streams[index].CodecType.ToLower() == "video")
{
 int iWidth = videoInfo.Streams[index].Width;
 int iHeight = videoInfo.Streams[index].Height;
 string sVideoFrameRate = videoInfo.Streams[index].FrameRate.ToString();
 string sVideoCodecName = videoInfo.Streams[index].VideoCodecName;
  //...
}
else if(videoInfo.Streams[index].CodecType.ToLower() == "audio")
{
   string sAudioCodecName = videoInfo.Streams[index].CodecName;
  //...
}

您可以使用ffmpeg(ffmpeg.exe或ffprobe.exe)从视频或音频文件中提取元数据(它支持几乎所有已知格式)。 可以使用System.Diagnostics从C#代码执行FFMpeg。应从控制台输出中解析过程和视频文件元数据(您可以重定向stdout并将其读取为字符串)。

作为编写执行ffprobe的自定义代码的替代方法,您可以使用现有的.NET包装器之一,该包装器将使用一行代码返回结果(例如NReco VideoInfo,我是该库的作者)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM