| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
- set_time_limit(0);
- require '../../vendor/autoload.php';
- $GLOBALS["videoExt"] = array('mp4', 'wmv');
- $GLOBALS["pdfExt"] = array('doc', 'docx', 'ppt', 'pptx', 'pdf');
- use NcJoes\OfficeConverter\OfficeConverter;
- use Streaming\Representation;
- $ffmpeg = Streaming\FFMpeg::create([
- 'ffmpeg.binaries' => 'C:\FFmpeg\bin\ffmpeg.exe',
- 'ffprobe.binaries' => 'C:\FFmpeg\bin\ffprobe.exe',
- 'timeout' => 3600,
- ]);
- $GLOBALS["ffmpeg"] = $ffmpeg;
- $root = '../../assets';
- $folder = 'videos';
- FindPath($root, $folder, $ffmpeg);
- function ConvertVideo($file_path, $ffmpeg)
- {
- $r_1080p = (new Representation)->setKiloBitrate(4096)->setResize(1920, 1080);
- $dir_name = pathinfo($file_path, PATHINFO_DIRNAME);
- $file_name = pathinfo($file_path, PATHINFO_FILENAME);
- $ext = pathinfo($file_path, PATHINFO_EXTENSION);
- if (!file_exists("../." . $dir_name . '/' . $file_name . ".m3u8")) {
- $video = $ffmpeg->open("../." . $file_path);
- $video->hls()
- ->x264()
- ->setHlsTime(300)
- ->addRepresentations([$r_1080p])
- ->save("../." . $dir_name . '/' . $file_name . ".m3u8");
- $video->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(40))
- ->save("../." . $dir_name . '/' . $file_name . ".jpg");
- $video
- ->gif(FFMpeg\Coordinate\TimeCode::fromSeconds(40), new FFMpeg\Coordinate\Dimension(640, 480), 5)
- ->save("../." . $dir_name . '/' . $file_name . ".gif");
- echo "<span style='color:red;'>";
- echo " " . $ext . " ==> m3u8";
- echo "</span>";
- }
- }
- function ConvertPdf($file_path)
- {
- $dir_name = pathinfo($file_path, PATHINFO_DIRNAME);
- $file_name = pathinfo($file_path, PATHINFO_FILENAME);
- $ext = pathinfo($file_path, PATHINFO_EXTENSION);
- if (!file_exists("../." . $dir_name . '/' . $file_name . ".pdf")) {
- $converter = new OfficeConverter("../." . $file_path, "./", "soffice.bin ", false);
- $converter->convertTo("../." . $dir_name . '/' . $file_name . ".pdf");
- echo "<span style='color:red;'>";
- echo " " . $ext . " ==> pdf";
- echo "</span>";
- }
- if (!file_exists("../." . $dir_name . '/' . $file_name . ".jpg")) {
- $root = $_SERVER['DOCUMENT_ROOT'] . '/BIM-Monitor' . substr($dir_name, 1) . '/' . $file_name;
- $im = new imagick();
- $im->readimage($root . '.pdf[0]');
- $im->setImageFormat('jpg');
- $im->writeImage($root . '.jpg');
- $im->clear();
- $im->destroy();
- echo "<span style='color:red;'>";
- echo " pdf ==> jpg";
- echo "</span>";
- }
- }
- function FindPath($root, $folder, $ffmpeg)
- {
- $rootPath = $root . '/' . $folder;
- $paths = array_diff(scandir($root . '/' . $folder), array('.', '..', 'Thumbs.db'));
- natsort($paths);
- echo ("<ul>");
- foreach ($paths as $path) {
- if (str_contains($path, '.')) {
- echo ("<li data-jstree='{ " . '"type" : "file"' . " }' >");
- $title = explode(".", $path)[0];
- $file_path = substr($rootPath, 4) . "/" . $path;
- $path = "title:" . $title . "path:" . $file_path . " dir_id:" . $folder;
- echo ($path);
- $ext = pathinfo($file_path, PATHINFO_EXTENSION);
- if (in_array($ext, $GLOBALS["videoExt"])) {
- ConvertVideo($file_path, $ffmpeg);
- } else if (in_array($ext, $GLOBALS["pdfExt"])) {
- ConvertPdf($file_path);
- }
- echo ("</li>");
- } else {
- echo ("<li>");
- echo ("dir_name: " . $path . "parent: " . $folder);
- FindPath($rootPath, $path, $ffmpeg);
- echo ("</li>");
- }
- }
- echo ("</ul>");
- }
|