【发布时间】:2021-12-05 14:38:36
【问题描述】:
我有一个支持 Mac 的 Xamarin Forms 项目,我正在尝试实现 FFmpeg,所以我从其官方页面下载了静态构建,并将其添加到 Mac 项目的资源文件夹中,并在内容中使用构建操作,然后我创建了一个服务,该服务将基本上从视频中删除音频,该视频在使用 FFmpeg 命令的路径中指示,以根据以下答案执行我所拥有的服务,并且我已将其调整为 C#: https://stackoverflow.com/a/37422688/8496520
问题是当我尝试执行命令时出现以下错误:
"NSInvalidArgumentException: launch path not accessible"
而且我也不知道为什么会这样,我在服务中使用了如下代码(调用NSTask的Launch()方法时出错):
public void ExecuteFFmpeg()
{
try
{
var launchPath = NSBundle.MainBundle.PathForResource("ffmpeg", ofType: "");
var compressTask = new NSTask();
compressTask.LaunchPath = launchPath;
compressTask.Arguments = new string[] {
"-i",
"downloads/tyson.mp4",
"-c",
"copy",
"-an",
"nosound.mp4" };
compressTask.StandardInput = NSFileHandle.FromNullDevice();
compressTask.Launch();
compressTask.WaitUntilExit();
}
catch (Exception ex)
{
}
我还将项目上传到 GitHub,以防有人需要完整地查阅存储库:https://github.com/nacompllo/FFmpegSample
【问题讨论】:
-
launchpath的值是多少? -
@Jason 是我在Content中配置了构建动作的resources文件夹中添加的FFmpeg静态编译的路径,也就是说在本例中:“/Users/tecnopresley/FFmpegSample /FFmpegSample/FFmpegSample.MacOS/bin/Debug/FFmpegSample.MacOS.app/Contents/Resources/ffmpeg "
-
您是否尝试过使用不在您的项目资源中的其他路径?
标签: c# macos xamarin xamarin.forms ffmpeg