Я испытываю проблемы с воспроизведением звука в моем компоненте видеопроглерии React, специально предназначенных для мобильных устройств iOS (iPhone/iPad). Даже после реализации нескольких рекомендуемых решений, включая собственные руководящие принципы Apple, звук все еще не работает должным образом на сафари для iOS. Это работает совершенно нормально на Android. На iOS я гарантировал, что видео не является автоматическим (оно требует взаимодействия с пользователем). Вот все подробности: < /p>
среда < /h2>
Я испытываю проблемы с воспроизведением звука в моем компоненте видеопроглерии React, специально предназначенных для мобильных устройств iOS (iPhone/iPad). Даже после реализации нескольких рекомендуемых решений, включая собственные руководящие принципы Apple, звук все еще не работает должным образом на сафари для iOS. Это работает совершенно нормально на Android. На iOS я гарантировал, что видео не является автоматическим (оно требует взаимодействия с пользователем). Вот все подробности: < /p> среда < /h2> [list] [*] ios safari (последняя версия) < /li> React 18 < /li> typescript < /li> Видео -файлы: MP4 с AAC Audio Codec < /li> < /br /> video -файлы: mp4 с AAC Audio Codec < /li> < /br /> < /> < /> < /> < /> < /> < /br /> . Реализация < /h2> [code]const VideoPlayer: React.FC = ({ src, autoplay = true, }) => { const videoRef = useRef(null); const isIOSDevice = isIOS(); // Custom iOS detection const [touchStartY, setTouchStartY] = useState(null); const [touchStartTime, setTouchStartTime] = useState(null);
// Validate if it's a legitimate tap (not a scroll) const verticalDistance = Math.abs(touchEndY - touchStartY); const touchDuration = touchEndTime - touchStartTime;
// Only trigger for quick taps (< 200ms) with minimal vertical movement if (touchDuration < 200 && verticalDistance < 10) { handleVideoInteraction(e); }
setTouchStartY(null); setTouchStartTime(null); };
// Simplified video interaction handler following Apple's guidelines const handleVideoInteraction = (e: React.MouseEvent | React.TouchEvent) => { console.log('Video interaction detected:', { type: e.type, timestamp: new Date().toISOString() });
// Ensure keyboard is dismissed (iOS requirement) if (document.activeElement instanceof HTMLElement) { document.activeElement.blur(); }
e.stopPropagation();
const video = videoRef.current; if (!video || !video.paused) return;
// Attempt playback in response to user gesture video.play().catch(err => console.error('Error playing video:', err)); };
// Effect to handle video source and initial state useEffect(() => { console.log('VideoPlayer props:', { src, loadingState });
setError(null); setLoadingState('initial'); setShowPlayButton(false); // Never show custom play button on iOS
if (videoRef.current) { // Set crossOrigin attribute for CORS videoRef.current.crossOrigin = "anonymous";
if (autoplay && !hasPlayed && !isIOSDevice) { // Only autoplay on non-iOS devices dismissKeyboard(); setHasPlayed(true); } } }, [src, autoplay, hasPlayed, isIOSDevice]);
return (
); }; < /code> [list] Рекомендации Apple в реализации < /strong>
Удаленные элементы управления воспроизведением на iOS < /li> Использование нативных видео Руководство Apple по аудиосессии [*] Правильно обрабатывать CanplayThrough [/code] event [/list]
[/list] текущее поведение [list] [*] Видео -пьес, но без звука на мобильном ios
, но без звука на мобильном ios
, но без звука на ios
. native video controls doesn't work [*]Audio works fine on desktop browsers and Android devices [*]Videos are confirmed to have AAC audio codec [*]No console errors related to audio playback [*]User interaction doesn't trigger audio as expected [/list] Вопросы < /h2>
Есть ли какие-либо дополнительные требования к iOS, которые мне не хватает? Инициализация?>
Я испытываю проблемы с воспроизведением звука в моем компоненте видеопроглерии React, специально предназначенных для мобильных устройств iOS (iPhone/iPad). Даже после реализации нескольких рекомендуемых решений, включая собственные руководящие...
Я испытываю проблемы с воспроизведением звука в моем компоненте видеопроглерии React, специально предназначенных для мобильных устройств iOS (iPhone/iPad). Даже после реализации нескольких рекомендуемых решений, включая собственные руководящие...
У меня проблемы с воспроизведением видео на устройствах iOS. Он работает нормально на Android, но не работает на iOS.
Это результат ошибки
ERROR Video error: { error : { code : -11850, domain : AVFoundationErrorDomain , localizedDescription :...
Я вызвал четыре фрагмента в этом основном действии с помощью нижней панели навигации в Android. Еще два фрагмента вызывают третий фрагмент, а один использует Exoplayer для воспроизведения видео. всякий раз, когда я запускаю видео, через мгновение я...