video.cut.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. $data = fichier::getByHash($_GET["cut"]);
  3. if (empty($data["md5"])) {
  4. header("Location: /");
  5. exit();
  6. }
  7. ?>
  8. <nav aria-label="breadcrumb" class="ariane">
  9. <ol class="breadcrumb" style="border-radius: 0 0 5px 5px; padding:5px 10px;">
  10. <li class="breadcrumb-item"><a href="/">Toutes les vidéos</a></li>
  11. <li class="breadcrumb-item active"><a href="/edit/<?php echo $data["hash"] ?>"><?php echo $data["title"] ?></a></li>
  12. <li class="breadcrumb-item active" aria-current="page">Découper la vidéo</li>
  13. </ol>
  14. </nav>
  15. <div class='container' style="position: relative;" onsubmit="return confirmCut()">
  16. <!-- Lecteur vidéo -->
  17. <video id="videoStream" style="width:100%; margin-bottom: 20px;" controls>
  18. <source src="https://<?php echo DOMAIN_MEDIAS . "/video/" . $data["hash"] ?>" type='video/mp4'>
  19. Votre navigateur ne supporte pas la balise vidéo.
  20. </video>
  21. <!-- Formulaire -->
  22. <form id="cutForm" method="POST">
  23. <input type="hidden" name="from" value="video.cut">
  24. <input type="hidden" name="id" value="<?php echo $data["id"] ?>">
  25. <input type="hidden" name="md5" value="<?php echo $data["md5"] ?>">
  26. <input type="hidden" name="hash" value="<?php echo $data["hash"] ?>">
  27. <!-- Champ Heure de début -->
  28. <div class="form-group">
  29. <label for="startTime">Heure de début (format HH:MM:SS) :</label>
  30. <div class="input-group mb-3">
  31. <div class="input-group-prepend">
  32. <button type="button" class='btn btn-secondary' onclick="setStartTime()">Cliquez ici pour définir le début de la vidéo</button>
  33. </div>
  34. <input class='form-control' type="text" id="startTime" name="startTime" value="00:00:00" required>
  35. </div>
  36. </div>
  37. <!-- Champ Heure de fin -->
  38. <div class="form-group">
  39. <label for="endTime">Heure de fin (format HH:MM:SS) :</label>
  40. <div class="input-group mb-3">
  41. <div class="input-group-prepend">
  42. <button type="button" class='btn btn-secondary' onclick="setEndTime()">Cliquez ici pour définir la fin de la vidéo</button>
  43. </div>
  44. <input class='form-control' type="text" id="endTime" name="endTime" value="<?php echo core::formatDuration($data["duration"], ":") ?>" required>
  45. </div>
  46. </div>
  47. <!-- Bouton soumettre -->
  48. <button type="submit" class='btn btn-primary btn-lg'>Découper la Vidéo</button>
  49. </form>
  50. </div>
  51. <script>
  52. // Fonction pour convertir le temps en format HH:MM:SS
  53. function formatTime(seconds) {
  54. const h = Math.floor(seconds / 3600).toString().padStart(2, '0');
  55. const m = Math.floor((seconds % 3600) / 60).toString().padStart(2, '0');
  56. const s = Math.floor(seconds % 60).toString().padStart(2, '0');
  57. return `${h}:${m}:${s}`;
  58. }
  59. // Fonction pour définir l'heure de début
  60. function setStartTime() {
  61. const video = document.getElementById('videoStream');
  62. const startTimeField = document.getElementById('startTime');
  63. startTimeField.value = formatTime(video.currentTime);
  64. }
  65. // Fonction pour définir l'heure de fin (avec une seconde ajoutée)
  66. function setEndTime() {
  67. const video = document.getElementById('videoStream');
  68. const endTimeField = document.getElementById('endTime');
  69. // Ajouter une seconde à la position actuelle
  70. const endTimeWithExtraSecond = video.currentTime;
  71. // Mettre à jour le champ avec le temps ajusté
  72. endTimeField.value = formatTime(endTimeWithExtraSecond);
  73. }
  74. // Fonction pour afficher une confirmation avant la soumission du formulaire
  75. function confirmCut() {
  76. const startTime = document.getElementById('startTime').value;
  77. const endTime = document.getElementById('endTime').value;
  78. if(startTime === "00:00:00" && endTime === "<?php echo core::formatDuration($data["duration"], ":") ?>"){
  79. window.location.href = "/edit/<?php echo $data["hash"] ?>";
  80. return false;
  81. }
  82. // Message de confirmation personnalisé
  83. const message = `Vous êtes sur le point de découper la vidéo car ce sera définitif.\n\nElle commencera à ${startTime} et se terminera à ${endTime}.\n\nVoulez-vous continuer ?`;
  84. // Afficher la boîte de dialogue de confirmation
  85. return confirm(message);
  86. }
  87. </script>