Как узнать width и height видеофайла при загрузке на сервер?
Загружаю с помощью этого кода видео на сервер.
$(document).ready(function(){ $(document).on('change', '#videofile', function(){ const name = document.getElementById("videofile").files[0].name; const form_data = new FormData(); const ext = name.split('.').pop().toLowerCase(); if(jQuery.inArray(ext, ['mp4','webm']) == -1) { alert("Invalid Video File. Only mp4,webm."); return; } const oFReader = new FileReader(); oFReader.readAsDataURL(document.getElementById("videofile").files[0]); const f = document.getElementById("videofile").files[0]; const fsize = f.size||f.fileSize; if(fsize > 100000000) { alert("Video File Size is very big. Max 100mb."); return; } else { form_data.append("file", document.getElementById('videofile').files[0]); $.ajax({ url:"http://localhost/uploadvideo/", method:"POST", data: form_data, contentType: false, cache: false, processData: false, beforeSend:function(){ $('#uploaded_image').html("<label class='text-success'>Video Uploading...</label>"); }, success:function(data) { console.log(data); } |
$(document).ready(function(){ $(document).on('change', '#videofile', function(){ const name = document.getElementById("videofile").files[0].name; const form_data = new FormData(); const ext = name.split('.').pop().toLowerCase(); if(jQuery.inArray(ext, ['mp4','webm']) == -1) { alert("Invalid Video File. Only mp4,webm."); return; } const oFReader = new FileReader(); oFReader.readAsDataURL(document.getElementById("videofile").files[0]); const f = document.getElementById("videofile").files[0]; const fsize = f.size||f.fileSize; if(fsize > 100000000) { alert("Video File Size is very big. Max 100mb."); return; } else { form_data.append("file", document.getElementById('videofile').files[0]); $.ajax({ url:"http://localhost/uploadvideo/", method:"POST", data: form_data, contentType: false, cache: false, processData: false, beforeSend:function(){ $('#uploaded_image').html("<label class='text-success'>Video Uploading...</label>"); }, success:function(data) { console.log(data); }
И с помощью php его перемещаю:
<?php $value = uniqid(); $value .= date('YmdHis'); if($_FILES["file"]["name"] != '') { $test = explode('.', $_FILES["file"]["name"]); $ext = end($test); $name = $value . '.' . $ext; $location = './upload/' . $name; move_uploaded_file($_FILES["file"]["tmp_name"], $location); $url = 'http://localhost/watch/' . $name; echo ''.$name.''; } ?> |
<?php $value = uniqid(); $value .= date('YmdHis'); if($_FILES["file"]["name"] != '') { $test = explode('.', $_FILES["file"]["name"]); $ext = end($test); $name = $value . '.' . $ext; $location = './upload/' . $name; move_uploaded_file($_FILES["file"]["tmp_name"], $location); $url = 'http://localhost/watch/' . $name; echo ''.$name.''; } ?>
Можно как-то с помощью JS до загрузки или с помощью PHP после загрузки узнать width и height видео?
Дополнительно:
ffmpeg
На фронте использу эту библиотеку
https://github.com/buzz/mediainfo.js
Посмотреть в деле без заливки файла на сервер
https://mediainfo.js.org/
- Воу! Спасибо!!!
- а как с объекта result получить значение переменной Width?
- Он, кстати, работает не правильно. Всегда пишет width и height 720px x 1280px(
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы узнать width и height видеофайла при его загрузке на сервер, можно воспользоваться библиотекой FFmpeg, которая предоставляет возможность работать с мультимедийными файлами. Ниже приведен пример кода на языке PHP, который демонстрирует как получить информацию о видео файле:
// Путь к загруженному видео файлу $videoPath = 'путь_к_файлу/видео.mp4'; // Вызываем команду FFmpeg для получения информации о видео файле $cmd = 'ffmpeg -i ' . $videoPath . ' 2>&1'; exec($cmd, $output); // Парсим вывод FFmpeg, чтобы найти width и height видео файла foreach ($output as $line) { if (strpos($line, 'Stream #0:0') !== false) { preg_match('/[0-9]{3,}x[0-9]{3,}/', $line, $matches); if (!empty($matches)) { $dimensions = explode('x', $matches[0]); $width = $dimensions[0]; $height = $dimensions[1]; break; } } } // Выводим полученные значения echo 'Width: ' . $width . ' Height: ' . $height;
В данном коде мы используем команду FFmpeg для получения информации о видео файле. Затем мы парсим вывод FFmpeg, чтобы найти значения width и height видео файла. Наконец, мы выводим полученные значения на экран.
Не забудьте установить FFmpeg на ваш сервер, чтобы данный код работал корректно. Надеюсь, это решит вашу проблему!