如何解决“硬件正在使用”问题问题(错误代码:“hwiu”)?

发布于 2024-10-15 03:31:44 字数 823 浏览 2 评论 0原文

我创建了一个 iPhone 应用程序,其中包含 AudioUnit 录音、转换、音频编辑和合并部分。除了转换之外,我完成了所有操作。此应用程序仅适用于 iOS 4 或更高版本。

我尝试将 .caf 转换为 .m4a 文件。但我收到 kAudioConverterErr_HardwareInUse 错误。然后我尝试将 .caf 文件转换为 .wav 文件。然后将.wav 文件转换为.m4a 文件。但我遇到了同样的问题。

我对这个问题不太清楚。在 Apple 文档中,他们提到像;

“如果底层硬件编解码器变得不可用(可能是由于音频中断),则从 AudioConverterFillComplexBuffer 函数返回。

收到此错误后,您的应用程序必须停止调用 AudioConverterFillComplexBuffer。您可以检查 kAudioConverterPropertyCanResumeFromInterruption 属性的值以确定您使用的转换器是否可以在中断后恢复处理如果可以,则等待来自音频会话服务的中断结束调用,重新激活音频会话,最后恢复使用编解码器

如果转换器在中断后无法恢复处理,则在中断时您必须放弃转换,重新实例化转换器,然后再次执行转换。”

请帮我解决这个问题。

I have created an iPhone app with recording with AudioUnit, Conversion, Audio Editing and Merging parts. I done everything except Conversion. This app will work only in iOS 4 or higher.

I tried to convert .caf to .m4a file. But I am getting kAudioConverterErr_HardwareInUse error. Then I tried to convert .caf file to .wav file. Then .wav file to .m4a file. But I am getting the same issue.

I am not clear with this issue. In the Apple documentation, they mentioned like ;

"Returned from the AudioConverterFillComplexBuffer function if the underlying hardware codec has become unavailable, probably due to an audio interruption.

On receiving this error, your application must stop calling AudioConverterFillComplexBuffer. You can check the value of the kAudioConverterPropertyCanResumeFromInterruption property to determine if the converter you are using can resume processing after an interruption. If so, then wait for an interruption-ended call from Audio Session Services, reactivate the audio session, and finally resume using the codec.

If the converter cannot resume processing after an interruption, then on interruption you must abandon the conversion, re-instantiate the converter, and perform the conversion again."

Please help me to resolve it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

划一舟意中人 2024-10-22 03:31:44

我刚刚解决了这样的问题。
就我而言,我的应用程序中有 MPMoviePlayerController、音频队列播放器、录音机。

当内容结束时,电影播放器​​需要手动调用“停止”方法。
否则,播放状态将锁定在 MPMoviePlaybackStatePlaying。然后我就不能再播放 MP3 并在尝试时得到“hwiu”。但PCM仍然有效。

也许是因为压缩音频(MP3、AAC 等)是由独特的硬件设备处理的。如果您使用不同的技术(MPMoviePlayerController 和音频队列服务)来播放压缩音频,则需要在播放完毕后释放一次设备,因为它们都共享同一设备。

I just resolved such a problem.
In my case, I have MPMoviePlayerController, audio queue player, audio recorder in the application.

the movie player needs manually calling "stop" method when content ends.
Otherwise the play state is lock at MPMoviePlaybackStatePlaying. Then I can no more play MP3 and get "hwiu" when I try it. But PCM still work.

Maybe it's because the compressed audio (MP3, AAC, ...) is handled by a unique hardware device. If you are using different techniques (MPMoviePlayerController and audio queue service) to playback compressed audio, you need to release the device once after you finish playing since they are all share the same device.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文