現在、Google Developersのチュートリアルに従って、Angular Webアプリケーションにオーディオプレーヤーを実装しようとしています。また、「MediaSourceから再生するとビデオを検索できません」で見つけたヘルプもあります。
私の場合には大きな違いはいえ、私がしたいということですストリーム、オーディオチャンクWIZEユーザーはすぐにそれを聞くために、ファイル全体をダウンロードする必要がないように。
サーバーからバイトチャンクをダウンロードSourceBuffer
し、到着時に各チャンクを追加するだけなので、最初から最初までトラックをリッスンすることはすでに機能しています。
ただし、「シーク」機能を実装できません。
クライアントでこれを処理する方法がよくわかりません。現時点では、mp3ファイルのみを使用しています。私は見つけることができません任意の例seeking
で説明されています。
メディアイベントのドキュメントによるとcurrentTime
、audio
要素を設定するとseeking
イベントがトリガーされることを知っています。我々は持っています:
this.audioObj = document.createElement('audio');
とセッター:
public seekTo(seconds) {
this.logger.debug(`seekTo ${seconds.toFixed(2)} seconds`);
// Setting currentTime will cause a "seeking" event to be emitted.
this.audioObj.currentTime = seconds;
}
を設定して追加する前に、新しいデータをロードする必要があると思います。ただし、これは明らかな理由で機能しません。currentTime
sourceBuffer
どうすればこれを機能させることができますか?
期間を設定した場合、currentTimeを設定できるはずですが、再生するものはありません。currentTimeを使用して、ファイルのどの部分が必要かをチャンクフェッチャーに通知し、メディア要素が引き続き再生できるように追加することができます。
mp3を使用する場合sequence
、タイムスタンプがないため、SourceBufferはモードで動作することに注意してください。つまり、バイトを盲目的に追加すると、正しい時点ではなくなります。timestampOffset
に関連する時刻に設定する必要があると思います。問題のフレーム(私はこれを自分で試していません)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加