ios - 在 iOS 上使用 Objective-C 将实时麦克风数据流式传输到其他设备?
问题描述
尝试在 iOS 上的设备之间传输麦克风音频,其中有人可以对着他们的 iPhone 说话,它会在某个地方的另一个扬声器上播放,连接是通过套接字创建的。我在这里发现了一个类似的问题,但它涵盖了objective-C中程序的网络部分,我正在使用python处理网络,并希望使用objective-C和AVFoundation进行记录?我已经整理好了网络部分,我只是不确定如何使用objective-C进行记录。我发现的大多数示例都在做一些事情[recorder start];
,但是我应该如何使用它通过套接字对象发送音频?我希望有类似的东西
var = mic.read(); socket.send(var, addr)
或者只是我通过套接字发送的任何对象,这些对象代表可以在套接字的另一侧相应处理的音频数据。甚至可能是这样的AudioObjectOfSomeSort *var = [recorder start];
?然后在 python 中socket.send(var, addr)
?我在网上找到了这段代码:
- (IBAction)startRecord:(id)sender {
NSArray *path = [NSArray arrayWithObjects:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject], @"myRecording.m4a", nil];
NSURL *url = [NSURL fileURLWithPathComponents:path];
AVAudioSession *session = [[AVAudioSession alloc] init];
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
NSMutableDictionary *setting = [[NSMutableDictionary alloc] init];
[setting setValue:[NSNumber numberWithInteger:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
[setting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[setting setValue:[NSNumber numberWithInteger:1] forKey:AVNumberOfChannelsKey];
recorder = [[AVAudioRecorder alloc] initWithURL:url settings:setting error:nil];
recorder.meteringEnabled = YES;
[recorder prepareToRecord];
[recorder record];
}
- (IBAction)stopRecord:(id)sender {
[recorder stop];
AVAudioSession *session = [[AVAudioSession alloc] init];
[session setActive:NO error:nil];
}
- (IBAction)play:(id)sender {
if (!recorder.recording){
player = [[AVPlayer alloc] initWithURL:recorder.url];
[player play];
}
}
这段代码只是记录并保存到文件中,我需要通过套接字连续传输音频。我确实找到了这个和这个,但我不太了解 Swift,也没有足够的知识将它翻译成 Objective-C,我是一名 python 程序员。此外,通过套接字发送的数据是否能够以某种方式在 Android 设备上被 Java 解码、读取和播放?到目前为止,我还没有发现任何其他东西。任何帮助将不胜感激。
解决方案
推荐阅读
- javascript - 减少和求和对象数组(JS)
- python - 语音识别的冻结模型是如何创建的?
- powershell - 如何使用 Powershell 识别磁盘 Optane 或 Raid 类型?
- ios - 集合视图自动调整大小和设置重复背景
- xml - 如何使用ant替换XML文件中的一行?
- java - 给定字符串中的FirstNonRepeatingCharacter在java中使用时间复杂度O(n)
- html - HTML 5:我们可以更改默认错误消息的 css
- c++ - 如何在 C++ 中使用向量创建二维数组?
- python - 如何解决 IndexError: index (x) is out of bounds for axis 0 with size (y) in wxPython?
- java - 无法运行 Spring Boot 应用程序 - rsa.crypto.RsaSecretEncryptor 不存在