Как узнать width и height видеофайла при загрузке на сервер?

Ссылка скопирована
5 мая 2026 1 ответ

Загружаю с помощью этого кода видео на сервер.

$(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(
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь Волков Ответ

Для того чтобы узнать 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;

// Путь к загруженному видео файлу $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 на ваш сервер, чтобы данный код работал корректно. Надеюсь, это решит вашу проблему!

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно