我已经看过几十个关于这个问题的问题和答案,但我仍然无法解决我的问题。
我在我的代码中使用外部ffmpeg转换器,我将文件路径作为参数传递:
OutputPackage oo = converter.ConvertToFLV(@"C:\Users\user\Documents\test Video\video.wmv");
当“测试视频”文件夹名称中没有空格时,它可以正常工作。但是当它像上面那样我得到一个C:\Users\user\Documents\test
不是有效路径的错误。
用引号括起来:
@"""C:\Users\user\Documents\test Video\video.wmv"""
的结果
视频文件“C:\ Users \ user \ Documents \ test Video \ video.wmv”不存在。
我也试过没有“@”:
"\"C:\\Users\\user\\Documents\\test Video\\video.wmv\""
但结果是一样的。
Path.Combine("C:\\Users\\user\\Documents\\test Video\\video.wmv")
"\""+Path.Combine("C:\\Users\\user\\Documents\\test Video\\video.wmv")+"\""
也行不通。 同时从Windows控制台运行该过程,如
ffmpeg.exe "C:\Users\user\Documents\test Video\video.wmv"
完全正常。
更新: 该方法使用如下字符串:
public OutputPackage ConvertToFLV(string inputPath)
{
VideoFile vf = null;
try
{
//string path = string.Format("{0}", inputPath);
vf = new VideoFile(inputPath);
}
catch (Exception ex)
{
throw ex;
}
OutputPackage oo = ConvertToFLV(vf);
return oo;
}
和
在视频文件类中,抛出异常:
if (!File.Exists(_Path))
{
throw new Exception("The video file " + _Path + " does not exist.");
}
答案 0 :(得分:4)
可能是converter.ConvertToFLV
无法正确处理包含空格的路径名。您可以尝试为其提供没有空格的8.3 pathname
答案 1 :(得分:0)
好的,包好主题......
虽然像ffmpeg这样的外部任务需要将包含空格的路径放在qoutes“path”中(因为Windows控制台将空格视为参数之间的分隔符),但C#中使用的方法File.Exists()不接受引号在路径中,并且适用于路径中的空格。