首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将CMSampleBufferRef转换为NSData

如何将CMSampleBufferRef转换为NSData
EN

Stack Overflow用户
提问于 2011-12-19 02:54:16
回答 1查看 11.1K关注 0票数 11

如何将CMSampleBufferRef转换为NSData?

我已经设法通过遵循Erik Aigner在this thread上的回答来获取MPMediaItem的数据,但是数据是CMSampleBufferRef类型的。

我知道CMSampleBufferRef是一个结构体,并且是在iOS开发人员库的CMSampleBuffer Reference中定义的,但我不认为我完全理解它是什么。CMSampleBuffer函数似乎都不是一个显而易见的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-19 07:52:34

这就是你正在查看的音频样本缓冲区,如果你想查看整个过程(将所有音频数据从MPMediaItem保存到一个文件中,请查看this问题

代码语言:javascript
运行
复制
CMSampleBufferRef ref=[output copyNextSampleBuffer];
        // NSLog(@"%@",ref);
        if(ref==NULL)
            break;
        //copy data to file
        //read next one
        AudioBufferList audioBufferList;
        NSMutableData *data=[[NSMutableData alloc] init];
        CMBlockBufferRef blockBuffer;
        CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(ref, NULL, &audioBufferList, sizeof(audioBufferList), NULL, NULL, 0, &blockBuffer);
        // NSLog(@"%@",blockBuffer);



        for( int y=0; y<audioBufferList.mNumberBuffers; y++ )
        {
            AudioBuffer audioBuffer = audioBufferList.mBuffers[y];
            Float32 *frame = (Float32*)audioBuffer.mData;


            [data appendBytes:frame length:audioBuffer.mDataByteSize];



        }


        CFRelease(blockBuffer);
        CFRelease(ref);
        ref=NULL;
        blockBuffer=NULL;
        [data release];
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8553987

复制
相关文章

相似问题

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