O script em lote abaixo faz isso. Otimizado para web, produz um vídeo de pré-visualização com 10 imagens tiradas do vídeo original. Cada imagem aparece por 1s. O script obtém amostras de imagens de maneira que as imagens de visualização sejam tiradas de todo o vídeo.
-
Requer apenas o ffmpeg. (e ffprobe que faz parte do pacote ffmpeg)
-
Saída: mp4 / h.264 ~ 120Kb (independentemente do tamanho do vídeo original) .
-
Totalmente configurável.
-
Lanczos otimizados e filtro de nitidez.
-
Mantém a proporção do vídeo original ajustando-o em um quadro 16: 9 (384x216) (preencha as barras pretas nas laterais quando necessário).
-
Nenhum arquivo temporário usado. (pipe on-the-fly de ffmpeg para ffmpeg)
-
HTML5 amigável.
Aqui estão dois exemplos de gif somente para visualização. A saída real é mp4 / h.264:
Fonte de vídeo 16: 9. Saída:
Fontedevídeo4:3.Saída:
ExecutenoWindows,maselepodeserfacilmenteconvertidoemscriptbash(Linux).
Oscriptcriaumapasta./preview
,ondearmazenatodasaspré-visualizaçõesgeradas:
/Myvideosmovie1.mp4~anysizemovie2.mp4~anysize/previewmovie1.mp4~120Kbmovie2.mp4~120Kb
Podeserajustadoparaserexecutadoemarquivosindividuais.
previewGenerator.cmd:
REM----------------------------------------------setfolder=C:\Myvideossetvframes=10setwidth=384setheight=216remw=h*16/9setfiletypes=*.mp4REM----------------------------------------------setlocalEnableDelayedExpansionpushd"%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
)
Atualização:
Você pode controlar facilmente a taxa de reprodução em HTML5 <video>
, conforme mostrado aqui
Por que não usar gif em vez disso?
-
O formato
-
.gif tem uma pior qualidade (cores de pixelate / máximo de 256 cores)
-
O tamanho do arquivo .gif é pelo menos 2x maior.
-
Você não pode controlar as animações gif de velocidade de reprodução / pausa após sua criação.