大丈夫。実際には、主にmp4形式が必要です。しかし、他のタイプも入手できれば、それは素晴らしいことです。ファイルの期間を読み取るだけです。C# 4.0 でそれを行うにはどうすればよいですか?
だから私が必要なのは、このビデオのようなものです:13 minutes 12 seconds
3つのサードパーティのexeも使用できます。ファイルに関する情報をテキスト ファイルに保存するように。そのテキスト ファイルを解析できます。
ありがとうございました。
Windows Media Player を使用することもできますが、要求したすべてのファイル タイプはサポートされていません。
using WMPLib;
public Double Duration(String file)
{
WindowsMediaPlayer wmp = new WindowsMediaPlayerClass();
IWMPMedia mediainfo = wmp.newMedia(file);
return mediainfo.duration;
}
}
MediaDet
DirectShow.NET ラッパー ライブラリを介して、DirectShow API オブジェクトを使用できます。コードサンプルのビデオの長さの取得を参照してくださいget_StreamLength
。秒単位で長さを取得します。これは、WindowsにMPEG-4デマルチプレクサがインストールされていることを前提としています(7より前のWindowsではサードパーティのコンポーネントが必要です。同じことがcezor による別の回答にも当てはまると思いますが、コンポーネントを自由に再配布できます)。
私見では、メディア ファイルに関する多くの情報を提供するMediaInfoを使用できます。
そのための CLI があるので、コードから使用して必要な情報を取得できます。このリンク
をご覧ください。
あなたはFFMPEGを探していると思います - https://ffmpeg.org/
この質問でそれらについて読むことができるいくつかの無料の代替手段もあります-Using FFmpeg in .net?
FFMpeg.NET FFMpeg-Sharp FFLib.NET
FFMPEG を使用して期間を見つける例については、このリンクを参照してください - http://jasonjano.wordpress.com/2010/02/09/a-simple-c-wrapper-for-ffmpeg/
public VideoFile GetVideoInfo(string inputPath)
{
VideoFile vf = null;
try
{
vf = new VideoFile(inputPath);
}
catch (Exception ex)
{
throw ex;
}
GetVideoInfo(vf);
return vf;
}
public void GetVideoInfo(VideoFile input)
{
//set up the parameters for video info
string Params = string.Format("-i {0}", input.Path);
string output = RunProcess(Params);
input.RawInfo = output;
//get duration
Regex re = new Regex("[D|d]uration:.((\\d|:|\\.)*)");
Match m = re.Match(input.RawInfo);
if (m.Success)
{
string duration = m.Groups[1].Value;
string[] timepieces = duration.Split(new char[] { ':', '.' });
if (timepieces.Length == 4)
{
input.Duration = new TimeSpan(0, Convert.ToInt16(timepieces[0]), Convert.ToInt16(timepieces[1]), Convert.ToInt16(timepieces[2]), Convert.ToInt16(timepieces[3]));
}
}
}
Windows Media Player コンポーネントも使用して、ビデオの長さを取得できます。
次のコード スニペットが役立つ場合があります。
using WMPLib;
// ...
var player = new WindowsMediaPlayer();
var clip = player.newMedia(filePath);
Console.WriteLine(TimeSpan.FromSeconds(clip.duration));
フォルダー
wmp.dll
に存在する参照を追加することを忘れないでください。System32
FFMPEG プロジェクトには ffprobe と呼ばれるツールがあり、マルチメディア ファイルについて必要な情報を提供し、適切にフォーマットされた JSON で情報を出力できます。
例として、この回答を見てください。