Steven vor 1 Jahr
Ursprung
Commit
da818cebc6

+ 2 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSAQRecordManager.h

@@ -17,6 +17,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)audioRecord:(KSAQRecordManager *)audioRecord didRecordAudioData:(void *)data length:(UInt32)length;
 
+- (void)recordDidStart:(NSTimeInterval)time;
+
 @end
 
 @interface KSAQRecordManager : NSObject

+ 14 - 7
KulexiuForStudent/KulexiuForStudent/Common/Base/KSAQRecordManager.m

@@ -148,6 +148,11 @@ static const int kNumberBuffers = 3;
         OSStatus status = AudioQueueStart(self.audioQueue, NULL);
         if (status == noErr) {
             self.isRunning = YES;
+            NSDate *date = [NSDate date];
+            NSTimeInterval inteveral = [date timeIntervalSince1970];
+            if (self.delegate && [self.delegate respondsToSelector:@selector(recordDidStart:)]) {
+                [self.delegate recordDidStart:inteveral*1000];
+            }
         }
     });
 }
@@ -219,13 +224,15 @@ static void inputCallback(void * inUserData,
     }
     //    printf("recorder enqueue buffer time: %f \n", inStartTime->mSampleTime / recorder.asBasicDesc.mSampleRate);
     
-    // 将音频数据写入文件
-    if (AudioFileWritePackets(recorder.mAudioFile, false, inBuffer->mAudioDataByteSize, inPacketDescs, recorder.currPacket, &inNumberPacketDescriptions, inBuffer->mAudioData) == noErr) {
-        recorder.currPacket += inNumberPacketDescriptions;
-    }
-    //消费音频数据
-    if ([recorder.delegate respondsToSelector:@selector(audioRecord:didRecordAudioData:length:)]) {
-        [recorder.delegate audioRecord:recorder didRecordAudioData:inBuffer->mAudioData length:inBuffer->mAudioDataByteSize];
+    if (inNumberPacketDescriptions > 0) {
+        // 将音频数据写入文件
+        if (AudioFileWritePackets(recorder.mAudioFile, false, inBuffer->mAudioDataByteSize, inPacketDescs, recorder.currPacket, &inNumberPacketDescriptions, inBuffer->mAudioData) == noErr) {
+            recorder.currPacket += inNumberPacketDescriptions;
+        }
+        //消费音频数据
+        if ([recorder.delegate respondsToSelector:@selector(audioRecord:didRecordAudioData:length:)]) {
+            [recorder.delegate audioRecord:recorder didRecordAudioData:inBuffer->mAudioData length:inBuffer->mAudioDataByteSize];
+        }
     }
     //将buffer给audio queue
     OSStatus status = AudioQueueEnqueueBuffer(recorder.audioQueue, inBuffer, 0, NULL);

+ 35 - 5
KulexiuForStudent/KulexiuForStudent/Common/Base/KSAccompanyWebViewController.m

@@ -822,7 +822,9 @@
                         MJWeakSelf;
                         [self downloadUrl:accompanyUrl success:^{
                             [weakSelf configVideoRecord:fileUrl];
-                        } faliure:nil];
+                        } faliure:^{
+                            
+                        }];
                         
                     }
                 }
@@ -984,10 +986,14 @@
     } success:^(NSURL * _Nonnull fileUrl) {
         
         if ([self saveAccompanyFileWithUrl:fileUrl accompanyUrl:url]) {
-            success();
+            if (success) {
+                success();
+            }
         }
-        
     } faliure:^(NSError * _Nonnull error) {
+        if (faliure) {
+            faliure();
+        }
     }];
 }
 
@@ -1211,8 +1217,32 @@
     [self postMessage:postParm];
 }
 
-
-
+#pragma mark ------- 评测app播放
+/*
+- (void)recordDidStart:(NSTimeInterval)time { // ms
+     self.recordStartTime = time;
+     if (self.isDelayCheckStart) {
+          NSLog(@"---- delay - record did start %f", time);
+          // 播放音频
+          // 播放校音音频
+          dispatch_main_sync_safe(^{
+               if (self.checkIndex % 2 == 0) {
+                    [self.dongPlayer startPlay];
+               }
+               else {
+                    [self.dingPlayer startPlay];
+               }
+          });
+     }
+     else if (self.isCompareStart) {
+          NSLog(@"---- compare - record did start %f", time);
+          // 播放伴奏
+          dispatch_main_sync_safe(^{
+               [self.musicPlayer startPlay];
+          });
+     }
+}
+*/
 
 
 - (void)audioRecord:(KSAQRecordManager *)audioRecord didRecordAudioData:(void *)data length:(UInt32)length {