diff --git a/typo3/sysext/core/Classes/Resource/Rendering/VimeoRenderer.php b/typo3/sysext/core/Classes/Resource/Rendering/VimeoRenderer.php
index ba480cac6870..739551d2b6c8 100644
--- a/typo3/sysext/core/Classes/Resource/Rendering/VimeoRenderer.php
+++ b/typo3/sysext/core/Classes/Resource/Rendering/VimeoRenderer.php
@@ -127,8 +127,16 @@ protected function collectOptions(array $options, FileInterface $file)
*/
protected function createVimeoUrl(array $options, FileInterface $file)
{
- $videoId = $this->getVideoIdFromFile($file);
+ $videoIdRaw = $this->getVideoIdFromFile($file);
+ $videoIdRaw = GeneralUtility::trimExplode('/', $videoIdRaw, true);
+
+ $videoId = $videoIdRaw[0];
+ $hash = $videoIdRaw[1] ?? null;
+
$urlParams = [];
+ if (!empty($hash)) {
+ $urlParams[] = 'h=' . $hash;
+ }
if (!empty($options['autoplay'])) {
$urlParams[] = 'autoplay=1';
// If autoplay is enabled, enforce muted=1, see https://developer.chrome.com/blog/autoplay/
diff --git a/typo3/sysext/core/Tests/Unit/Resource/Rendering/VimeoRendererTest.php b/typo3/sysext/core/Tests/Unit/Resource/Rendering/VimeoRendererTest.php
index 84336958e690..709785eed6a7 100644
--- a/typo3/sysext/core/Tests/Unit/Resource/Rendering/VimeoRendererTest.php
+++ b/typo3/sysext/core/Tests/Unit/Resource/Rendering/VimeoRendererTest.php
@@ -227,7 +227,7 @@ public function renderOutputWithPrivateVimeoCodeIsCorrect(): void
$fileResourceMock = $this->createMock(File::class);
self::assertSame(
- '',
+ '',
$subject->render($fileResourceMock, '300m', '200')
);
}
@@ -247,7 +247,7 @@ public function renderOutputIsEscaped(): void
$fileResourceMock = $this->createMock(File::class);
self::assertSame(
- '',
+ '',
$subject->render($fileResourceMock, '300m', '200')
);
}