ios 录音播放udp数据包传输过来的pcmData流

上传者: github_35041937 | 上传时间: 2023-02-21 14:41:23 | 文件大小: 184KB | 文件类型: ZIP
https://blog.csdn.net/github_35041937/article/details/88354621 一般的文章都会写pcm文件的播放 以及pcm文件的录音 我这里写的是一台手机录音 把采集到的pcm数据 通过socket 发送给服务端 另外一台手机作为服务端 把从socket端接收到的pcm数据 通过麦克风播放出来就搞定。 https://www.jianshu.com/p/5f0b807e5a73 这篇文章写了udp的通讯 然后我自己添加了录音的部分 使用了AudioUnit 这种方案可以做到低延时 还添加了AudioQueue的方案进行播放 因为udp的不可靠性 我要防止udp的丢包和粘包 于是加上了 协议头 音频标识 音频长度 拼接在最前面 我没处理粘包改怎么做,建议你们自己加,大概思路就是 把两个包合成一个包来处理即可。 写这篇文章的时候还参考了另外一篇文章的思路 https://www.jianshu.com/p/d903d2c8ffd2 说到了遇到网络卡该怎么处理 一点是要缓冲一段再播放, 另外一点就是加上空的静音包, 来保障音频的连续性。

文件下载

资源详情

[{"title":"( 40 个子文件 184KB ) ios 录音播放udp数据包传输过来的pcmData流","children":[{"title":"udpDemo","children":[{"title":"textDemoTests","children":[{"title":"textDemoTests.m <span style='color:#111;'> 898B </span>","children":null,"spread":false},{"title":"Info.plist <span style='color:#111;'> 733B </span>","children":null,"spread":false}],"spread":true},{"title":".DS_Store <span style='color:#111;'> 6.00KB </span>","children":null,"spread":false},{"title":"textDemoUITests","children":[{"title":"textDemoUITests.m <span style='color:#111;'> 1.18KB </span>","children":null,"spread":false},{"title":"Info.plist <span style='color:#111;'> 733B </span>","children":null,"spread":false}],"spread":true},{"title":"textDemo.xcodeproj","children":[{"title":"project.xcworkspace","children":[{"title":"xcshareddata","children":[{"title":"IDEWorkspaceChecks.plist <span style='color:#111;'> 238B </span>","children":null,"spread":false}],"spread":true},{"title":"contents.xcworkspacedata <span style='color:#111;'> 153B </span>","children":null,"spread":false},{"title":"xcuserdata","children":[{"title":"liurenhua.xcuserdatad","children":[{"title":"UserInterfaceState.xcuserstate <span style='color:#111;'> 32.80KB </span>","children":null,"spread":false}],"spread":true},{"title":"yeyibo.xcuserdatad","children":[{"title":"UserInterfaceState.xcuserstate <span style='color:#111;'> 29.70KB </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true},{"title":"xcuserdata","children":[{"title":"liurenhua.xcuserdatad","children":[{"title":"xcdebugger","children":[{"title":"Breakpoints_v2.xcbkptlist <span style='color:#111;'> 473B </span>","children":null,"spread":false}],"spread":true},{"title":"xcschemes","children":[{"title":"xcschememanagement.plist <span style='color:#111;'> 660B </span>","children":null,"spread":false},{"title":"textDemo.xcscheme <span style='color:#111;'> 4.09KB </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"yeyibo.xcuserdatad","children":[{"title":"xcdebugger","children":[{"title":"Breakpoints_v2.xcbkptlist <span style='color:#111;'> 91B </span>","children":null,"spread":false}],"spread":true},{"title":"xcschemes","children":[{"title":"xcschememanagement.plist <span style='color:#111;'> 331B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true},{"title":"project.pbxproj <span style='color:#111;'> 24.31KB </span>","children":null,"spread":false}],"spread":true},{"title":"textDemo","children":[{"title":"AudioUnitRecorder.h <span style='color:#111;'> 912B </span>","children":null,"spread":false},{"title":"ViewController.m <span style='color:#111;'> 4.44KB </span>","children":null,"spread":false},{"title":"Info.plist <span style='color:#111;'> 1.53KB </span>","children":null,"spread":false},{"title":"SendViewController.m <span style='color:#111;'> 3.15KB </span>","children":null,"spread":false},{"title":"AudioPlayer.h <span style='color:#111;'> 884B </span>","children":null,"spread":false},{"title":"main.m <span style='color:#111;'> 329B </span>","children":null,"spread":false},{"title":"GCD","children":[{"title":"GCDAsyncUdpSocket.m <span style='color:#111;'> 130.20KB </span>","children":null,"spread":false},{"title":"GCDAsyncSocket.h <span style='color:#111;'> 57.98KB </span>","children":null,"spread":false},{"title":"GCDAsyncUdpSocket.h <span style='color:#111;'> 45.81KB </span>","children":null,"spread":false},{"title":"GCDAsyncSocket.m <span style='color:#111;'> 220.45KB </span>","children":null,"spread":false},{"title":"Documentation.html <span style='color:#111;'> 1.82KB </span>","children":null,"spread":false}],"spread":true},{"title":"AudioPlayer.m <span style='color:#111;'> 8.55KB </span>","children":null,"spread":false},{"title":"Base.lproj","children":[{"title":"LaunchScreen.storyboard <span style='color:#111;'> 1.63KB </span>","children":null,"spread":false},{"title":"Main.storyboard <span style='color:#111;'> 13.61KB </span>","children":null,"spread":false}],"spread":false},{"title":"AudioUnitRecorder.m <span style='color:#111;'> 7.52KB </span>","children":null,"spread":false},{"title":"ViewController.h <span style='color:#111;'> 210B </span>","children":null,"spread":false},{"title":"AppDelegate.h <span style='color:#111;'> 333B </span>","children":null,"spread":false},{"title":"Assets.xcassets","children":[{"title":"icon-back.imageset","children":[{"title":"icon-back@3x.png <span style='color:#111;'> 1.34KB </span>","children":null,"spread":false},{"title":"icon-back@2x.png <span style='color:#111;'> 775B </span>","children":null,"spread":false},{"title":"Contents.json <span style='color:#111;'> 384B </span>","children":null,"spread":false},{"title":"icon-back.png <span style='color:#111;'> 348B </span>","children":null,"spread":false}],"spread":false},{"title":"AppIcon.appiconset","children":[{"title":"Contents.json <span style='color:#111;'> 1.05KB </span>","children":null,"spread":false}],"spread":false},{"title":"Contents.json <span style='color:#111;'> 62B </span>","children":null,"spread":false}],"spread":false},{"title":"AppDelegate.m <span style='color:#111;'> 1.98KB </span>","children":null,"spread":false},{"title":"SendViewController.h <span style='color:#111;'> 215B </span>","children":null,"spread":false}],"spread":false}],"spread":true}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明