我是一名正在尝试制作mms流音频应用的学生 我使用libmms获取了mms流,并使用ffmpeg解码了wma音频 但是我不知道下一步该做什么。
我最近在stackoverflow站点中看到了类似的question。 (作家 c4r1o5 )
但他在avcodec_decode_audio2之后使用了cfwritestreamwrite
是对的吗?我认为没有必要因为网络问题在mms_connect,ffmpeg解码后完成了。
是否需要使用?
我试图将原始音频放到音频缓冲区。并且在播放时,它只带有白噪声。
请帮帮我 任何提示或评论都会受到赞赏 提前谢谢。
答案 0 :(得分:1)
请发布必要的代码
并且,您不一定使用CFWriteStreamWrite
虽然我没有使用CFWriteStreamWrite的经验,但在mms流媒体中没有必要
您只需连接MMS,解码wma音频文件,队列音频缓冲区即可在iphone中播放
我想你必须了解iphone Audio Queue Service
并且在获取音频帧时一定要使用线程
基本信息在于该网站。
最后,只有白噪声的原因是因为你设置了错误的mAudioData
使用memcpy
复制音频内存。
答案 1 :(得分:0)
您必须实现AudioQueueOutputCallback才能将解码后的音频数据传递给AudioQueue。
- (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);
}
}