次のコード スニペットがあります。
private XDocument CreateXmlForMediaFile(string mediaFilePath)
{
var args = string.Format("-f {0} --Output=XML", mediaFilePath);
var miProcess = new Process
{
StartInfo = new ProcessStartInfo()
{
Arguments = args,
FileName = _mediaInfoPath, // path to where MediaInfo.exe is located.
RedirectStandardOutput = true,
CreateNoWindow = true,
UseShellExecute = false
}
};
// create and instantiate a new xdocument that contains our results for the current manifest.
miProcess.Start();
var newXDoc = XDocument.Load(miProcess.StandardOutput);
return newXDoc;
}
いつでも
mediaFilePath = ローカル パス = 完全な xml ドキュメントが返されます。
例 C:\temp\input\ABC001.mp3
しかし
mediaFilePath = unc パス、どこかのサーバー上 = 空の xml ドキュメントが返されます。
例: \\w2k-testharness\SAMI Testdata\CarrierBased\ABC001.mp3
したがって、基本的にここで何が起こっているかは、C# のプロセス オブジェクトを介して MediaInfo を起動すると、ネットワーク パスが適切に解決されないということです。メディア ファイルがローカルの場合、大きな xml ドキュメントが返され、そのファイルが発生した場合ローカルにしないと、空のように見える xml ドキュメントが取得されます。
最後に、File.Exists(...) を使用して、各ファイルが存在するかどうかを確認しています。