【发布时间】:2017-11-04 18:11:31
【问题描述】:
我在将音频文件从 wav 转换为 mp3 时遇到问题。 我的应用程序录制语音并将音频流保存到 user_audio_raw.wav。 之后我尝试将此文件转换为 mp3 格式:
var asset = AVAsset.FromUrl(NSUrl.FromFilename(Path.Combine(Path.GetTempPath(), "user_audio_raw.wav")));
var export = new AVAssetExportSession(asset, AVAssetExportSession.PresetLowQuality);
var u = Path.Combine(Path.GetTempPath(), "user_audio_rec.mp3");
if(File.Exists(u)) {
File.Delete(u);
}
export.OutputUrl = NSUrl.FromFilename(Path.Combine(Path.GetTempPath(), "user_audio_rec.mp3"));
export.OutputFileType = AVFileType.MpegLayer3;
export.ShouldOptimizeForNetworkUse = true;
export.ExportAsynchronously(() =>
{
if (export.Error != null)
System.Diagnostics.Debug.WriteLine(export.Error.LocalizedDescription);
else {
Console.Write("Converted success!");
}
};
当我使用下一条消息调用 export.ExportAsynchronously() 时应用程序崩溃:
Foundation.MonoTouchException has been thrown
Objective-C exception thrown. Name: NSInvalidArgumentException Reason: *** -[AVAssetExportSession setOutputFileType:] Invalid output file type
Native stack trace:
0 CoreFoundation 0x0000000181fc9d1c <redacted> + 148
1 libobjc.A.dylib 0x0000000181218528 objc_exception_throw + 56
2 AVFoundation 0x000000018787fcc0 <redacted> + 0
3 BattleSpeak.Platform 0x00000001012276d0 BattleSpeak.Platform + 13596368
..........................................
但是当我尝试转换为 mp4 或任何其他格式的应用程序时,它可以完美运行并且转换没有任何问题。 有人知道为什么会这样吗?
【问题讨论】:
-
我认为 PresetLowQuality 仅适用于 QT 文件。您需要选择适用于音频的预设。
标签: xamarin xamarin.ios audio-converter