如何将 CMSampleBufferRef 转换为 NSData

2023-11-22

如何将 CMSampleBufferRef 转换为 NSData?

我已经设法获取数据MPMediaItem通过遵循 Erik Aigner 的回答这个线程,但是数据的类型CMSampleBufferRef.

我知道 CMSampleBufferRef 是一个结构体,在CMSampleBuffer 参考在 iOS 开发库中,但我认为我不完全理解它是什么。 CMSampleBuffer 函数似乎都不是明显的解决方案。


在这里,这适用于您正在查看的音频样本缓冲区,如果您想查看整个过程(将 MPMediaItem 中的所有音频数据获取到文件中,请查看this问题

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];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 CMSampleBufferRef 转换为 NSData 的相关文章

随机推荐

  • pandas 对象没有属性名称 Series

    import pandas as pd numbers 1 2 3 4 5 ser pd Series numbers print ser 我用 python 为 pandas 系列编写了这段代码 但它给了这个 属性错误 模块 对象没有属性
  • 使用OpenCV访问IP摄像头

    无法访问视频流 任何人都可以帮我获取视频流吗 我已经在谷歌中搜索了解决方案 并在堆栈溢出中发布了另一个问题 但不幸的是没有什么可以解决问题 import cv2 cap cv2 VideoCapture cap open http 192
  • Travis CI 测试具有相应环境变量集的分支

    我有一个项目正在尝试使用 Travis CI 自动化测试 我有一个 dev 分支和一个 test 分支 它们有不同的环境变量 例如 在 dev 分支上 我需要连接到由环境变量指定的与测试分支不同的 API 那么 当我在 Travis 上的
  • 不能抛出 DataAccessException 类型的异常;异常类型必须是 Throwable 的子类

    我的源代码如下 它有一个错误 不能引发 DataAccessException 类型的异常 异常类型必须是 Throwable 的子类 我不明白为什么会发生错误 让我知道 谢谢 package com sds afi cosmos cmm
  • 处理 PyLint 不一致返回语句的警告

    我正在某些代码上运行 PyLint 并收到警告 函数中的所有 return 语句都应该返回表达式 或者都不应该返回表达式 不一致的返回语句 这是我的代码 def determine operand count opcode form opc
  • 如何查看 Reader 是否处于 EOF?

    我的代码需要读入整个文件 目前我正在使用以下代码 BufferedReader r new BufferedReader new FileReader myFile while r ready String s r readLine do
  • 使用 StructureMap 进行单元测试

    我在 DI IOC 的 Web 项目中使用 StructureMap 它工作完美 但我不知道如何使用 StructureMap 编写单元测试 我应该像在 global asax 中那样在 AssemblyInitialize start S
  • UICollectionView 将手指拖动到单元格上以选择它们

    Using UICollectionView 是否可以通过将手指拖动到其中几个单元格上来选择多个单元格 例如 如果您将手指拖动到一行 6 上 然后向下拖动到下一行 它将选择所有这些 尝试了一些简单的事情 UISwipeGestureReco
  • Java VisualVM 在 OOME 上启用堆转储

    根据文档当应用程序遇到 OutOfMemoryException 时 可以自动进行堆转储 OutOfMemoryException 进程之后就从左侧菜单中消失 此功能在 VisualVM 中如何工作 Thanks C work temp g
  • DbSet.Cast() 错误:无法从非通用 DbSet 为“Entity”类型的对象创建 DbSet

    版本信息 我正在使用 C 4 5 Entity Framework 6 0 和 MEF 代码和单元测试 我创建了一个测试项目来解释这个问题 https skydrive live com redir resid E3C97EC293A340
  • 如何通过 HTTP 向受众发送 Firebase 通知

    在 Firebase 控制台中 我根据各种用户属性设置受众群体 现在可以通过控制台向不同的用户群体发送通知 有没有办法通过向 fcm 服务器发出 http 请求来执行相同的操作 to 字段应该有一个技巧 但我无法弄清楚 火力战士在这里 目前
  • AngularJS 中“getElementById”的替代方案

    检查这个PLNKR 我有一个带有 id 的列表myMenuList 这是一个加入script js显示Numer of li and UL width by scope mml angular element document getEle
  • JPA/hibernate 时间戳未保存在数据库/对象实体中

    我使用 javax persistence 作为我的实体对象 Mysql 作为数据库 我的实体对象有一个字段entryDate Column name ENTRYDATE private Date entryDate new Date 当我
  • 如何在Android Studio中将库导出到Jar?

    我已经下载了一些库源并想使用以下命令将其导出为 Jar 文件 安卓工作室 有没有办法使用 Android studio 导出到 jar 文件 edit 我想要导出为 jar 的库是一个 Android 库 它被称为 StandOut 可以从
  • UILabel 未更新

    抱歉这个基本问题 但这让我困扰了一段时间 我从 UITable 创建一个详细信息视图并尝试动态设置其标签 但它们没有更新 void tableView UITableView tableView didSelectRowAtIndexPat
  • 我应该将哪个数据库与 Node.js 一起使用? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我应该将哪个数据库与 No
  • 如何使用Python/PyQT/Win32获取Windows任务栏的高度

    我试图让我的 GUI 程序与 Windows 屏幕的右下角对齐 当任务栏没有隐藏时 我的程序就会站在任务栏的顶部 使用Python PyQT Win32时 我该如何 检查任务栏的自动隐藏功能是否开启 获取任务栏的高度 As 大卫 赫弗南提到
  • 当出现错误时,将用户重定向回表单后,如何重新填写用户填写的表单字段?

    简洁版本 我有一个包含 100 多个字段的表单 每个字段都有服务器端验证 我已成功提交表格并提交数据 当验证出现错误时 我什至将它们重定向回表单 并显示具体发生的错误 当他们重定向回 大型 表单时 所有数据都消失了 他们需要重新输入 我已经
  • 如何访问整个 AutoFac 容器以在 Orchard 中注册依赖项?

    这个问题非常简单 我想访问整体AutoFac容器 以便我可以在其中注册我的依赖项 remark 我不同意继承自IDependency因为在我的项目中 它会导致 两个程序集 的循环引用 我想要做的是使用密钥注册一个组件 并在其他程序集中使用相
  • 如何将 CMSampleBufferRef 转换为 NSData

    如何将 CMSampleBufferRef 转换为 NSData 我已经设法获取数据MPMediaItem通过遵循 Erik Aigner 的回答这个线程 但是数据的类型CMSampleBufferRef 我知道 CMSampleBuffe