import React, { useContext, useState, useRef, useEffect } from 'react';
import { useParams, useNavigate } from 'react-router-dom';
import Container from '@mui/material/Container';
import Typography from '@mui/material/Typography';
import Box from '@mui/material/Box';
import IconButton from '@mui/material/IconButton';
import ArrowBackIcon from '@mui/icons-material/ArrowBack';
import ConfigContext from '../Config';
import ReactPlayer from 'react-player';
const VideoPlayer = () => {
const config = useContext(ConfigContext);
const { filename } = useParams();
const navigate = useNavigate();
const playerRef = useRef(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const [isMobile, setIsMobile] = useState(false);
// 检测移动设备
useEffect(() => {
const checkMobile = () => {
setIsMobile(window.innerWidth <= 768);
};
checkMobile();
window.addEventListener('resize', checkMobile);
return () => window.removeEventListener('resize', checkMobile);
}, []);
// 解码文件名
const decodedFilename = decodeURIComponent(filename);
const videoUrl = `${window.location.origin}/res/${filename}`;
const handleReady = () => {
setLoading(false);
};
const handleError = (error) => {
console.error('Video error:', error);
setError('视频加载失败');
setLoading(false);
};
// 错误页面
if (error) {
return (
navigate(-1)} sx={{ mr: 1 }}>
{decodedFilename}
{error}
);
}
return (
{/* 标题栏 */}
navigate(-1)}
sx={{ color: 'white', mr: 1 }}
size={isMobile ? 'small' : 'medium'}
>
{decodedFilename}
{/* 视频播放器容器 */}
{loading && (
加载中...
)}
{/* 底部信息(移动端显示简化提示) */}
{isMobile ? '双击可全屏' : '提示:双击视频可全屏播放'}
);
};
export default VideoPlayer;