麦芽(ばくが、英語:malt)とは、麦、特に大麦の種子を発芽させたもので、ビール、ウイスキー、水飴の原料となる。iOSあまり明確な情報がなかなか見つからなくてだいぶ苦戦したけど、一応出来たのでメモ。スマートなやり方あるのかもしれませんが。任意の再生位置からの音声再生(シーク機能)Webでいろいろ調べていると、上記1点目の基本的なAVAudioEngineの使用方法や、エフェクト・速度変更などの音声効果の使い方は以下のように結構載ってるんですが、通常の音声プレイヤーとして必要な2,3点目のやり方がなかなか見つからなかったんですよねー。AVAudioEngineというわけで、AVAudioEngineの基本部分は端折って、2,3点目についてここに書いときます。再生時間を取得まず事前に、AVAudioFileより音声ファイルのサンプルレートをしておきます。プロパティで音声ファイルの総フレーム数(AVAudioFramePosition)を取得できます。Reference音声ファイルの総再生時間(秒)は、この総フレーム数をサンプルレートで割ると算出できます。Timeline)があります。Timeline形式で取得できます。Timeline形式に変換することが出来ます。ReferenceAVAudioTimeクラスでは、sampleTimeプロパティにてその時間をフレーム数(AVAudioFramePosition)として取得することができるので、あとは先述の総再生時間の取得方法と同様、フレーム数をサンプルレートで割るとその秒が取得できます。sampleRate)任意の再生位置からの音声再生(シーク機能)上述までの内容を踏まえ、秒単位でのINPUTをAVAudioPlayNodeが扱える「フレーム」単位に変換する必要がありますので、必要な情報を以下の通り用意します。length)ここまでで用意した情報を用いて、AVAudioPlayerNodeクラスのscheduleSegment()メソッドで指定位置から再生させるようスケジューリングしなおすことで、指定位置からの再生を実現しています。)}audioPlayerNode.play()現在再生時間の補正ここまでで音声は指定位置から開始するのですが、注意点としてここでAVAudioPlayerNodeを再生し直すことで、lastRenderTimeがまた0に初期化されてしまい、このシークした位置が音声開始時間(0:00:00)とみなされてしまいます。これだと上述した「現在の再生時間を秒で取得」の内容がズレてしまうので、ここで以下のように補正してみます。←シーク位置以前の時間を追加...例えば、0:02:45の位置にシークした場合、補正しないとその位置が0:00:00とされてしまうので、シークした時にその時間をoffsetに保存しておいて、現在の再生時間を取得時には保存しておいたoffset分の時間を加算して辻褄を合わせています。(1)はてなブログをはじめよう!asmz0さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。