На данную страницу перенесен раздел из 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: разобраться почему в Хроме ничего не меняется. Похоже, застревает в каком-то из кешей - браузера или движка. На следующий день уже видно обновленное..
[править | править код]
В оригинале там пишется Forged By ClipBucket. Содержимое записи непонятно где хранится. Можно заменить на пустоту, сменив в styles/cb_28/layout/footer.html строку 40 c <span>#ClipBucket#</span> на <span> </span>
Также в самом конце убрать "испортить" строчку {$Cbucket->footer()}. Сработало {$Cbucket2->footer()}.
Ссылка About Us содержит текст, лежащий в БД, в таблице cb_pages поле about_us. По аналогии, Help и Terms Of Service живут в той же таблице в полях help и terms_of_service соотв. Там их и можно поправить через PhpMyAdmin.