android - 从 mp4 文件中提取 xamarin 中的音频
问题描述
我需要将 mp4(或任何其他视频格式)转换为 mp3 或 wav 文件。我正在使用 C# Xamarin.Forms。我使用的任何库要么对我不起作用,要么与 android 不兼容。我尝试过使用 Xamarin.Android.FFMpeg 和 Xobe.FFMpeg。我重新发布此内容是因为它被标记为重复,并且我明确表示该解决方案对我不起作用。这是被标记为重复的帖子:如何从视频文件中提取音频?(安卓) 。拜托,我试过了,但是当我尝试在解决方案中运行代码时,它只是给了我带有进度条的“下载视频转换器”对话框,此外,它甚至没有提取音频,所以在用户等待这么长时间后时间,结果证明是浪费时间。提前致谢!:)
编辑1:
这是我正在使用的代码:
private async Task<string> ExtractAudioAsync(string path, Action<string> logger = null,
Action<int, int> onProgress = null)
{
List<string> cmd = new List<string>();
cmd.Add("-i");
cmd.Add(path + ".mp4");
cmd.Add("-vn");
cmd.Add("-acodec");
cmd.Add("copy");
cmd.Add(path + ".mp3");
string cmdParams = string.Join(' ', cmd);
await FFMpeg.Xamarin.FFMpegLibrary.Run(Context, cmdParams);
return path + ".mp3";
}
没有抛出异常。调用 Run 方法时,它只会在应用程序上显示以下对话框:
之后,它只是关闭对话框并转到返回行,甚至没有从视频中提取音频。即使我再次运行此代码,它也会做同样的事情,再次下载它。
编辑2:
我尝试添加该-report
选项,但它只是做了同样的事情并且没有保存任何日志文件。难道我做错了什么?
解决方案
推荐阅读
- excel - 当用户表单数据与现有单元格匹配时更新下一列中的单元格的代码 - excel vba userform
- jenkins - 在 Jenkins 中运行测试时是否仍然可以保留完整的 stdio JUnit 输出?
- linux - 如何从 AOSP 为 Android 构建 Linux 内核?
- here-api - Fleet Calculate Route API 问题 [here-api] - 已回答的问题已消失,因此我再次发布此问题
- node.js - 如何从对象数组中拼接一个对象?
- node.js - Azure 上的 npm start 错误 - EADDRNOTAVAIL
- sql - 有没有办法在每次避免 ORDER BY 子句时选择不同的行?
- c++ - 如何在 C++ 中更有效地分配具有相同名称的变量?
- java - Spring JPA 的多租户
- python - SQLITE3:更新数据库时出错