我有以下代码片段:
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
所以基本上我可以告诉这里发生的事情是,当 MediaInfo 通过 c# 中的进程对象启动时,它没有正确解析网络路径,因为当媒体文件是本地的时,会返回一个大的 xml 文档,如果该文件发生如果不是本地的,那么我们会得到一个空的 xml 文档。
最后,我使用 File.Exists(...) 来验证每个文件是否存在。