我有一個支持 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/nacomllo/FFmpegSample
uj5u.com熱心網友回復:
如果您沒有系結到 NSTask,您可以使用CliWrapper代替。
public static async ValueTask FfmpegRemoveAudio(string ffmpegPath, string inputFilePath, string outputFilePath)
{
await Cli.Wrap(ffmpegPath).WithArguments(new[] { "-i", inputFilePath, "-c", "copy", "-an", outputFilePath }).ExecuteAsync();
}
除了 CliWrapper,我還測驗了FfmpegCore和FFmpget.NET,它們也拋出了一些類似的例外,就像你描述的那樣。我沒有膠水,為什么他們的行為不同。有關詳細資訊,請參閱完整的作業POC。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/340822.html
標籤:C# 苹果系统 沙马林 xamarin.forms ffmpeg
上一篇:如何在XamarinForms中以秒為單位延遲隨機影像并顯示為XAML?
下一篇:單核中的多執行緒與異步編程
