video 要素や audio 要素で JavaScript を使って currentTime に0以外を設定すると、iPhone では期待通りに動作しません(0を設定する場合は問題ありません)。
例えば、以下を設定すると、PC では Chrome や Firefox、Safari では13秒の時点から再生されますが、iPhone では最初(0の位置)から再生されてしまい、ポスターフレームの画像も表示されません。また、一度再生すると、2度目以降は再生もできません。
const video = document.querySelector('video');
video.currentTime = 13;
一番簡単な解決方法は、video 要素の preload 属性に "metadata" を設定するか、JavaScript で preload プロパティに "metadata" を設定します。
<!-- preload="metadata" を追加 --> <video src="sample.mp4" preload="metadata" controls playsinline></video>
const video = document.querySelector('video');
// preload プロパティに "metadata" を設定
video.preload = 'metadata';
video.currentTime = 13;
または、loadeddata イベントを使って currentTime を設定します。
const video = document.querySelector('video');
//loadeddata イベントで currentTime を設定
video.addEventListener('loadeddata', ()=> {
video.currentTime = 13;
});
詳細は以下を御覧ください。