Пакетный скрипт ниже делает это. Оптимизированный для Интернета, он производит предварительный просмотр видео с 10 изображениями, взятыми из исходного видео. Каждое изображение появляется в течение 1 с. Сценарий получает образцы изображений соответственно, поэтому изображения для предварительного просмотра взяты из всего видео.
Требуется только ffmpeg. (и ffprobe, который является частью пакета ffmpeg)
Выход: mp4 / h.264 ~ 120Kb (независимо от исходного размера видео) .
Полностью настраиваемый.
Оптимизирован lanczos и точить фильтр.
Сохраняет пропорции исходного видео, помещая его в рамку 16: 9 (384x216) (при необходимости заполните черные полосы по бокам).
Временные файлы не используются. (труба на лету от ffmpeg к ffmpeg)
HTML5 дружественный.
Вот два примера GIF только для предварительного просмотра. Фактический результат - mp4 / h.264:
16: 9 видео источник. Выход:
Источник видео 4: 3. Выход:
Запустите на Windows, но это может быть легко преобразовано в скрипт bash (Linux).
Скрипт создает папку, в ./preview
которой хранятся все созданные превью:
/My videos movie1.mp4 ~ any size movie2.mp4 ~ any size /preview movie1.mp4 ~ 120Kb movie2.mp4 ~ 120Kb
Его можно настроить для работы с отдельными файлами.
previewGenerator.cmd:
REM ---------------------------------------------- set folder=C:\My videos set vframes=10 set width=384 set height=216 rem w = h*16/9 set filetypes=*.mp4 REM ---------------------------------------------- setlocal EnableDelayedExpansion pushd "%folder%" if not exist preview md preview for /f "usebackq delims=" %%f in (`dir /b %filetypes%`) do ( if not exist "preview\%%~nf.mp4" ( for /f %%i in ('ffprobe -v error -show_entries format^=duration "%%f" -of default^=noprint_wrappers^=1:nokey^=1') do set length=%%i set /a length=!length!+0 set /a fps=!length!/%vframes% ffmpeg -threads 2 -i "%%f" -an -qscale:v 1 -vf "fps=1/!fps!, scale=iw*min(%width%/iw\,%height%/ih):ih*min(%width%/iw\,%height%/ih):flags=lanczos, pad=%width%:%height%:(%width%-iw*min(%width%/iw\,%height%/ih))/2:(%height%-ih*min(%width%/iw\,%height%/ih))/2, unsharp=5:5:0.5:5:5:0.5" -vframes %vframes% -f image2pipe -vcodec ppm - ^ | ffmpeg -y -threads 2 -framerate 1 -i pipe:0 -c:v libx264 -profile:v baseline -level 3.0 -tune stillimage -r 30 -pix_fmt yuv420p "preview\%%~nf.mp4" ) cls )
Обновление: вы можете легко контролировать скорость воспроизведения в HTML5, <video>
как показано здесь
Почему бы не использовать GIF вместо этого?
.gif формат имеет худшее качество (пиксельные цвета / максимум 256 цветов)
Размер файла .gif как минимум в 2 раза больше.
Вы не можете контролировать скорость воспроизведения / приостанавливать анимацию после его создания.