录制实时流媒体音频

Posted

技术标签:

【中文标题】录制实时流媒体音频【英文标题】:record live streaming audio 【发布时间】:2010-07-25 00:04:48 【问题描述】:

我实际上正在制作一个应用程序,它必须在 ipad 上播放和录制来自互联网的流式音频。音频流已经完成,我很快就要到录音部分了,我不知道如何继续。

能给个提示吗???主意?它必须在录制到 AAC 或 MP3 的同时播放。

谢谢。

【问题讨论】:

有什么解决办法吗?请找到以下链接:***.com/questions/10931615/… 如果您有任何录制直播音频的解决方案,能否提供给我? 【参考方案1】:

您需要使用较低级别的 AudioQueue API,并使用 Audiosession API 来设置音频会话。

然后您需要填写一个AudioStreamBasicDescription 结构并使用AudioQueueNewInput() 创建一个新的输入队列,并包含用于处理输入缓冲区的回调函数。

然后您需要使用AudioQueueAllocateBuffer()AudioQueueEnqueueBuffer() 创建3 个缓冲区。只有这样您才能准备好致电AudioQueueStart()。您还应该处理音频会话中断,并处理停止音频队列。

这只会为您提供包含未压缩 16 位整数 PCM 音频数据的缓冲区流。你仍然需要压缩数据,这是另一种涉及使用AudioConverter API 的蠕虫,我没有在 iPhone OS 上做过,所以我不知道在那里会起作用。

【讨论】:

嗨卢修斯谢谢,你能解释一下xD我是新人,我迷路了:s 您有什么具体问题吗? 您是否有执行此操作(即录制)的代码示例? :(【参考方案2】:

请看一下这个框架。录制时提供数据供录制Streaming Kit

通过 HTTP 播放 MP3

STKAudioPlayer* audioPlayer = [[STKAudioPlayer alloc] init];

[audioPlayer play:@"http://www.abstractpath.com/files/audiosamples/sample.mp3"];

并使用此委托将其数据附加到 NSMutabledata 以离线播放。

在播放前截取 PCM 数据

 [audioPlayer appendFrameFilterWithName:@"MyCustomFilter" block:^(UInt32 channelsPerFrame, UInt32 bytesPerFrame, UInt32 frameCount, void* frames)
   
   ...
   ];

【讨论】:

以上是关于录制实时流媒体音频的主要内容,如果未能解决你的问题,请参考以下文章

使用cordova媒体插件录制音频会导致空文件

ionic Cordova 使用媒体插件在 IOS 上录制音频失败

流媒体开发9ffmpeg实现视频录制

流媒体开发9ffmpeg实现视频录制

播放流后音频队列无法录制音频

如何获得低于 3.0 版本的 Android 设备的实时流媒体音频?