1

最大10分の長さの大きなループバックグラウンドミュージックファイルがあります。サウンドは完全にループされており、プレーヤーが遅延を導入しなければ、ループポイントがどこにあるかはわかりません。

AVAudioPlayerは、レイテンシーやその他のループの問題によって引き起こされるギャップがユーザーに聞こえないようにすることなく、それらを再生できますか?

4

3 に答える 3

4

音楽が圧縮されているため(mp3など)、遅延が発生している可能性があります。AVAudioPlayerは、ストリーミング時にmp3をデコードする必要があります。同じ音楽を非圧縮形式で使用している場合は、かなり多くのディスク容量が必要になりますが、シームレスにループします。

于 2015-04-22T20:14:02.347 に答える
2

numberOfLoops最後に停止/開始せず、負の整数に設定している限り、機能するはずです。

于 2012-12-03T15:42:54.420 に答える
2

シームレスループを作成しようとして問題が発生しました。プロパティを使用してみましたnumberOfLoopsが、成功しませんでした。非圧縮のオーディオファイルに切り替えようとしましたが、成功しませんでした。AVAudioQueuePlayer同じアセットの複数のインスタンスでキューに入れられたに切り替えようとしましたが、成功しませんでした。最終的に、(player1とplayer2)の2つのインスタンスを作成しAVAudioPlayer、それらを切り替えることで問題を解決しました。player1の再生を開始し、player2のprepareToPlayメソッドを使用play(atTime time:)し、TimeIntervalをに設定するメソッドを使用しましたplayer1.deviceCurrentTime - player1.currentTime + player1.duration。次に、delegateメソッドaudioPlayerDidFinishPlayingを使用して、player2が完了した後に再生を再開するようにplayer1を準備しました。正直なところ、このアプローチが機能した理由はわかりませんが、単にnumberOfLoops-1に設定しても機能しませんでした。しかし、それはあなたのためにも働くかもしれません

于 2017-03-08T00:46:25.600 に答える