ビデオの再生にフラッシュプレーヤーを使用するQtQWebViewコンポーネントを使用しています。QWebView内で実行されたflashplayerのサウンドを無効にするにはどうすればよいですか?
私が考える1つのアプローチは、プレーヤーのサウンドを無効にするためのJavaScriptコードを実行することですが、いつ実行するのですか?たとえば、次のコードは、「load」を呼び出してから1秒後にサウンドを実行すると、サウンドを無効にします。
page.mainFrame().evaluateJavaScript("""
var mute_all_tags=function(tag){
var elems = document.getElementsByTagName(tag);
for(var i = 0; i < elems.length; i++){
elems[i].muted=true;
//alert(elems[i]);
}
}
mute_all_tags("video");
mute_all_tags("audio");
""")
以前の通話は音を止めません。QWebView.loadFinishedを呼び出すと音が止まりますが、その瞬間、すでにいくつかの音が出ています。どうすればすぐに音を止めることができますか?
HTML5ビデオまたはFlashビデオを含む外部ページ(つまり、サードパーティのサイト)をQWebViewにロードしているようです。また、オーディオをまったく使用せずに最初からビデオをミュートしておくことは、あなたが求めている重要な機能のようです。
あなたpage.mainFrame().evaluateJavaScript("...")
が最も簡単な解決策のようですが、このスクリプトが実行されるまでに遅れが生じます。
別の方法は、ターゲットWebサイトをスクレイプしてから、正規表現などを使用してすべての<video>
タグを変更し、ミュートプロパティを追加すること<video controls muted>
です。<embed>
タグについても同様のことを行います。次に、この変更されたHTMLをsetHtml()
メソッドを使用してWebビューにロードし、ベースURLと、場合によってはリファラーヘッダーも設定します。次に、HTMLは、最初からミュートされたビデオでレンダリングされます。
もう1つのアイデアは、Qt自体(.mp4、.movなど)でメディアURLを傍受し、最初にそれらを一時停止したキューに保持し、を呼び出してpage.mainFrame().evaluateJavaScript("...")
プログラム<video>
で<audio>
タグとタグをミュートし、evaluateJavaScript()
呼び出しが戻ったときにキューを続行できるようにすることです。自動再生の場合、メディアはミュートを開始する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加