こんにちは、私は現在、純粋な HTML5 w/Javascript で書かれたオーディオ波形エディターに取り組んでいます。
Mozilla<audio>
の.MozAudioAvailable イベントを使用して、各フレームのデータを取得し、キャンバスに描画することで、ある程度の進歩を遂げました。ただし、MozAudioAvailable では、現在再生中のフレームしか取得できません。
波形エディタとして、私のプログラムは、現在再生中の約数秒前にデータを検索して前処理する必要があります。つまり、00:05:00 を再生するとき、私のプログラムはおそらく 00:04:50 から 00:05 までの波形を表示する必要があります。 :10 なので、再生する前に 00:05:00 から 00:05:10 までのデータを前処理する必要があります。
解決策を得るためにインターネットを検索しました (Mozilla のアプローチに限定されず、Chrome または Opera のアプローチも受け入れられます) が、回答がありませんでした。preload プロパティと onprogress イベントは役に立ちません。<audio>
現在、元の音楽と同じ音楽を再生する別のタグを作成しようとしていますが、事前にデータを取得するために数秒速くなります。ただし、ご覧のとおり、ソリューションはかなり汚いです。
HTML5 グループがマルチメディア オブジェクトを処理するためのより柔軟な方法に取り組んでいるのか、それともブラウザ開発チームがこれに取り組んでいるのか疑問に思っています。このトピックに関するアイデアや経験があれば、教えてください。どうも。
アップデート:
多分私は私の質問を明確に説明していません。以下は、私のターゲットを示す可能性のある Audacity から取得した写真です。
約 1:55.10 の縦線は、現在再生中のフレームを示します。行の左側のフレームについては、プログラムによって保存された履歴フレームを使用できます。しかし、まだ再生されていない行の右側のフレームについては、再生される前に取得できません。
醜い解決策は<audio>
、元のタグよりも速く再生される別のタグを追加することです (スクリーンショットでは 1:55.90 で再生されるはずです)。これにより、垂直線の右側にフレームを取得できます。しかし、それは醜く、実装するのは簡単ではありませんよね?