###前提・実現したいこと
自作のシークバーでHTML5のvideo(media)のシーク処理を行っているのですが、
時々再生が停止してしまうため困っています。
再生を再開させる方法をご存じないでしょうか。
あるいは、ここを調査すると良いのでは?等のアドバイスを頂きたいです。
よろしくお願いいたします。
###ソースコード(要点のみ)
JavaScript
11.再生ボタン押下 2 video.play() 32.シークバー移動 4 video.pause() 5 video.currentTime = シークバー移動後の位置の秒数 63.移動後に再生再開 7 video.play()
###発生している問題・エラーメッセージ
2→3を繰り返すと、数回実施後に動画が静止してしまいます。 (1、2はユーザ操作で、3はシステムで実施してるものです。 3の処理が正しく行われずにずっとシーク中になってしまいます。) 静止している際のvideoの状態は下記です。 readyState=1(HAVE_METADATA) networkState=2(NETWORK_LOADING) seeking=true
###試したこと・1
試しにreadyStateが3以上になってから3.のplay()をしようと、
2.の処理後にsetIntervalをかけてreadyStateの変化を待ってみたのですが、しばらく待ってみても変わりませんでした。
ただ、この状態でもう一度2.を行うと再生が再開することがありました。
(currentTimeを全然別の値に変えた場合。また、その際readyStateは4に変わりました。)
できればcurrentTimeは変更したくありません。
###試したこと・2
dash.jsのバージョンを最新の2.3.0で実験してみたところ、video初期化時に下記のエラーが起きたため、
そもそも、使用している動画の変換方法がうまくない気もしています。
ただ、当パージョン(1.2.0)を使用している分にはエラーは発生しません。
Multiplexed representations are intentionally not supported, as they are not compliant with the DASH-AVC/264 guidelines
###試したこと・3
Chromeの場合、play()がpromiseを返すようになっているかも(下記URL)と
1.のresolve待ちで2.をthenでつないでみたのですが、やはり再生はされませんでした。
https://developers.google.com/web/updates/2016/03/play-returns-promise
###補足情報(言語/FW/ツール等のバージョンなど)
使用しているライブラリはdash.js(1.2.0)
videoはMPEG-DASH形式、ブラウザはChrome(53.0.2785.116m)、FireFox(49.0.1)です。
あなたの回答
tips
プレビュー