首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Iphone中播放原始音频?(使用ffmpeg)

如何在Iphone中播放原始音频?(使用ffmpeg)
EN

Stack Overflow用户
提问于 2011-08-10 15:13:51
回答 2查看 2K关注 0票数 1

我是一个学生,谁试图制作mms流音频应用程序。

我得到mms流使用libmms,并解码wma音频使用ffmpeg。

但是我不知道下一步该怎么做。

最近,我在堆栈溢出站点上看到了类似的问题。(作者是c4r1o5)

但他在avcodec_decode_audio2之后使用了cfwritestreamwrite。

是那么回事吗?我认为这是没有必要的,因为网络问题完成后,mms_connect,ffmpeg解码。

有必要用吗?

我试着把原始音频放进音频缓冲器。当玩的时候,它只带有白色的噪音。

请帮帮我。

如有任何提示或评论,将不胜感激。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-15 05:15:44

请张贴必要的代码。

而且,您不一定要使用CFWriteStreamWrite。

尽管我没有使用CFWriteStreamWrite的经验,但在mms流中,这是不必要的。

您所需要的只是连接MMS,解码wma音频文件,队列音频缓冲区在iphone中播放。

我想你必须了解iphone 音频队列服务

并确保在获得音频帧时使用线程。

该网站提供了基本信息。

最后,之所以只有白噪声,是因为您设置了错误的mAudioData。

使用memcpy复制音频内存。

票数 1
EN

Stack Overflow用户

发布于 2011-11-19 20:35:21

您必须实现AudioQueueOutputCallback才能将解码的音频数据传递给AudioQueue。

代码语言:javascript
复制
- (void)handlePlayCallback:(AudioQueueRef) inAudioQueue buffer:(AudioQueueBufferRef) inBuffer {
    // copy decoded audio data to inBuffer->mAudioData
    // and set the size of the copied data like this
    // inBuffer->mAudioDataByteSize = data_written

    if(inBuffer->mAudioDataByteSize > 0) {
        AudioQueueEnqueueBuffer(inAudioQueue, inBuffer, 0, NULL);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7013203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档