菜鸟教程小白 发表于 2022-12-12 15:24:32

ios - AVAssetExportSession 不适用于 ios 7


                                            <p><p>带有铃声软件的 ios 7 不工作。 ios 5 和 ios 6 工作正常。
当我使用 ios 7 运行它时,铃声的持续时间与创建源文件的时间相同。需要40秒。但似乎是 300-400 秒。</p>

<pre><code>- (void)Convert{

    AVURLAsset *songAsset = ;

    AVAssetExportSession *exporter = [
                                     initWithAsset: songAsset
                                     presetName: AVAssetExportPresetAppleM4A];

    //exporter.outputFileType = @&#34;com.apple.m4a-audio&#34;;

    exporter.outputFileType = AVFileTypeAppleM4A;

    CMTime start = CMTimeMakeWithSeconds(self.audioplayer.currentTime, 1);
   CMTime duration = CMTimeMakeWithSeconds(40, 1);
   CMTimeRange range = CMTimeRangeMake(start, duration);
   exporter.timeRange = range;

    NSString *exportFile = [ stringByAppendingPathExtension:@&#34;m4r&#34;];


    if ([ fileExistsAtPath:exportFile])
       [ removeItemAtPath:exportFile error:nil];


    NSURL *exportURL = ;
   exporter.outputURL = exportURL;

    [exporter exportAsynchronouslyWithCompletionHandler:^{

      int exportStatus = exporter.status;
       switch (exportStatus) {

            case AVAssetExportSessionStatusFailed: {

                NSError *exportError = exporter.error;
               NSLog (@&#34;AVAssetExportSessionStatusFailed: %@&#34;, exportError);
               break;
         }
         case AVAssetExportSessionStatusCompleted: {
               NSLog (@&#34;AVAssetExportSessionStatusCompleted--&#34;);
               break;
         }
            case AVAssetExportSessionStatusUnknown: { NSLog (@&#34;AVAssetExportSessionStatusUnknown&#34;); break;}
         case AVAssetExportSessionStatusExporting: { NSLog (@&#34;AVAssetExportSessionStatusExporting&#34;); break;}
         case AVAssetExportSessionStatusCancelled: { NSLog (@&#34;AVAssetExportSessionStatusCancelled&#34;); break;}
         case AVAssetExportSessionStatusWaiting: { NSLog (@&#34;AVAssetExportSessionStatusWaiting&#34;); break;}
               default: { NSLog (@&#34;didn&#39;t get export status&#34;); break;}
         }

      }];
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这样做是为了设置时间范围</p>

<pre><code>[songAsset insertTimeRange:CMTimeRangeMake(kCMTimeZero, songAsset.duration)
                     ofTrack:[ objectAtIndex:0]
                      atTime:kCMTimeZero
                     error:nil];
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - AVAssetExportSession 不适用于 ios 7,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/19225914/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/19225914/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - AVAssetExportSession 不适用于 ios 7