1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「Next.js(React)で再生したい動画がMac(pcなど)では再生されるがiphone(スマホ)では再生されない場合の解決方法:ビデオ自動再生の実装と対処法」

Last updated at Posted at 2023-03-21

Next.jsで作成したビデオがMacでは再生されるがiOSでは再生されない場合の解決方法

Next.jsで作成したビデオがMacでは再生されるがiOSでは再生されない場合があります。この問題には、以下の解決策があります。

autoPlayとplaysInline属性

videoタグにautoPlayとplaysInline属性を設定することで、iOSでも動画が再生されるようになります。ただし、SafariやChromeなど、iOSのブラウザは自動再生を許可していない場合があります。それでも動画が再生されない場合は、ユーザーアクション後に再生するようにする方法が最適な解決策となります。


import { Box, Flex, Image, Text } from "@chakra-ui/react";//普通のreactでいい
import { useEffect, useRef } from "react";

const HeroImage = () => {
  const videoRef = useRef<HTMLVideoElement>(null);

  useEffect(() => {
    if (videoRef.current) {
      videoRef.current.play();
    }
  }, [videoRef]);

  return (
    <Box h="600px" bg="black">
      <video
        ref={videoRef}
        src="動画のurl"
        muted
        style={{ height: "100%", width: "100%" }}
        autoPlay
        playsInline
      />
    </Box>
  );
};

export default HeroImage;


useEffect

useEffectフックを使って、ビデオが読み込まれてから自動再生を行うようにすることで、ビデオが正常に再生される確率が高くなります。これは、ビデオがまだ読み込まれていない状態で再生しようとすると、再生が失敗したり、再生中に中断したりする可能性があるためです。

また、ビデオが読み込まれた後に自動再生を行うことで、ビデオ再生のためのリソースを最適化することができます。ビデオを自動再生する前に、ブラウザがビデオファイルをダウンロードして、メモリに読み込むことができます。これにより、ビデオ再生中にブラウザがファイルをダウンロードする必要がなくなり、スムーズな再生が実現できます。

そのため、useEffectフックを使ってビデオの自動再生を行うことを推奨します。
以上の解決策を試して、iOSでビデオが再生されるようにしてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?