Возможно ещё актуально
для исправления ошибки «[FVID404] Видео не найдено» в Битриксе 18.1.8 переписал функцию
public static function GetVideoOembed($url = '')
в файле
/bitrix/modules/fileman/classes/general/html_editor.php
изменённый код выглядит так: (iframe без пробела)
Код |
---|
public static function GetVideoOembed($url = '')
{
$output = array('result' => false, 'error' => "");
if(empty($url))
{
return $output;
}
$metaData = \Bitrix\Main\UrlPreview\UrlPreview::fetchVideoMetaData($url);
if($metaData && isset($metaData['EMBED']))
{
$output['result'] = true;
$output['data'] = array(
'html' => $metaData['EMBED'],
'title' => $metaData['TITLE'],
'provider' => $metaData['EXTRA']['PROVIDER_NAME'],
'width' => intval($metaData['EXTRA']['VIDEO_WIDTH']),
'height' => intval($metaData['EXTRA']['VIDEO_HEIGHT']),
);
}else{
if (strpos($url, 'youtu') !== false){
$url = str_replace('youtu.be', 'youtube.com/embed', $url);
$output['result'] = true;
$output['data'] = array(
'html' => '<ifr ame width="560" height="315" src="'. $url .'" title="YouTube Видео" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>',
'title' => "YouTube Видео",
'provider' => 'YouTube',
'width' => 560,
'height' => 315
);
}else{
if($metaData &&
isset($metaData['EXTRA']['VIDEO']) &&
!empty($metaData['EXTRA']['VIDEO']) &&
$metaData['EXTRA']['VIDEO_TYPE'] != 'application/x-shockwave-flash'
)
{
$output = self::getRemoteVideoUrlInfo($metaData['EXTRA']['VIDEO']);
if($output['result'] == true)
{
unset($output['data']['local']);
$output['data']['remote'] = true;
$output['data']['title'] = $metaData['TITLE'];
if(isset($metaData['EXTRA']['VIDEO_WIDTH']))
{
$output['data']['width'] = $metaData['EXTRA']['VIDEO_WIDTH'];
}
if(isset($metaData['EXTRA']['VIDEO_HEIGHT']))
{
$output['data']['height'] = $metaData['EXTRA']['VIDEO_HEIGHT'];
}
if(isset($metaData['EXTRA']['VIDEO_TYPE']))
{
$output['data']['mimeType'] = $metaData['EXTRA']['VIDEO_TYPE'];
}
return $output;
}
}
$io = CBXVirtualIo::GetInstance();
$path = $url;
$serverPath = self::GetServerPath();
if (strpos($path, $serverPath) !== false)
{
$path = str_replace($serverPath, '', $path);
}
if ($io->FileExists($io->RelativeToAbsolutePath($path)))
{
$output['data'] = array(
'local' => true,
'path' => $path
);
$output['result'] = true;
}
else
{
$output = self::getRemoteVideoUrlInfo($url);
}
}
}
return $output;
}
|