From 8d2a5a98ae680fbf9558144b4c18e8ef796ec1a4 Mon Sep 17 00:00:00 2001 From: Luke D Williams Date: Thu, 2 Apr 2026 08:00:25 -0500 Subject: [PATCH] fix(mobile): preserve pitch for Android video playback (#4940) --- apps/mobile/src/components/ui/video/VideoPlayer.tsx | 1 + .../src/modules/entry-list/templates/EntryNormalItem.tsx | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/mobile/src/components/ui/video/VideoPlayer.tsx b/apps/mobile/src/components/ui/video/VideoPlayer.tsx index 7da7f2f6c..c12fd53e5 100644 --- a/apps/mobile/src/components/ui/video/VideoPlayer.tsx +++ b/apps/mobile/src/components/ui/video/VideoPlayer.tsx @@ -28,6 +28,7 @@ export function VideoPlayer({ const player = useVideoPlayer(source, (player) => { player.loop = true player.muted = true + player.preservesPitch = true // player.play() }) const { status } = useEvent(player, "statusChange", { status: player.status }) diff --git a/apps/mobile/src/modules/entry-list/templates/EntryNormalItem.tsx b/apps/mobile/src/modules/entry-list/templates/EntryNormalItem.tsx index 64be8b994..0431b2c9d 100644 --- a/apps/mobile/src/modules/entry-list/templates/EntryNormalItem.tsx +++ b/apps/mobile/src/modules/entry-list/templates/EntryNormalItem.tsx @@ -187,7 +187,9 @@ const ThumbnailImage = ({ entryId }: { entryId: string }) => { const audioState = useAudioPlayState(audio?.url) const video = mediaModel?.type === "video" ? mediaModel : null const videoViewRef = useRef(null) - const videoPlayer = useVideoPlayer(video?.url ?? "") + const videoPlayer = useVideoPlayer(video?.url ?? "", (player) => { + player.preservesPitch = true + }) const [showVideoNativeControlsForAndroid, setShowVideoNativeControlsForAndroid] = useState(false) const handlePressPlay = useCallback(() => { if (video) {