api_video_tool.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. set_time_limit(0);
  3. require '../../vendor/autoload.php';
  4. $GLOBALS["videoExt"] = array('mp4', 'avi');
  5. $GLOBALS["pdfExt"] = array('doc', 'docx', 'ppt', 'pptx', 'pdf');
  6. use NcJoes\OfficeConverter\OfficeConverter;
  7. use Streaming\Representation;
  8. $ffmpeg = Streaming\FFMpeg::create([
  9. 'ffmpeg.binaries' => 'C:\FFmpeg\bin\ffmpeg.exe',
  10. 'ffprobe.binaries' => 'C:\FFmpeg\bin\ffprobe.exe',
  11. 'timeout' => 3600,
  12. ]);
  13. $GLOBALS["ffmpeg"] = $ffmpeg;
  14. $root = '../../assets';
  15. $folder = 'API';
  16. FindPath($root, $folder, $ffmpeg);
  17. function ConvertVideo($file_path, $ffmpeg)
  18. {
  19. $r_1080p = (new Representation)->setKiloBitrate(4096)->setResize(1920, 1080);
  20. $dir_name = pathinfo($file_path, PATHINFO_DIRNAME);
  21. $file_name = pathinfo($file_path, PATHINFO_FILENAME);
  22. $ext = pathinfo($file_path, PATHINFO_EXTENSION);
  23. if (!file_exists("../." . $dir_name . '/' . $file_name . ".m3u8")) {
  24. $video = $ffmpeg->open("../." . $file_path);
  25. $video->hls()
  26. ->x264()
  27. ->setHlsTime(300)
  28. ->addRepresentations([$r_1080p])
  29. ->save("../." . $dir_name . '/' . $file_name . ".m3u8");
  30. echo "<span style='color:red;'>";
  31. echo " " . $ext . " ==> m3u8";
  32. echo "</span>";
  33. }
  34. }
  35. function ConvertPdf($file_path)
  36. {
  37. $dir_name = pathinfo($file_path, PATHINFO_DIRNAME);
  38. $file_name = pathinfo($file_path, PATHINFO_FILENAME);
  39. $ext = pathinfo($file_path, PATHINFO_EXTENSION);
  40. if (!file_exists("../." . $dir_name . '/' . $file_name . ".pdf")) {
  41. $converter = new OfficeConverter("../." . $file_path, "./", "soffice.bin ", false);
  42. $converter->convertTo("../." . $dir_name . '/' . $file_name . ".pdf");
  43. echo "<span style='color:red;'>";
  44. echo " " . $ext . " ==> pdf";
  45. echo "</span>";
  46. }
  47. if (!file_exists("../." . $dir_name . '/' . $file_name . ".jpg")) {
  48. $root = $_SERVER['DOCUMENT_ROOT'] . '/BIM-Monitor' . substr($dir_name, 1) . '/' . $file_name;
  49. $im = new imagick();
  50. $im->readimage($root . '.pdf[0]');
  51. $im->setImageFormat('jpg');
  52. $im->writeImage($root . '.jpg');
  53. $im->clear();
  54. $im->destroy();
  55. echo "<span style='color:red;'>";
  56. echo " pdf ==> jpg";
  57. echo "</span>";
  58. }
  59. }
  60. function FindPath($root, $folder, $ffmpeg)
  61. {
  62. $rootPath = $root . '/' . $folder;
  63. $paths = array_diff(scandir($root . '/' . $folder), array('.', '..', 'Thumbs.db'));
  64. natsort($paths);
  65. echo ("<ul>");
  66. foreach ($paths as $path) {
  67. if (str_contains($path, '.')) {
  68. echo ("<li data-jstree='{ " . '"type" : "file"' . " }' >");
  69. $title = explode(".", $path)[0];
  70. $file_path = substr($rootPath, 4) . "/" . $path;
  71. $path = "title:" . $title . "path:" . $file_path . " dir_id:" . $folder;
  72. echo ($path);
  73. $ext = pathinfo($file_path, PATHINFO_EXTENSION);
  74. if (in_array($ext, $GLOBALS["videoExt"])) {
  75. ConvertVideo($file_path, $ffmpeg);
  76. } else if (in_array($ext, $GLOBALS["pdfExt"])) {
  77. //ConvertPdf($file_path);
  78. }
  79. echo ("</li>");
  80. } else {
  81. echo ("<li>");
  82. echo ("dir_name: " . $path . "parent: " . $folder);
  83. FindPath($rootPath, $path, $ffmpeg);
  84. echo ("</li>");
  85. }
  86. }
  87. echo ("</ul>");
  88. }