Материал из CB Wiki
Перейти к: навигация, поиск
Нет описания правки
Строка 56: Строка 56:
== Дальнейший тюнинг и фиксы ==
== Дальнейший тюнинг и фиксы ==
При загрузке видео может возникнуть ошибка '''Please enter 'Title' value between '4' and '80'''' (видео однако поступит в обработку, но с именем файла в качестве заголовка и описания). Это ограничения на размер строки в заголовке: в таблице '''cb_config''' параметры '''min_video_title''' и '''max_video_title''' (изначально 4 и 80 соотв.). Второй заменен на 250. Также можно там же подкорректировать '''min_video_desc''' (изначально 5) '''max_video_desc''' (изначально 300).
При загрузке видео может возникнуть ошибка '''Please enter 'Title' value between '4' and '80'''' (видео однако поступит в обработку, но с именем файла в качестве заголовка и описания). Это ограничения на размер строки в заголовке: в таблице '''cb_config''' параметры '''min_video_title''' и '''max_video_title''' (изначально 4 и 80 соотв.). Второй заменен на 250. Также можно там же подкорректировать '''min_video_desc''' (изначально 5) '''max_video_desc''' (изначально 300).
=== Логотип и фавикон ===
В отличии от старого клипбукета, тут работает [https://yurtube.sphynkx.org.ua/admin_area/upload_logo.php страничка настройки логотипа и иконки сайта]. Однако, на страницах размеры логотипа жестко заданы и лого с др. соот.сторон растягивается. Заменен на новый, с подходящим соотн. сторон.
=== Youtube-подобный URL ===
Стандартый вид URLа клипов http://domain.tld/watch_video.php?v=XXXXXXX
Сделаем его по подобию YouTube:
http://domain.tld/watch?v=XXXXXXX
В конфиге сайта в nginx в  блоке "location /" допишем нужный реврайт:
<syntaxhighlight lang="ini" line>
    location / {
if (!-e $request_filename){
    rewrite ^(.*)$ /$1_video.php;
<------>    }
<------>try_files $uri $uri/ @rewrite;
    }
    location @rewrite {
<------>rewrite ^/(.*)$ /index.php;
##<---->rewrite ^/watch_video.php?v=(.*?)$ /watch?v=$1;
    }
location /embed {
  rewrite ^/embed?(.*) /player/embed_player.php?$1$query_string;
}
location /favicon.ico {
        types {} default_type "image/png";
    }
</syntaxhighlight>
Затем поправляем УРЛ в includes/functions_video.php (в районе 415й строки). Строку:
<syntaxhighlight lang="php">
        $link = BASEURL.'/watch_video.php?v='.$vdetails['videokey'].$plist;
</syntaxhighlight>
приводим к виду:
<syntaxhighlight lang="php">
        $link = BASEURL.'/watch?v='.$vdetails['videokey'].$plist;
</syntaxhighlight>
Для embed-кода, чтоб привести его к виду http://domain.tld/embed?vid=XXXXXXX в nginx добавляем:
<syntaxhighlight lang="ini" line>
  location /embed {
    rewrite ^/embed?(.*) /player/embed_player.php?$1$query_string;
  }
</syntaxhighlight>
и в '''includes/classes/video.class.php''' в районе 1805 строки подправляем УРЛ ('''/player/embed_player.php?vid=''' -> '''/player/embed?vid='''):
<syntaxhighlight lang="php">
        $embed_code = '<iframe width="' . config('embed_player_width') . '" height="' . config('embed_player_height') . '" ';
        $embed_code .= 'src="' . BASEURL . '/player/embed?vid=' . $vdetails['videokey'];
        if (config('autoplay_embed') == 'yes') {
            $embed_code .= '&autoplay=yes';
        }
</syntaxhighlight>
Видео эмбедится в страницы, но расположено вверху, внутри серого прямоугольника. Возможно, причина уже на стороне [[Модуль:Videogallery|модуля видеогалереи]]. Можно изменить стилями в теге <nowiki><iframe>.. <body></nowiki>. Через WebDeveloper вставка в body стиль '''background: #000000;''' дает черный фон, а вставка в сформированный css кода (изначально там только сточка '''height: 100%;''')
<syntaxhighlight lang="css">
#cb_player {
    height: 100%;
    background: #000000;
    display: flex;
    align-items: center;
    justify-content: center;
}
</syntaxhighlight>
дает нужную центровку. Но доопределение стиля через MediaWiki:Common.css или MediaWiki:Modern.css эффекта не дала (возм. эффект кеширования). Пришлось править стили YurTube в '''styles/cb_28/theme/css/all.min.css''' и добавить эти параметры там.
=== Дата загрузки видео перед описанием ===
Опять таки, типа как в Ютюбе - чтоб присутствовала рядом с описанием и дата загрузки. В '''styles/cb_28/layout/watch_video.html''' в районе 26 строки ищем строчку:
<syntaxhighlight lang="hml">
                                        <h1>{display_clean($video.title)}</h1>
</syntaxhighlight>
После нее добавляем вывод даты в разметке заголовка:
<syntaxhighlight lang="html">
<h4>{date('d.m.Y', strtotime($video.datecreated))}</h4>
</syntaxhighlight>
=== Логотип на центральную кнопку плеера ===
Ложим свой логотип в '''player/CB_video_js/bigplay.png''' (в старой версии '''player/CB_html5_player/skin/bigplay.png'''). Затем в '''player/CB_video_js/css/video-js.min.css''' ищем вхождение '''content:"f101" ''' и добавляем перед ним <syntaxhighlight lang="css" inline>background:url(../bigplay.png) no-repeat 50% 50% !important;</syntaxhighlight>
=== Логотип внизу плеера ===
Логотип в файле '''/images/icons/player-logo.png''' и его можно заменить на свой. К примеру, взять из старого движка '''/images/icons/country/hp-cb.png'''.

Версия от 18:40, 16 марта 2024

История и новшества

Старая версия КлипБукета - от создателя. На данный момент заброшена, не развивается, репозиторий переведен в архив. Последняя версия 4, рассчитана на PHP 5.4-7.0, MySQL 5.5 в современных версиях ОС создает доп. сложности в установки, требования использования устаревшего ПО. А также в целом имеет массу багов, которые исправлять никто не будет. Также старая версия ориентирована на использование технологии Flash, вышедшей из употребления и неподдерживаемой броузерами. Сайт проекта, содержавший документацию, перестал существовать (доступен через WebArchive).

На основе старой версии выпущен форк - ClipBucket v5, который соответствует современным требованиям и активно разрабатывается. Заявляемые системные требования - PHP 7.0 - 8.3+, MySQL 8+/MariaDB 10.3+. Прочие новшества:

  • В форке исключена потребность в php-imagick, gpac и flvtool2. Исключены устаревшие плееры - остался один. Заявлена поддержка субтитров, но не очевидно - речь про проигрывание либо про генерацию при заливке видео. Конфигураци БД перенесена из includes/dbconnect.php в includes/config.php. Переделана система локализации - теперь переводы элементов интерейса находятся не в XML-файлах, а в БД. Есть возможность редактирования через веб-интерфейс, но по факту она не работает.
  • В движок встроен обработчик ошибок Whoops. Активен при переводе движка в дев.режим. Обработчик перехватывает события, вызывающие ошибки и падения движка, выдает дебуг-инфу. Очень удобно.
  • Переделана система работы плагинов, плагины от старых версий могут не заработать.
  • Реорганизована админка.


Баги и проблемы
  • Успешно завести на заявленных версиях PHP и MySQL оказалось возможным лишь начиная с версии 5.5.0. Ранние имели проблемы интерпретации кода php-интерпретатором.
  • Пока поломана возможность редактирования переводов элементов интерфейса через веб-интерфейс.
  • Миграция на свежий ClipBucket-v5 (5.5.0) пошла не гладко - полноценно перенести БД старой версии в новый движок не получилось. Оказалось быстрее и проще перезалить видео. В отличи от версии 5.4.1 данная хорошо завелась на PHP-8.2 + MariaDB-10.5. В связи с присутствием в системе PHP7.4, немного движок немного ошибается при проверке модулей. Сначала надо в настройках сайта выставить правильные пути к свежим версиям утилит.
  • У форка нет своей документации. Сайт с документацией старой версии перестал существовать, хотя и доступен через WebArchive, но информация там устаревшая и не во всем применима к новой версии.


Установка

Скачиваем и распаковываем:

https://github.com/MacWarrior/clipbucket-v5/archive/refs/tags/5.5.0.tar.gz
tar -zxf 5.5.0.tar.gz
mkdir /var/www/yurtube550
ln -s /var/www/yurtube550 /var/www/yurtube

В распакованном архиве содержимое каталога upload копируем в /var/www/yurtube

Настраиваем хост в nginx.. В хосте добавить параметр

    add_header X-Frame-Options "ALLOWALL";

иначе embed вставляться не будет на др.сайтах.

Создаем БД:

mysql -u root -p

и вводим следующие команды:

  SET GLOBAL sql_mode="";
  CREATE DATABASE yurtube;
  CREATE USER 'yurtube'@'localhost' IDENTIFIED BY '<SomePassword>';
  GRANT ALL PRIVILEGES ON yurtube.* TO 'yurtube'@'localhost';
  FLUSH PRIVILEGES;
  QUIT;

После чего запускаем инсталл клипбукета https://yurtube.sphynkx.org.ua/cb_install/ с учетом имени созданной БД и пароля.. В начальной проверке если не нашлись утилиты конвертации - не страшно (там код проверки с ошибками), потом в настройках можно настроить актуальные пути. После установки папку cb_install удалить/переименовать. Всем папкам дать владельца, из под которого работает nginx.

В Website Configuration во вкладке Uploading and Conversion Settings сверить и поправить пути к утилитам.

В настройках General Configurations -> Website Configurations -> Video Conversion выбрать профиль: H.264, AAC - Youtube like видеокодек: libx264 аудиокодек: aac -strict -2 (или просто aac)

Кроме того рекомендуется также поставить PHPMyAdmin для более комфортной работы с БД.

Дальнейший тюнинг и фиксы

При загрузке видео может возникнуть ошибка Please enter 'Title' value between '4' and '80' (видео однако поступит в обработку, но с именем файла в качестве заголовка и описания). Это ограничения на размер строки в заголовке: в таблице cb_config параметры min_video_title и max_video_title (изначально 4 и 80 соотв.). Второй заменен на 250. Также можно там же подкорректировать min_video_desc (изначально 5) max_video_desc (изначально 300).

Логотип и фавикон

В отличии от старого клипбукета, тут работает страничка настройки логотипа и иконки сайта. Однако, на страницах размеры логотипа жестко заданы и лого с др. соот.сторон растягивается. Заменен на новый, с подходящим соотн. сторон.

Youtube-подобный URL

Стандартый вид URLа клипов http://domain.tld/watch_video.php?v=XXXXXXX Сделаем его по подобию YouTube: http://domain.tld/watch?v=XXXXXXX В конфиге сайта в nginx в блоке "location /" допишем нужный реврайт:

    location / {
 if (!-e $request_filename){
    rewrite ^(.*)$ /$1_video.php;
<------>    }
<------>try_files $uri $uri/ @rewrite;
    }

    location @rewrite {
<------>rewrite ^/(.*)$ /index.php;
##<---->rewrite ^/watch_video.php?v=(.*?)$ /watch?v=$1;
    }

location /embed {
  rewrite ^/embed?(.*) /player/embed_player.php?$1$query_string;
}

 location /favicon.ico {
        types {} default_type "image/png";
    }

Затем поправляем УРЛ в includes/functions_video.php (в районе 415й строки). Строку:

        $link = BASEURL.'/watch_video.php?v='.$vdetails['videokey'].$plist;

приводим к виду:

        $link = BASEURL.'/watch?v='.$vdetails['videokey'].$plist;

Для embed-кода, чтоб привести его к виду http://domain.tld/embed?vid=XXXXXXX в nginx добавляем:

  location /embed {
    rewrite ^/embed?(.*) /player/embed_player.php?$1$query_string;
  }

и в includes/classes/video.class.php в районе 1805 строки подправляем УРЛ (/player/embed_player.php?vid= -> /player/embed?vid=):

        $embed_code = '<iframe width="' . config('embed_player_width') . '" height="' . config('embed_player_height') . '" ';
        $embed_code .= 'src="' . BASEURL . '/player/embed?vid=' . $vdetails['videokey'];

        if (config('autoplay_embed') == 'yes') {
            $embed_code .= '&autoplay=yes';
        }

Видео эмбедится в страницы, но расположено вверху, внутри серого прямоугольника. Возможно, причина уже на стороне модуля видеогалереи. Можно изменить стилями в теге <iframe>.. <body>. Через WebDeveloper вставка в body стиль background: #000000; дает черный фон, а вставка в сформированный css кода (изначально там только сточка height: 100%;)

#cb_player {
    height: 100%;
    background: #000000;
    display: flex;
    align-items: center;
    justify-content: center;
}

дает нужную центровку. Но доопределение стиля через MediaWiki:Common.css или MediaWiki:Modern.css эффекта не дала (возм. эффект кеширования). Пришлось править стили YurTube в styles/cb_28/theme/css/all.min.css и добавить эти параметры там.

Дата загрузки видео перед описанием

Опять таки, типа как в Ютюбе - чтоб присутствовала рядом с описанием и дата загрузки. В styles/cb_28/layout/watch_video.html в районе 26 строки ищем строчку:

                                        <h1>{display_clean($video.title)}</h1>

После нее добавляем вывод даты в разметке заголовка:

<h4>{date('d.m.Y', strtotime($video.datecreated))}</h4>

Логотип на центральную кнопку плеера

Ложим свой логотип в player/CB_video_js/bigplay.png (в старой версии player/CB_html5_player/skin/bigplay.png). Затем в player/CB_video_js/css/video-js.min.css ищем вхождение content:"f101" и добавляем перед ним background:url(../bigplay.png) no-repeat 50% 50% !important;


Логотип внизу плеера

Логотип в файле /images/icons/player-logo.png и его можно заменить на свой. К примеру, взять из старого движка /images/icons/country/hp-cb.png.