当我运行此代码时。
public void WaterMarkingUsingCommandLine(string videopath, string imagepath)
{
string OutputFolder = AppDomain.CurrentDomain.BaseDirectory + "Output\\" + System.IO.Path.GetFileNameWithoutExtension(videopath) + "_Output.mp4";
string ffmpegPath = @""""+AppDomain.CurrentDomain.BaseDirectory + @"ffmpeg.exe""";
string ffmpegParams = @"-i """+videopath+@""" -i """+imagepath+@""" -filter_complex ""overlay=10:10"" """+OutputFolder+@"""";
Process ffmpeg = new Process();
ffmpeg.StartInfo.FileName = "cmd.exe";
ffmpeg.StartInfo.Arguments = "/k " + ffmpegPath + " " + ffmpegParams;
ffmpeg.Start();
}
我在cmd中看到了这一点。
'c:\ users \ jafar.baltidynamolog \ documents \ visual'无法识别为 内部或外部命令,可操作程序或批处理文件。
C:\用户\ jafar.baltidynamolog \画\视频>
问题似乎是由于空间问题。正如其他问题所述,我在文件名周围添加了逗号,但它仍无效。
更新
通过调试我发现了
的值ffmpeg.StartInfo.Arguments =
“/ k \”c:\ users \ jafar.baltidynamolog \ documents \ visual studio 2010 \项目\ VideoProjectBilal \ VideoProjectBilal \ BIN \调试\ ffmpeg.exe \” -i \“C:\ Users \ jafar.baltidynamolog \ Videos \ videos \ SampleVideo_360x240_2mb.mp4 \” -i \“C:\ Users \ jafar.baltidynamolog \ Videos \ images \ 2.png \”-filter_complex \“overlay = 10:10 \”\“c:\ users \ jafar.baltidynamolog \ documents \ visual studio 2010 \项目\ VideoProjectBilal \ VideoProjectBilal \ BIN \调试\输出\ SampleVideo_360x240_2mb_Output.mp4 \ “”
答案 0 :(得分:0)
尝试更改此行:
string ffmpegPath = @""""+AppDomain.CurrentDomain.BaseDirectory + @"ffmpeg.exe""";
为此:
string ffmpegPath = @"""" + AppDomain.CurrentDomain.BaseDirectory + "ffmpeg.exe";
<强>更新强>
试试这个:
string OutputFolder = AppDomain.CurrentDomain.BaseDirectory + "Output\\" + System.IO.Path.GetFileNameWithoutExtension(videopath) + "_Output.mp4";
string ffmpegPath =AppDomain.CurrentDomain.BaseDirectory + "ffmpeg.exe";
string ffmpegParams = "-i " + videopath + " -i " + imagepath + " -filter_complex overlay=10:10 " + OutputFolder ;