【问题标题】:AVAudioPlayer duration is not matching with the actual duration of audio fileAVAudioPlayer 持续时间与音频文件的实际持续时间不匹配
【发布时间】:2013-05-11 09:42:39
【问题描述】:

我正在连接 2 个音频文件。然后我通过 AVAudioPlayer 播放该音频文件。连接的文件播放完美。但是,当我想获取 audioPlayer 的持续时间时,它会显示错误的持续时间,即 2 秒。但我连接的音频文件的实际持续时间是 7 秒。哪里有问题?提前感谢您的帮助。

-(void)playAudio{

part1 = [NSMutableData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"Mumu night its getting dark" ofType: @"mp3"]];

part2 = [NSMutableData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"Mumu night did you study" ofType: @"mp3"]];

[part1 appendData: part2];

audioPlayer=[[AVAudioPlayer alloc] initWithData:part1 error:NULL];

audioPlayer.delegate = self;

[audioPlayer play];

duration = (int)audioPlayer.duration;

NSLog(@"audio duration: %d", duration);

}

【问题讨论】:

    标签: iphone ios avaudioplayer


    【解决方案1】:

    在获得持续时间之前尝试致电player.prepareToPlay()。它将显示更准确的持续时间。

    为了完全准确,请尝试:

    CMTimeGetSeconds(AVURLAsset.init(url: myURL, options: nil).duration)
    

    【讨论】:

    • "这是一个 Apple 错误" 您能否提供此声明的权威来源?想了解更多关于它的信息。
    • 打开一个playground,创建一个AVAudioPlayer并获取持续时间,它会给你不准确的结果,然后调用prepareToPlay并再次检查,它会给你正确的;)跨度>
    【解决方案2】:

    你应该使用这个

    https://developer.apple.com/documentation/avfoundation/avasynchronouskeyvalueloading/1387321-loadvaluesasynchronously

    在示例中,只需将“commonMetadata”更改为“duration”。

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 2014-08-19
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      • 1970-01-01
      相关资源
      最近更新 更多