質問編集履歴

2

コード追記

2017/09/03 03:15

投稿

villhell
villhell

スコア21

test CHANGED
File without changes
test CHANGED
@@ -29,3 +29,217 @@
29
29
  言語はswift3を使用しています。
30
30
 
31
31
  Xcodeは8.3.3を使用しています。
32
+
33
+
34
+
35
+ 回答がつかないのでコード追記します。
36
+
37
+
38
+
39
+ なぜ低評価つけられたのかわかりませんが、データの変換方法を聞きたかっただけだったので
40
+
41
+ コードを乗せる必要性がわかりませんが、そうではないのですね。。。
42
+
43
+
44
+
45
+ 宣言部
46
+
47
+ ```swift
48
+
49
+ let serviceType = "Peer"
50
+
51
+ var browser : MCBrowserViewController!
52
+
53
+ var assistant : MCAdvertiserAssistant!
54
+
55
+ var session : MCSession!
56
+
57
+ var peerID: MCPeerID!
58
+
59
+
60
+
61
+ // Audio
62
+
63
+ var queue: AudioQueueRef!
64
+
65
+ var dataFormat : AudioStreamBasicDescription? = nil
66
+
67
+ var con :MyMultipeerConnect = MyMultipeerConnect()
68
+
69
+
70
+
71
+ // Audio
72
+
73
+ var audioEngine : AVAudioEngine!
74
+
75
+ var audioFile : AVAudioFile!
76
+
77
+ var audioPlayer : AVAudioPlayerNode!
78
+
79
+ var outref: ExtAudioFileRef?
80
+
81
+ var audioFilePlayer: AVAudioPlayerNode!
82
+
83
+ var mixer : AVAudioMixerNode!
84
+
85
+ var filePath : String? = nil
86
+
87
+ ```
88
+
89
+
90
+
91
+ ViewDidLoad部
92
+
93
+ ```swift
94
+
95
+ override func viewDidLoad() {
96
+
97
+ super.viewDidLoad()
98
+
99
+
100
+
101
+ self.peerID = MCPeerID(displayName: UIDevice.current.name)
102
+
103
+ self.session = MCSession(peer: peerID)
104
+
105
+ self.session.delegate = self
106
+
107
+
108
+
109
+ // create the browser viewcontroller with a unique service name
110
+
111
+ self.browser = MCBrowserViewController(serviceType:serviceType,
112
+
113
+ session:self.session)
114
+
115
+ self.browser.delegate = self;
116
+
117
+
118
+
119
+ self.assistant = MCAdvertiserAssistant(serviceType:serviceType,
120
+
121
+ discoveryInfo:nil, session:self.session)
122
+
123
+ self.assistant.start()
124
+
125
+
126
+
127
+ // Audio
128
+
129
+ self.audioEngine = AVAudioEngine()
130
+
131
+ self.audioFilePlayer = AVAudioPlayerNode()
132
+
133
+ self.mixer = AVAudioMixerNode()
134
+
135
+ self.audioEngine.attach(audioFilePlayer)
136
+
137
+ self.audioEngine.attach(mixer)
138
+
139
+ }
140
+
141
+ ```
142
+
143
+
144
+
145
+ 録音開始時に呼び出す
146
+
147
+ ```swift
148
+
149
+ func startRecord() {
150
+
151
+
152
+
153
+ self.filePath = nil
154
+
155
+
156
+
157
+ try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord)
158
+
159
+ try! AVAudioSession.sharedInstance().setActive(true)
160
+
161
+
162
+
163
+ self.audioFile = try! AVAudioFile(forReading: Bundle.main.url(forResource: "1K", withExtension: "mp3")!)
164
+
165
+
166
+
167
+ let format = AVAudioFormat(commonFormat: AVAudioCommonFormat.pcmFormatInt16,
168
+
169
+ sampleRate: 44100.0,
170
+
171
+ channels: 1,
172
+
173
+ interleaved: true)
174
+
175
+
176
+
177
+ self.audioEngine.connect(self.audioEngine.inputNode!, to: self.mixer, format: format)
178
+
179
+ self.audioEngine.connect(self.audioFilePlayer, to: self.mixer, format: self.audioFile.processingFormat)
180
+
181
+ self.audioEngine.connect(self.mixer, to: self.audioEngine.mainMixerNode, format: format)
182
+
183
+
184
+
185
+ let dir = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! as String
186
+
187
+ self.filePath = dir.appending("/aaa.wav")
188
+
189
+
190
+
191
+ _ = ExtAudioFileCreateWithURL(URL(fileURLWithPath: self.filePath!) as CFURL,
192
+
193
+ kAudioFileWAVEType,
194
+
195
+ format.streamDescription,
196
+
197
+ nil,
198
+
199
+ AudioFileFlags.eraseFile.rawValue,
200
+
201
+ &outref)
202
+
203
+
204
+
205
+ self.mixer.installTap(onBus: 0, bufferSize: AVAudioFrameCount(format.sampleRate * 0.4), format: format, block: { (buffer: AVAudioPCMBuffer!, time: AVAudioTime!) -> Void in
206
+
207
+
208
+
209
+ let audioBuffer : AVAudioBuffer = buffer
210
+
211
+ _ = ExtAudioFileWrite(self.outref!, buffer.frameLength, audioBuffer.audioBufferList)
212
+
213
+
214
+
215
+ // ここでデータを送信する?
216
+
217
+ //self.session.send(data, toPeers: self.peerID, with: MCSessionSendDataMode.unreliable)
218
+
219
+ })
220
+
221
+
222
+
223
+ try! self.audioEngine.start()
224
+
225
+ }
226
+
227
+ ```
228
+
229
+
230
+
231
+
232
+
233
+ データを受信した際に呼ばれる
234
+
235
+ ```swift
236
+
237
+ func session(session: MCSession, didReceiveData data: NSData, fromPeer peerID: MCPeerID)
238
+
239
+ {
240
+
241
+ // ここでdataを再生する
242
+
243
+ }
244
+
245
+ ```

1

2017/09/03 03:15

投稿

villhell
villhell

スコア21

test CHANGED
File without changes
test CHANGED
File without changes