Bläddra i källkod

更新语音评测问题

i2edu 5 år sedan
förälder
incheckning
57595af7ca
1 ändrade filer med 25 tillägg och 8 borttagningar
  1. 25 8
      ios/Classes/M4aToPcmHelper.m

+ 25 - 8
ios/Classes/M4aToPcmHelper.m

@@ -33,19 +33,19 @@
     AVURLAsset *songAsset = [AVURLAsset URLAssetWithURL:url options:nil];
     NSError *assetError = nil;
     AVAssetReader *assetReader = [AVAssetReader assetReaderWithAsset:songAsset
-                                                                error:&assetError];
+                                                               error:&assetError];
     if (assetError) {
         NSLog (@"error: %@", assetError);
         return nil;
     }
     
     AVAssetWriter *assetWriter = [AVAssetWriter assetWriterWithURL:exportURL
-                                                           fileType:AVFileTypeCoreAudioFormat
-                                                              error:&assetError];
+                                                          fileType:AVFileTypeCoreAudioFormat
+                                                             error:&assetError];
     
     AVAssetReaderOutput *assetReaderOutput = [AVAssetReaderAudioMixOutput
-                                               assetReaderAudioMixOutputWithAudioTracks:songAsset.tracks
-                                               audioSettings: nil];
+                                              assetReaderAudioMixOutputWithAudioTracks:songAsset.tracks
+                                              audioSettings: nil];
     
     [assetReader addOutput: assetReaderOutput];
     
@@ -67,7 +67,7 @@
                                     [NSNumber numberWithBool:NO], AVLinearPCMIsBigEndianKey,
                                     nil];
     AVAssetWriterInput *assetWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio
-                                                                               outputSettings:outputSettings];
+                                                                              outputSettings:outputSettings];
     if ([assetWriter canAddInput:assetWriterInput]) {
         [assetWriter addInput:assetWriterInput];
     } else {
@@ -84,7 +84,13 @@
     CMTime startTime = CMTimeMake (0, soundTrack.naturalTimeScale);
     [assetWriter startSessionAtSourceTime: startTime];
     
+    while (assetWriterInput.readyForMoreMediaData == FALSE) {
+        NSDate *maxDate = [NSDate dateWithTimeIntervalSinceNow:0.1];
+        [[NSRunLoop currentRunLoop] runUntilDate:maxDate];
+        NSLog(@"等待几秒试试");
+    }
     __block UInt64 convertedByteCount = 0;
+    BOOL isFinish = false;
     
     while (assetWriterInput.readyForMoreMediaData) {
         CMSampleBufferRef nextBuffer = [assetReaderOutput copyNextSampleBuffer];
@@ -92,17 +98,28 @@
             // append buffer
             [assetWriterInput appendSampleBuffer: nextBuffer];
             convertedByteCount += CMSampleBufferGetTotalSampleSize (nextBuffer);
-        } else {
+
+        }else{
             // done!
             [assetWriterInput markAsFinished];
             [assetWriter finishWritingWithCompletionHandler:^{
             }];
             [assetReader cancelReading];
+            isFinish = true;
+
             return [NSData dataWithContentsOfURL:exportURL];
-            break;
         }
     }
+    // done!
+    if (!isFinish) {
+        [assetWriterInput markAsFinished];
+        [assetWriter finishWritingWithCompletionHandler:^{
+        }];
+        [assetReader cancelReading];
+
+    }
     return [NSData dataWithContentsOfURL:exportURL];
 }
 
 @end
+