Максим Ленский, хм, в любом линухе есть установщик пакетов, что то типа sudo apt-get install ffmpeg.
в винде тоже можно установить чисто для "пощупать" на локалке. В любом случае на шареде такое не проканает, в том числе из-за ограничений по вычислительной мощности, тк видеообработка сжирает нехило проца. Нужен хотя бы впс.
Максим Ленский, хм, а чем не подошло? Или есть какие-то особые причины не использовать открытое ПО специально предназначенное для работы с видео? или под проще предполагается волшебный очкарик выбирающий красивые кадры?
Размыто как то... Если хранится все в файле, то есть несколько вариантов:
1) при отправке, после записи в файл открыть его на чтение и пересчитать соответствующие вхождения.
2) хранить эти данные в отдельном файле как переменные, соответственно читать после записи в файл данных, менять переменные, выводить пользователю и записывать обратно.
3) Хранить эти данные вместе со всеми остальными записываемыми данными, все остальное как в варианте 2.
каждый имеет плюсы и минусы, выбирать надо исходя из структуры приложения.
Максим Ленский, картинка создается автоматом
а) в браузере, в автоматическом режиме исходя из первого кадра видеофайла;
б) в случае если указан атрибут poster, используемый браузером как "заставка" видео;
в первом случае ничего делать не нужно, во втором необходимо эту картинку где-то взять, судя по гифке ТС, картинка прописана руками, так как содержимое видео "немного" не совпадает с обложкой. Что, в прочем, не мешает создать ее программно.
Nikolay Petyukh, хм, и как поведение статических/нестатических КЛАССОВ связано с переходом языка на ООП? Скорее с развитием внутреннего строения модели объекта и сохранением обратной совместимости (с 4 на > 5.х).
Андрей, это вызывает варнинг, но не нарушает выполнение. Кроме того, ТС сначала написал что у него вызывает ошибку создание экземпляра класса(что оказалось не так). А в целом статика вполне себе нормальный метод работы, только, естественно, надо объявить статическим методы класса, и, конечно же, только там где это необходимо.
2 нюанс - вы объявляете data пустым объектом, затем пишете туда строку, это кривая реализация.
3 совет - хороший тон/стиль - передавать в функцию параметры и возвращать обратно результат выполнения, а так же писать осмысленные развернутые названия методов и переменных.
function updateObject(obj, value){
return obj.data = value;
}