質問
Web サイトのページが読み込まれたときにビデオを自動的に再生するようにしたいです。
私のページではjquery.js、mediaelementplayer.js、mediaelementplayar.min.cssを参照し、videoタグを追加しました。
私は非常に多くの方法を試しました。 autoplay = true
JavaScriptコードを使用しましたが、動作させることができませんでした。
BlogEngine.Net 2.0 を使用しています。
どうやってやるの?
解決
これは MediaElementJS のバグです。自動再生はネイティブと Silverlight で機能しますが、Flash では少し助けが必要です。
聞くことができます 遊べる イベントを開始し、Flash プレーヤーの準備ができたらすぐに再生を開始します。
setTimeout トリックは競合状態で失敗する可能性があります。
$('#playerid').mediaelementplayer({
plugins: ['flash', 'silverlight'],
success: function(mediaElement, domObject) {
if (mediaElement.pluginType == 'flash') {
mediaElement.addEventListener('canplay', function() {
// Player is ready
mediaElement.play();
}, false);
}
},
error: function() {
alert('Error setting media!');
}
});
他のヒント
を追加できます。 autoplay="true"
に帰属します <video>
以下に示すようにタグを付けます。
<video width="100%" height="auto" poster="some_image.jpg" controls="controls"
autoplay="true">
<source type="video/mp4" src="myvideo.mp4" />
<source type="video/webm" src="myvideo.webm" />
<source type="video/ogg" src="myvideo.ogv" />
<object width="320" height="240" type="application/x-shockwave-flash" data="flashmediaelement.swf">
<param name="movie" value="flashmediaelement.swf" />
<param name="flashvars" value="controls=true&file=myvideo.mp4" />
<img src="myvideo.jpg" width="320" height="240" title="No video playback capabilities" />
</object>
</video>
すべてのブラウザ/デバイスで再生するには、jQuery を使用してオブジェクトを参照し、そのオブジェクトを呼び出すことができます。 play()
方法。
<script>
var player = new MediaElementPlayer('#id-of-player',/* Options */);
player.play();
</script>
詳細については、こちらをご覧ください。 ここ.
これは役に立つかもしれません。
$('audio,video').mediaelementplayer({
success: function(player, node) {
$('.mejs-overlay-button').trigger('click');
}
});
// works here (tested with MediaElements.js 2.1.9)
$(document).ready(function () {
$('video,audio').mediaelementplayer().load();
});
要点を見逃していない限り、HTML5ビデオタグに「自動再生」を追加するだけです
var player = new MediaElementPlayer('video', {
startVolume: 0.8,
features: ['playpause','progress'],
autoplay: true,
audioWidth: 250,
audioHeight: 40
}
);
player.play();
独自のオブジェクトを作成し、play() 経由で開始するだけです。
user932056 の提案は私にとって正確には機能しませんでしたが、ページの上部にある一般的なアイデアを使用して、最終的に機能しました。
<script type="text/javascript">
$(document).ready(function() {
$("div.mejs-container .mejs-button").trigger('click');
});
</script>
これは私が書いたコードで、HTML5 ビデオの場合や Flash プレーヤーでも機能します。
$('video,audio').mediaelementplayer({
mode: 'auto_plugin',
defaultVideoWidth: 480,
defaultVideoHeight: 360,
success: function (me) {
whenPlayerReadyToPlay(me, function () {
me.play();
})
}
});
function whenVideoReadyToPlay(me, callback) {
if (me.pluginType !== 'flash') {
me.addEventListener('loadstart', function (e) {
callback();
}, false);
return;
}
if (me.attributes.preload === 'none') {
$(me.pluginElement).ready(function (e) {
callback();
});
}
else {
me.addEventListener('canplay', function (e) {
callback();
}, false);
}
}
コードは次のとおりです:
$(document).ready(function () {
$('video,audio').mediaelementplayer({ defaultVideoWidth: 480, defaultVideoHeight: 360 });
setTimeout('eventClickTrigger()', 1000);
});
function eventClickTrigger() {
$('.mep-overlay').trigger('click');
}
簡単ですが1週間かかりました
これが私が知っている最も簡単な方法です。これがあなたが探しているものであるかどうかはわかりませんが、あなたの質問に対する私の理解が正しければ、これは私にとってはうまくいきました。MediaElement 2.9.4を使用しています。
<script>
MediaElement('player1', {success: function(me) {
me.play();
}});
</script>
あるいは、自動再生や preload="auto"
に <video>
上記の jQuery が参照しているタグ。
というお悩みをお持ちの方へ autoplay
safari iOS (または autoplay を拒否するその他のブラウザ) では、メディア (オーディオ、ビデオ) を再生するためにユーザーのアクションを必要とする新しいポリシーがあり、上記の解決策はいずれも機能しません。詳細はこちら https://webkit.org/blog/6784/new-video-policies-for-ios/.
最善の回避策は、ビデオが再生されていないかどうかを検出することです。 success
コールバックを呼び出し、ビデオを再生するアクションを含むボタンを追加します。
var video = document.querySelector('video');
var promise = $j('.video-wrap .video').mediaelementplayer({
autoplay: true,
playsinline: 1,
success: function(media, node, player) {
if(media.paused){
$( "body" ).append( "<button type="button" id='playvideo'>Play</button>" );
}
},
error: function (e) {
}
});
//add a click action to play video
$( "#playvideo" ).click(function() {
video.play()
});