2

に求めないだろうゼロにcurrentPlaybackTime、最初からスタートしますが:MPMusicPlayerControllerは、私は、特定の開始時間から再生を開始するMPMusicPlayerController.applicationMusicPlayer()インスタンスをしたい与えplaybackTime

applicationMusicPlayer.play() 
print(applicationMusicPlayer.currentPlaybackTime) // will print 0.0 

私は私がちょうど作成されて、まだ準備ができていないしているプレイヤーに再生を設定しているので、多分それはだと思ったが、どちらも.prepareToPlay()または.isPreparedToPlay( )その状況で私を助けてください。

私は数秒待ってから、設定した位置から再生を開始しようとしました。成功は全くなく、非常にイライラしています。

私はApple Musicから直接曲を演奏しているという事実と関係がありますか?私はApple Musicから音楽を再生する必要があるため、AVPlayerに切り替えることはできません。

ありがとうございました。

UPDATE:私はMPMediaPlaybackでメソッドbeginSeekingBackwardを発見し、それはコンテンツがストリーミングされている場合、それは何の効果もないことを言う: https://developer.apple.com/documentation/mediaplayer/mpmediaplayback/1616248-beginseekingbackward?language=objc のみ内蔵の音楽アプリはストリーミングを制御しているように思えます音楽の再生?

+1

これはapplicationMusicPlayerの場合はわかりませんが、強い参照を保持できる場所で定義してください(var myPlayer = ApplicationMusicPlayer())。 – solenoid

+0

@ソレノイドそれはリリースされていません...それは確かに保持され、音楽を再生することができます。問題は、それが特定の時間トラフからApple Music – Jan

+0

から開始してトラックを再生しないことです。systemMusicPlayer()を使ってみましたか? – solenoid

答えて

0

私はちょうどこの正確な問題に遭遇しました。私はフォローコードでそれを回避することができました。

これは、プレーヤーのcurrentPlaybackTimeを継続的にチェックするバックグラウンドスレッドを作成します。すぐにcurrentPlaybackTimeが私はそれが私が欲しいものにcurrentPlaybackTimeを設定するように設定する時間ではありません。

これはひどいハックのように感じますが、これまでのところ私のために働いています。

MPMusicPlayerController *player = [MPMusicPlayerController systemMusicPlayer]; 
player.currentPlaybackTime = _startTime; 
[player play]; 

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul); 
dispatch_async(queue, ^{ 
    while(true) { 
     if (player.currentPlaybackTime != _startTime) { 
      player.currentPlaybackTime = _startTime; 
      break; 
     } 
    } 
}); 
+0

真面目な野蛮人:Dあなたは再生の中断を経験していませんか?すべてスムーズに聞こえますか? – Jan

+0

@Jan私のデバイスのもの彼らはすべきだと思うが、私はテストのユーザーに音楽に小さなジッタがあると言わせてくれた。 –

関連する問題