Материал из CB Wiki
Версия от 18:54, 16 марта 2024; Sphynkx (обсуждение | вклад) (Новая страница: «На данную страницу перенесен раздел из [https://lahwiki.sphynkx.org.ua/Technotes#YurTube Technotes] в [https://lahwiki.sphynkx.org.ua/ LAHWiki]. == YurTube == Установка и настройка [https://yurtube.sphynkx.org.ua/ собственного видеохостинга] по типу Ютюба.. === Установка === Скачиваем и распаковываем: <syntaxhighlight lang="bash"> https:...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к: навигация, поиск

На данную страницу перенесен раздел из Technotes в LAHWiki.

YurTube[править | править код]

Установка и настройка собственного видеохостинга по типу Ютюба..

Установка[править | править код]

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

https://github.com/arslancb/clipbucket/releases/download/4974/clipbucket-master.zip

Ставим flvtool2:

dnf -y install rubygems
gem install flvtool2

Ставить ffmpeg из основного репозитория не надо - он скомпилен без поддержки видеокодека x264. Ставим его из RPMFusion (см.ниже).

Ставим gpac (временно подключаем RPMFusion):

dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
dnf install gpac mediainfo libaacs faad2 ffmpeg

Настраиваем хост в 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)

Troubleshootings[править | править код]

На странице аплоада после прогрузки видеофайла и заполнения полей, кнопка аплоада внизу остается неактивной. Это может быть связано с ограничением на размер аплоада в конфигурации сервера. Надо сходить в админке в Server Configuration Info и настроить параметры сервера так чтобы на странице везде были зеленые галочки. Также сходить в Server Modules Info и убедиться, что все установлено.

Загрузка видео и установка в очередь на обработку состоялась, но по факту обработка не происходит. В каталогах files/conversion_queue files/videos/*/* пусто, однако в files/thumbs/*/* имеются картинки. В логах files/logs/*/* пишется про обработку и генерацию скриншотов, но в конце conversion_status : failed. Дело скорее всего в кодеках. Надо протестировать команду конвертации, подобную проводящейся в движке. Загружаем на сервер маленький видеофайл и даем команду:

ffmpeg -i test.mp4 -vcodec libx264 -acodec aac -s 848x544 -preset medium -f mp4 -b:v 512000 -minrate 512000 -maxrate 512000 -b:a 128000 -minrate 128000 -maxrate 128000 -r 25 -ar 22050 test-sd.mp4

Смотрим, ругается ли на что-то и создается ли конвертированный файл. На этой стадии и выяснялось то отсутствие поддержки кодека в ffmpeg, то отсутствие какого-то из кодеков в системе.. Подощедшие кодеки надо также указать и в настройках конвертации (вкладки Uploading and Conversion Settings => Video Conversion).

Загрузка видео происходит, обработка тоже. Но новое видео в списке не появляется. В этом случае надо настроить БД. Через PhpMyAdmin либо в консоли:

mysql -u root -p

подключаемся к БД и отправляем настройку:

use yurtube;
set global sql_mode="";

Загрузка и обработка прошла успешно, видео появилось в списке и проигрывается. Но не отображаются введенные Title и Description. При попытке редактирования ругается: Enter in Title number between 4 and 80 или что-то подобное. Происходило не со всеми видео, что это и как лечить - пока не понятно. Но как временное решение - через PhpMyAdmin зайти в таблицу cb_video, найти проблемное видео и записать нужные значения через туда.


Deprecation sircumstances[править | править код]

Оригинальный ClipBicket больше не разрабатывается, репозиторий заархивирован. Имеется форк от MacWarrior. Заявлена поддержка PHP8.0+ MariaDB 10.3+ однако с ними код выдает ошибки и не работает. С PHP7.4 ландинг отрабатывается, но более ничего не работает, плеер также не работает. Плееры от старой версии не совместимы с форком (Хотя возможно, дело и в php8 - надо проверить с php7.4). Для Fedora39 пока приходится оставаться на устаревшей версии. Также надо подключить remi репозиторий.

dnf -y install https://rpms.remirepo.net/fedora/remi-release-39.rpm
dnf install php74 php74-php-fpm php74-php-mysqlnd

Далее - сменить сокет в конфиге домена в nginx на:

        fastcgi_pass unix:/var/opt/remi/php74/run/php-fpm/www.sock;

В /etc/opt/remi/php74/php-fpm.d/www.conf сменить права сокету:

listen.owner = apache
listen.group = apache
listen.mode = 0666

В /etc/opt/remi/php74/php.ini настроить параметры (как рекомендует движок):

post_max_size = 512M
upload_max_filesize = 200M
memory_limit = 128M
max_execution_time = 7300

В остальном - как описано выше.

Логотип и фавикон[править | править код]

Актуальное место настройки найти сложно, к тому же сервис пытается постоянно кешировать страницы.. Данные настройки применительно к актуальному стилю оформления, в данный момент настроен как cb_28, для др. надо откорректировать пути.. Фавикон создаем как PNG-файл 32х32, переименовав его в favicon.ico кидаем в корень хоста. Логотип кидаем в styles/cb_28/theme/images а его актуальные размеры прописываем в styles/cb_28/theme/css/all.css - там в районе стр.3674 есть блок logo {..}

Сам логотип прописывается в styles/cb_28/layout/header.html там почти в начале участок

                                        <h1 class="logo">
                                                <a href="{$baseurl}">
                                                        <img src="{$theme}/images/ytlogo.png" alt="cbtune" class="img-responsive">
                                                        <span>clipbucket</span>
                                                </a>
                                        </h1>

ytlogo.png это уже замененный файл логотипа.


Описание сайта[править | править код]

..живет в метатеге description в styles/cb_28/layout/global_header.html line 21:

                        <meta name="description" content="{$Cbucket->configs.description}">

Хранится в БД, но можно тупо заменить на свой статичный текст.

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;
  }

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

        $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 в районе 1305 строки подправляем УРЛ (закоммент. строка - это исх. строка)

                if($type=='iframe')
                {
                        $embed_code = '<iframe width="'.config('embed_player_width').'" height="'.config('embed_player_height').'" ';
##                      $embed_code .= 'src="'.BASEURL.'/player/embed_player.php?vid='.$vdetails['videokey'].'&width='.
                        $embed_code .= 'src="'.BASEURL.'/player/embed?vid='.$vdetails['videokey'].'&width='.
                        config('embed_player_width').'&height='.config('embed_player_height').
                        '&autoplay='.config('autoplay_embed').'" frameborder="0" allowfullscreen></iframe>';
                }

и в районе 1322 строки:

                                if($vid_file)
                                {
                                        $code = '';
                                        $code .= '<object width="'.EMBED_VDO_WIDTH.'" height="'.EMBED_VDO_HEIGHT.'">';
##                                      $code .= '<param name="movie" value="'.PLAYER_URL.'/embed_player.php?vid='.$vdetails['videoid'].'"></param>';
                                        $code .= '<param name="movie" value="'.PLAYER_URL.'/embed?vid='.$vdetails['videoid'].'"></param>';
                                        $code .= '<param name="allowFullScreen" value="true"></param>';
                                        $code .= '<param name="allowscriptaccess" value="always"></param>';
##                                      $code .= '<embed src="'.PLAYER_URL.'/embed_player.php?vid='.$vdetails['videoid'].'"';
                                        $code .= '<embed src="'.PLAYER_URL.'/embed?vid='.$vdetails['videoid'].'"';
                                        $code .= 'type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="300" height="250"></embed>';
                                        return $code .= '</object>';
                                }else
                                {
                                        return embeded_code($vdetails);
                                }

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

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

                                        <h1>{$video.title}</h1>

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

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

Видео конвертится но не отображается в очереди[править | править код]

По процессам видно что конвертация идет и потом успешно заканчивается, но в списке добаленных видео не появляется. Проблема появилась после перезагрузки сервера. Решилось установкой параметра в MySQL:

  SET GLOBAL sql_mode="";

Также прописан в /etc/my.cnf

  sql_mode=


Логотип внизу плеера[править | править код]

Включается как файл images/icons/country/hp-cb.png

Код player/CB_html5_player/html5_player.php (line 84):

                        $l_details = BASEURL.'/images/icons/country/hp-cb.png';
                        $l_convert = base64_encode(file_get_contents($l_details));
                        assign('display',$l_convert);

оттуда display вставляется в player/CB_html5_player/html5_player.html (line 190):

  <script type="text/javascript">
  var webpath="{$display}";var homepath="{$about}";var web="{$ov}";var $top="{$top}";

Логотип является ссылкой, ведущей по дефолту на сайт clip-bucket.com. Сайт уже не работает, поэтому вполне можно сменить адрес на свой. Он живет в БД, в таблице cb_config, поле player_logo_url. Можно изменить его там через PhpMySql либо в консоли mysql:

use yurtube;
UPDATE cb_config SET value = 'https://yurtube.sphynkx.org.ua/' WHERE name = 'player_logo_url';

Логотип на центральную кнопку плеера[править | править код]

В player/CB_html5_player/player_style.css в районе строки 617:

  /* OTHERS CSS */
  /* video screen cover */
  .loading, .init{
  ...
        display:none;

меняем на display:block;

Там же закомментарена строка 631:

  .init{
        /*background:url(skin/bigplay.png) no-repeat 50% 50% !important;*/

Раскомметариваем и подкидываем свой логотип размером 96х96 с именем bigplay.png

Для embed-версии в секцию .init:before (там же, чуть пониже) добавляем стоку

        background:url(skin/bigplay.png) no-repeat 50% 50% !important;

Также символ треугольника смазывает картинку логотипа.. Ее надо чуть подвинуть - подкорректировать там же параметры: left с 50% на 47% height с 30px на 34px

TODO: разобраться почему в Хроме ничего не меняется. Похоже, застревает в каком-то из кешей - браузера или движка. На следующий день уже видно обновленное..

Footer[править | править код]

В оригинале там пишется Forged By ClipBucket. Содержимое записи непонятно где хранится. Можно заменить на пустоту, сменив в styles/cb_28/layout/footer.html строку 40 c <span>#ClipBucket#</span> на <span>&nbsp;</span>

Также в самом конце убрать "испортить" строчку {$Cbucket->footer()}. Сработало {$Cbucket2->footer()}.

Ссылка About Us содержит текст, лежащий в БД, в таблице cb_pages поле about_us. По аналогии, Help и Terms Of Service живут в той же таблице в полях help и terms_of_service соотв. Там их и можно поправить через PhpMyAdmin.