如何通过套接字或框架将音频从 iPhone 的麦克风流式传输到 Mac/PC?
Posted
技术标签:
【中文标题】如何通过套接字或框架将音频从 iPhone 的麦克风流式传输到 Mac/PC?【英文标题】:How can I stream audio from the microphone of an iPhone to a Mac/PC via sockets or a framework? 【发布时间】:2012-03-22 02:42:28 【问题描述】:如何将音频从 iPhone 的麦克风流式传输到 Mac/PC?是否已经有一些框架,或者我可以通过套接字发送音频。不过,我是套接字新手。基本上,我希望能够对着 iPhone 讲话,并且计算机将接收 iPhone 的麦克风输入作为其自己的麦克风输入,用于没有麦克风的计算机。我已经有一个应用程序可以与 Mac 建立 bonjour 连接,它运行一个非常简单的服务器,iPhone 可以向计算机发送文本,但 iPhone 怎么能从麦克风向它发送音频、实时音频呢?
【问题讨论】:
【参考方案1】:您需要结合使用 AVCaptureSession 和 AVCaptureDevice 才能从麦克风读取数据 - 请参阅 AV Foundation 编程指南。 http://developer.apple.com/library/ios/#DOCUMENTATION/AVFoundation/Reference/AVCaptureAudioDataOutput_Class/Reference/Reference.html#//apple_ref/occ/cl/AVCaptureAudioDataOutput
获取使用套接字的链接
@interface Client : NSObject
NSInputStream *_inputStream;
NSOutputStream *_outputStream;
@implementation Client
- (void)initNetworkCommunication
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"localhost", 50000, &readStream, &writeStream);
_inputStream = (__bridge NSInputStream *)readStream;
_outputStream = (__bridge NSOutputStream *)writeStream;
[_inputStream setDelegate:self];
[_outputStream setDelegate:self];
[_inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[_outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[_inputStream open];
[_outputStream open];
// send data to server
- (IBAction)onSendButtonTapped:(id)sender
NSString *command = self.commandField.text;
NSData *data = [[NSData alloc] initWithData:[command dataUsingEncoding:NSUTF8StringEncoding]];
[_outputStream write:[data bytes] maxLength:[data length]];
【讨论】:
以上是关于如何通过套接字或框架将音频从 iPhone 的麦克风流式传输到 Mac/PC?的主要内容,如果未能解决你的问题,请参考以下文章