Я разрешаю пользователям загружать следующие видеофайлы:
WMV | AVI | мили на галлон | mp4 | мы | OGG | FLV | 3gp | 3g2 | m4v
Прежде всего мои php-скрипты проверяют расширение файла. Если это не одно из разрешенных расширений, загрузка прерывается.
Во-вторых. Скрипт проверяет MIME-тип:
$finfo = new finfo;
$ftyp = $finfo->file($uploaded_file, FILEINFO_MIME_TYPE);
$avava = array(
"video/mp4",
"video/x-ms-asf",
"video/x-ms-wmv",
"video/x-msvideo",
"video/mpeg",
"video/quicktime",
"video/x-flv",
"video/ogg",
"video/3gpp",
"video/3gpp2");
if (!in_array($ftyp, $avava)) {
$file->error = $this->get_error_message('accept_file_types');
return false;
}
Скрипт также проверяет частоту кадров и размеры и т. Д.
Если все правильно, загрузка завершается, и cronjob каждые 10 минут преобразует загруженные видеофайлы в mp4 и уменьшает размеры, если они очень большие:
$thuc = exec("avconv -y -i $fai -map 0 -c:v libx264 -crf 22 -c:a copy $fai2");
if ($width > 800) {
$thuc = exec("avconv -y -i $fai2 -filter:v scale=\"750:trunc(ow/a/2)*2\" -c:a copy $fai3");
}
Когда я получаю доступ к загруженным видео, большинство видео в порядке, но некоторые видео не работают — видео не запускается и не работает; ничего не показывать.
Все эти файлы представляют собой небольшие 45-байтовые файлы, которые в текстовом редакторе показывают следующие строки:
GIF89a € ÿÿÿ !ù , „ ;
Что это? Это GIF-файл? Как люди могут загружать GIF-файлы, если они не входят в число разрешенных типов MIME? Почему эти файлы такие маленькие? Что вызывает эту проблему? PHP-скрипты позволяют загружать GIF-файлы? Это проблема с avconv?
Задача ещё не решена.
Других решений пока нет …