AngularでElectron app
に取り組んでいます。4.特定のアクションでサウンドを再生したいです。そのためのモジュールまたはコードはありますか? angular 4にあるか、または電子が何らかのサービスを提供している場合、それも動作するはずです。
何らかのアクションで再生したいので、JavaScriptのHTMLオーディオタグとaudio()を使用できません
2〜3秒の音だけを再生したいので、他の機能は必要ありません。
電子またはAngular 4のいずれかで、いずれも機能します...
動作しているプロジェクト(angular 4)でこれを行っただけで、動作しました
playAudio(){
let audio = new Audio();
audio.src = "../../../assets/audio/alarm.wav";
audio.load();
audio.play();
}
this.playAudio();
パスが正しいこと、および既存のオーディオを参照していることを確認してください
ロビンのコメントによると、私は次のようにtsファイルのaudio()オブジェクトを使用して使用できるリンクをチェックしました:
this.audio = new Audio();
this.audio.src = "../../../assets/sounds/button_1.mp3";
this.audio.load();
this.audio.play();
更新:同じ問題があり、これを解決するためにElementRefでViewChild参照を使用しました。
app.component.ts
@ViewChild('audioOption') audioPlayerRef: ElementRef;
onAudioPlay(){
this.audioPlayerRef.nativeElement.play();
}
app.component.html
<audio #audioOption>
<source src='../*.mp3' type="audio/mp3">
</audio>
howler.js を使用して試すことができますnpm install --save howler
を使用してプロジェクトにインストールし、次のようなサウンドを再生できます。
var sound = new Howl({
src: ['sound.mp3']
});
sound.play();
Asmonコードは優れていますが、本当の問題は、このページでGoogle Chromeポリシーが更新されたことだと思います https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio あなたは答えを見つけることができます要約すると、焦点はこれにあるべきです。
Chromeの自動再生ポリシーは簡単です:
playSound(sound) {
sound = "../assets/sounds/" + sound + ".mp3";
sound && ( new Audio(sound) ).play()
}
このメソッドを再利用可能にする必要がある場合、sound
はファイル名です。