Loading...
Обучение/Помощь новичкам | Нужен помощь по коду
Есть вот такой код:

$video = new ffmpeg_movie(ROOT.'/'.$url_file);
$duration = round($video->getDuration());
$size = filesize(ROOT.'/'.$url_file);
$width = $video->getFrameWidth();
$height = $video->getFrameHeight();
$screen_size = $width.'x'.$height;
$scr_mini = $dir.'/screen_mini.jpg';
$scr = $dir.'/screen.jpg';
$frame_count = $video->getFrameCount();
$frame = intval($frame_count / 2);
$select = $video->getFrame($frame);

if ($select)
{
$screen = $select->toGDImage();
imagejpeg($screen, ROOT.'/'.$scr, 100);
imagedestroy($screen);
imageresize(ROOT.'/'.$scr, ROOT.'/'.$scr, 480, 480, 100);
}
else
{
$frame = intval($frame_count / 3);
$select = $video->getFrame($frame);

if (!$select)
{
unset($video);
remove_dir(ROOT.'/'.$dir);
message('Невозможно создать скриншот для этого видео! Загрузите другое видео!');
}

$screen = $select->toGDImage();
imagejpeg($screen, ROOT.'/'.$scr, 85);
imagedestroy($screen);
imageresize(ROOT.'/'.$scr, ROOT.'/'.$scr, 480, 480, 100);
}


imageresize(ROOT.'/'.$scr, ROOT.'/'.$scr_mini, 200, 200, 100);






При импорте видео создаётся два скриншота, все нормально работает. Но когда создаётся скриншот, то минимум маленький скрин с размером 200x150 (максимум) весить аж до 40кб, минимум от 30кб, всё зависть от качества видео. С большим скриншотом ещё хуже, скрин с размером 480x360 весить от 160кб минимум, при том что видеоролики весят от 2мб до 3мб, часто до 5мб.


Загрузка сайта при этом ужасная, помогите решить проблему.
________
посл. ред. 19.05.2019 в 18:10; всего 1 раз(а); by Boy
Boy , она и будет ужасная , так как ffmpeg конвертирует при загрузке.
Нужно создать условие. Если скрин есть , не запускать ffmpeg
SickBoy (19.05.2019 в 18:19)
Boy , она и будет ужасная , так как ffmpeg конвертирует при загрузке.
Нужно создать условие. Если скрин есть , не запускать ffmpeg

Те чтобы при выгрузке видео скриншот тоже выгружать? Не понял, если честно, можно подробнее?
Boy , он имеет ввиду что бы вы поставили условия что если есть в бд картинка с данного видиео то не запускать конв или наоборот запуск если нету
Asuna (19.05.2019 в 19:03)
Boy , он имеет ввиду что бы вы поставили условия что если есть в бд картинка с данного видиео то не запускать конв или наоборот запуск если нету

Ну я не кодер, в этом не разбираюсь.
Нужен хотя бы кодер за оплату, если всё так запутанно.
Boy (19.05.2019 в 19:07)
Asuna (19.05.2019 в 19:03)
Boy , он имеет ввиду что бы вы поставили условия что если есть в бд картинка с данного видиео то не запускать конв или наоборот запуск если нету

Ну я не кодер, в этом не разбираюсь.
Нужен хотя бы кодер за оплату, если всё так запутанно.

Сделать таблицу,и проверять если есть скрин видоса то конверт не запускать,если нету - то запускать
ZnTor (19.05.2019 в 19:09)
Boy (19.05.2019 в 19:07)
Asuna (19.05.2019 в 19:03)
Boy , он имеет ввиду что бы вы поставили условия что если есть в бд картинка с данного видиео то не запускать конв или наоборот запуск если нету

Ну я не кодер, в этом не разбираюсь.
Нужен хотя бы кодер за оплату, если всё так запутанно.

Сделать таблицу,и проверять если есть скрин видоса то конверт не запускать,если нету - то запускать

Сможешь? Нужно реализовать это в зц видео, ну ты понял о каком скрипте идёт речь.
Вес код:

<?php

include '../system/core.php';

if (!$login) message('Нет такой страницы или файл не найден', '/');
if (!check_right($user['id'], 1, $mysqli)) message('Недостаточно прав!', '/panel/index.php');

if (isset($_POST['name']) and isset($_POST['link']) and isset($_POST['cat']))
{
$publish = strtotime($_POST['publish']) + rand(300, 21600);
$name = in($_POST['name']);
$tag = in($_POST['tag']);
$description = '';
$about = '';
$cat = num($_POST['cat']);
$link=$_POST['link'];
$type_file=strrpos($link, ".");
$type_file=substr($link, $type_file + 1, 999);
$type_file = strtolower($type_file);

if ($type_file=='mp4' || $type_file=='3gp' || $type_file=='avi' || $type_file=='flv')
{
$link=$_POST['link'];
}

else{
$ch = curl_init($link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_exec($ch);
$header = curl_getinfo( $ch );
curl_close( $ch );
$link=$header["redirect_url"];

$type_file=strrpos($link, ".");
$type_file=substr($link, $type_file + 1, 999);
$type_file = strtolower($type_file);
}


$category = $mysqli -> query("SELECT * FROM `categories` WHERE `id`='".$cat."'") -> fetch_assoc();

if (!$category)
{
message('Указанная категория не найдена!');
}

if (empty($name))
{
message('Название видеофайла должно быть заполнено!');
}

if (empty($link))
{
message('Вы не ввели ссылку!');
}

if (!empty($_POST['description']))
{
$description = in($_POST['description']);
}

if (!empty($_POST['keywords']))
{
$keywords = in($_POST['keywords']);
}

if (!empty($_POST['about']))
{
$about = in($_POST['about']);
}

if (mb_strlen($name, 'utf-8') > 100)
{
message('Название видеофайла не может быть больше 100 символов!');
}

if (mb_strlen($description, 'utf-8') > 2000)
{
message('Описание (meta) должно быть не больше 2000 символов!');
}

if (mb_strlen($about, 'utf-8') > 5000)
{
message('Описание видеозаписи должно быть не больше 5000 символов!');
}

$translit_name = translit($name);
$dir = 'files/'.$category['translit'].'/'.$translit_name;
$translit = $category['translit'].'/'.$translit_name;
$url_file = $dir.'/'.$config['prefix'].$translit_name.'.'.$type_file;


if (file_exists(ROOT.'/'.$dir))
{
message('Папка с именем <b>'.$dir.'</b> уже существует!');
}

if (!mkdir(ROOT.'/'.$dir, 0777))
{
message('Произошла ошибка при создании папки '.$dir.' !');
}

chmod(ROOT.'/'.$dir, 0777);

if (!copy($link, ROOT.'/'.$url_file))
{
unlink(ROOT.'/'.$dir);
message('Ошибка при копировании файла!');
}

$video = new ffmpeg_movie(ROOT.'/'.$url_file);
$duration = round($video->getDuration());
$size = filesize(ROOT.'/'.$url_file);
$width = $video->getFrameWidth();
$height = $video->getFrameHeight();
$screen_size = $width.'x'.$height;
$scr_mini = $dir.'/screen_mini.jpg';
$scr = $dir.'/screen.jpg';
$frame_count = $video->getFrameCount();
$frame = intval($frame_count / 2);
$select = $video->getFrame($frame);

if ($select)
{
$screen = $select->toGDImage();
imagejpeg($screen, ROOT.'/'.$scr, 100);
imagedestroy($screen);
imageresize(ROOT.'/'.$scr, ROOT.'/'.$scr, 480, 480, 100);
}
else
{
$frame = intval($frame_count / 3);
$select = $video->getFrame($frame);

if (!$select)
{
unset($video);
remove_dir(ROOT.'/'.$dir);
message('Невозможно создать скриншот для этого видео! Загрузите другое видео!');
}

$screen = $select->toGDImage();
imagejpeg($screen, ROOT.'/'.$scr, 85);
imagedestroy($screen);
imageresize(ROOT.'/'.$scr, ROOT.'/'.$scr, 480, 480, 100);
}


imageresize(ROOT.'/'.$scr, ROOT.'/'.$scr_mini, 200, 200, 100);

$mysqli->query("INSERT INTO `data` SET `cat_id`='".$cat."', `name`='".$name."', `translit`='".$translit."', `about`='".$about."', `description`='".$description."', `keywords`='".$tag."', `duration`='".$duration."', `size`='".$size."', `format`='".$extension."', `screen_size`='".$screen_size."', `like`='0', `download`='0', `file`='".in($url_file)."', `mini_scr`='".$scr_mini."', `scr`='".$scr."', `add_time`='".time()."', `tag`='".$tag."'");

$action = $user['login'].' загрузил новый видеофайл: "'.$name.'".';
$mysqli->query("INSERT INTO `users_log` SET `user_id`='".$user['id']."', `action`='".in($action)."', `time`='".time()."'");

message('Файл успешно загружен!', '/panel/index.php');
}


$select_cat = $mysqli -> query("SELECT * FROM `categories`");

$cat_array = array();

while($result = $select_cat -> fetch_assoc()) {

$result['name'] = out($result['name']);
$cat_array[] = $result;

}

$data['title'] = 'Загрузить файл';
$data['cat_result'] = $cat_array;
$tpl->display('panel/import', $data);
$mysqli -> close();
?>
Boy (19.05.2019 в 19:13)
ZnTor (19.05.2019 в 19:09)
Boy (19.05.2019 в 19:07)
Asuna (19.05.2019 в 19:03)
Boy , он имеет ввиду что бы вы поставили условия что если есть в бд картинка с данного видиео то не запускать конв или наоборот запуск если нету

Ну я не кодер, в этом не разбираюсь.
Нужен хотя бы кодер за оплату, если всё так запутанно.

Сделать таблицу,и проверять если есть скрин видоса то конверт не запускать,если нету - то запускать

Сможешь? Нужно реализовать это в зц видео, ну ты понял о каком скрипте идёт речь.

Думаю да,посмотрим что можно сделать
ZnTor , Ок, отпиши потом.
Онлайн: 2
Время:
Gen. 0.1114
(c) Bym.Guru 2010-2026