blue-phoenix
@blue-phoenix

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

JavascriptにMP4を再生したいものの、自動機能が上手くいかない。

htmlとJavascriptでアプリを作っている者です・・・。今回、MP4ファイルをJSに
組み込んでその画面になったら自動再生、次画面へ
移るコードを書いているのですが上手くいきません。
そうしている理由は・・・ゲーム結果を映画的表現にしたくて作っています。
1-2.png

一生懸命作った映像を見せたいところですが、
動かないのでここでは無理そうです。
疑惑コードは以下の様になりますが、さすがに今回は少し長めです。
理解していただける方が現れるのを望みます。

html

<!-- ムービー画面 -->
<div id = "screen1" class = "movie-screen" style = "display: none;">
<video id = "video1" src = "video1.mp4" controls autoplay></video><br>
<button onclick = "goToEndScreen()">スキップ</button>
</div>

慎重に1から説明しなければ伝わらないと思うので書きます。
screen1を親要素としてclassで画像サイズ、styleで画像事前隠し。
一応buttonでムービー飛ばしボタンも入れてます。
video1で映像表示、controls + autoplayで自動再生にしたはずだが無効で。

Javascript

//ゲーム画面7(映画的画像)
function goToScreen1() {
changeScreen('game-screen7', 'screen1'); // 画面を切り替え
var video1 = document.getElementById('video1'); // ビデオ要素を取得
___
// ビデオ要素が存在するか確認
if (video1) {
video1.currentTime = 0;  // 動画を最初から再生
// ユーザーインタラクションがあった場合にビデオを再生
video1.play().then(() => {
// 15秒後にエンディング画面へ遷移
setTimeout(function() {
goToEndScreen();  // 関数呼び出し
}, 15000);
}).catch(function(error) {
console.error('ビデオの自動再生に失敗しました: ', error);
// エラーが発生した場合、即座に次の画面へ移動
setTimeout(function() {
goToEndScreen();  // 関数呼び出し
}, 15000);
});
} else {
console.error('ビデオ要素が見つかりません: id="video1"を確認してください。');
}
}

___
//ボタン押すコード
function goToEndScreen() {
fadeOut(document.getElementById('screen1'), function() {
fadeIn(document.getElementById('end-screen'));
});
}

ちょっと長いですがこの通りです。
結果画面のgame-screen7からvideo1につながるscreen1と
エンディングにつながるend-screenとして設定してます。
currentTimeを入れないと映像が途中から始まっちゃいます。
そして映像は14秒なので15秒にEDへ移るよう
setTimeoutを書いたはずですが、なぜか機能せず。
記入ミスがあるなら良いですが、映像だけは最後まで
映っています。率直に自動機能だけ動いていないので、
原因を特定できるか御教授お願いしたいです。
ここまで辿り着くまでにエラー、バグが頻繫に・・・
アプリ開発がこんなに難しいとは思わなかったです。
今回は今までよりコードが多くて戸惑いますが、
ここを越えれば山が見えてくると・・・内容が理解できる方・・・お願いいたします。

0

4Answer

そこまでjsに詳しくないのですが
firefoxを使っていると自動再生がブロックされることがあります
またはchromeを使っていても拡張機能を入れている場合は自動再生がブロックされることがあります

0Like

Comments

  1. @blue-phoenix

    Questioner

    く、chromeだとダメなんですか!? 今、自分が使っているのはそれなんですけど・・・まいったな。

アルファベットは全角にしないで半角を使ってください

×: JavascriptにMP4を再生したいですが、
〇: JavaScript に MP4 を再生したいですが、

コードはインデントされるように Markdown 方式で書き直してください

そうしてもらえないと質問を読む気がしないという閲覧者はきっと自分だけではないはずです。

0Like

Comments

  1. @blue-phoenix

    Questioner

    できる限り書き直しておきます。

  2. できる限り書き直しておきます。

    対応ありがとうございます。

    ただ、一番目に付くタイトルの全角アルファベットが直ってないです。

    Markdown 方式については以下の記事を見てください。

1つ目のビデオは再生できるが、2つ目のビデオが自動再生できないということでよろしいでしょうか?

endedイベントで1つ目のビデオの終了を検知して、2つ目のビデオを再生する」、という方法で実装できそうです。

See the Pen Untitled by yotty (@yotty) on CodePen.

※ビデオは こちら からお借りしました。

0Like

Comments

  1. @blue-phoenix

    Questioner

    ビデオは1種類のみですね、いずれは複数種類入れる予定ですが、これは1つですら自動再生されないんです・・・次ページに移る機能すらもできなくて(・ω・`)

  2. 映像が途中から始まっちゃいます
    映像だけは最後まで映っています

    とありますが、再生はできるけど自動再生はできないという状態でしょうか…?


    ブラウザの仕様で、音の出る動画・音声は自動再生できないようになっています。
    動画などを再生させるためには、一度ユーザの操作が必要になります。

    ユーザの操作直後ではないタイミングで動画を再生したいのであれば、
    ユーザに一度タップなどの操作を促し、そのタイミングで非表示状態でループ再生、
    再生したいタイミングでcurrentTime=0にして非表示を解除する、といった工夫が必要になると思います。

  3. @blue-phoenix

    Questioner

    音は何も入っていないんです、それでも自動機能は無理でしょうか?
    ブラウザ元来の影響でできないとなると、もうMP4では作れないのか・・・。
    他のクリエイターの人達はスクロールバーもない、ミュート機能もないゲームのムービーシーンとかはどうやって作っているんでしょうかね?

  4. 先ほどのURLにある通り、ミュートでよければmuted属性を付与すれば自動再生できると思います。

    ブラウザゲームは大体ゲームを開始するときに、ゲーム内をクリックする必要があったりと、基本的に何かしらの操作させたうえで遊び始められるようになっていることがほとんどだと思います。

じ、自動再生できました!!! これって・・・一体どんな仕組みで・・・?
が・・・次ページ自動切り替えは相変わらず無効になってます。
setTimeoutがどこかおかしいんでしょうか?

0Like

Your answer might help someone💌