Acabei de terminar um código que não sei ainda se é alpha ou se é beta, pois release eu tenho certeza que não é, que só deve ser utilizado pelas pessoas mais sem juízo da internet.
Se quiser testar, o código não é nem aberto, é completamente visível, tá na cara e no melhor estilo: 100% por sua conta e risco.
Ele não deveria precisar instalar nada. Ele faz download usando programas nativos do windows do ffmpeg e do 7zip, descompacta e reorganiza as ferramentas. Aparentemente o download através de programas nativos do windows é mais demorado do que o tempo normalmente gasto em download através de navegadores, porém, não deve passar de 10 minutos. Será que tem coragem de executar um script que pede para o usuário aguardar mais de 10 minutos para download de ferramentas??
Se tem coragem, o programa é seu!
Dica de uso: (a) faça download do script, salve-o dentro de uma nova pasta, vazia, e exclusiva para ele. Se tudo der certo ele produzirá as pastas necessárias. (b) coloque dentro da pasta "video" criada pelo script na primeira execução o vídeo que quiser transformar trecho dele em gif. coloque apenas 1 vídeo por vez. (c) siga as instruções da tela e se tudo der certo, dentro da pasta "gif" produzida pelo script estará lá sua obra de arte.
Atenção: Este script é completamente experimental. E não me responsabilizo nunca por nenhum script que você baixe da internet e execute em sua máquina. Isso aqui é para quem tem coragem!
video2gif.cmd - colorido pelo hilite.me, batchfile, emacs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 | @echo off echo. echo. Verificando Diretorios call :starting echo. Verificando Ferramentas call :download echo. Descompactando Ferramentas call :unsevenzipping if %ERRORLEVEL% NEQ 0 ( echo. echo. Leia o arquivo: video2gif.log echo. - algum erro foi encontrado - echo. - parando execucao - echo. timeout /NOBREAK /T 20 exit /B ) echo. Verificando todos arquivos call :onlycheck if %ERRORLEVEL% NEQ 0 ( echo. echo. Leia o arquivo: video2gif.log echo. - algum erro foi encontrado - echo. - parando execucao, em onlycheck - echo. timeout /NOBREAK /T 20 exit /B ) echo. Video2GiF call :mainvideo2gif explorer gif echo. exit /B ::#######################:: ::## refinements ##:: ::#######################:: :starting if not exist video mkdir video if not exist tools mkdir tools if not exist tools\tmp mkdir tools\tmp if not exist gif mkdir gif exit /B :download if not exist tools\tmp ( echo. A subpasta "tmp" nao foi criada em "tools" timeout /T 10 /NOBREAK exit /B ) if not exist tools\tmp\ffmpeg.zip ( echo. Fazendo download do ffmpeg 4.1.1 x86 echo. por favor, aguarde... echo. 60MB, tempo esperado: ate 10 min. echo. relogio-antes.: %time%. certutil.exe -urlcache -split -f "https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-4.1.1-win32-static.zip" tools\tmp\ffmpeg.zip REM :: Clear CertUtil URLCache REM :: certutil -urlcache * delete echo. relogio-depois: %time%. ) else ( echo. ffmpeg.zip encontrado! ) if not exist tools\tmp\7zr.exe ( echo. Fazendo download do 7zr.exe echo. por favor, aguarde... echo. 1MB, tempo esperado: ate 1 min. echo. relogio-antes.: %time%. certutil.exe -urlcache -split -f "https://www.7-zip.org/a/7zr.exe" tools\tmp\7zr.exe echo. relogio-depois: %time%. REM :: source: https://sourceforge.net/p/sevenzip/discussion/45798/thread/b599cf02/ ) else ( echo. 7zr.exe encontrado! ) if not exist tools\tmp\7z1604-extra.7z ( echo. Fazendo download do 7z1604-extra.7z echo. por favor, aguarde... echo. 1MB, tempo esperado: ate 1 min. echo. relogio-antes.: %time%. certutil.exe -urlcache -split -f "https://www.7-zip.org/a/7z1604-extra.7z" tools\tmp\7z1604-extra.7z echo. relogio-depois: %time%. REM :: source: https://www.7-zip.org/download.html REM :: alternatives: REM :: https://media.githubusercontent.com/media/develar/7zip-bin/master/win/ia32/7za.exe REM :: https://ufpr.dl.sourceforge.net/project/easyup/7z.exe REM :: http://stahlworks.com/dev/unzip.exe REM :: sources: REM :: https://github.com/develar/7zip-bin REM :: http://stahlworks.com/dev/index.php?tool=zipunzip )else ( echo. 7z1604-extra.7z encontrado! ) exit /B :unsevenzipping set /A "errorcontrol=0" if not exist tools\tmp\7zr.exe set /A "errorcontrol=%errorcontrol%+1" if not exist tools\tmp\7z1604-extra.7z set /A "errorcontrol=%errorcontrol%+2" if not exist tools\tmp\ffmpeg.zip set /A "errorcontrol=%errorcontrol%+4" if %errorcontrol% NEQ 0 ( echo. echo.-Codigo de Erro: %errorcontrol%- echo.[%date%][%time%]-Codigo de Erro: %errorcontrol%->> video2gif.log echo. exit /B %errorcontrol% ) if not exist tools\tmp\ZF ( tools\tmp\7zr.exe x tools\tmp\7z1604-extra.7z -otools\tmp\ZF ) else ( echo. tools\tmp\ZF encontrado! ) if not exist tools\7za.exe ( if exist tools\tmp\ZF\7za.exe ( copy tools\tmp\ZF\7za.exe tools\7za.exe ) else echo.-tools\tmp\ZF\7za.exe nao encontrado!- ) else ( echo. tools\7za.exe encontrado! ) if not exist tools\ffmpeg.exe ( if exist tools\tmp\ffmpeg.zip ( tools\7za.exe x tools\tmp\ffmpeg.zip -otools\tmp\FF copy tools\tmp\FF\ffmpeg-4.1.1-win32-static\bin\ffmpeg.exe tools\ffmpeg.exe copy tools\tmp\FF\ffmpeg-4.1.1-win32-static\bin\ffplay.exe tools\ffplay.exe copy tools\tmp\FF\ffmpeg-4.1.1-win32-static\bin\ffprobe.exe tools\ffprobe.exe ) else echo.-tools\tmp\ffmpeg.zip nao encontrado!- ) else ( echo. tools\ffmpeg.exe encontrado! ) REM tools\tmp\ZF\7zr.exe x tools\tmp\7z1604-extra.7z -otools\tmp\ZF REM echo. eu tou vivo, bichao REM echo. %errorcontrol% REM 7zr.exe x 7z1604-extra.7z -oZF REM copy 7za.exe REM Packing / unpacking: 7z, xz, ZIP, GZIP, BZIP2 and TAR REM 7za.exe x ffmpeg.zip -oFF exit /B :onlycheck set /A "errorcontrol=0" if not exist gif set /A "errorcontrol=%errorcontrol%+1" if not exist tools set /A "errorcontrol=%errorcontrol%+2" if not exist tools\7za.exe set /A "errorcontrol=%errorcontrol%+4" if not exist tools\ffmpeg.exe set /A "errorcontrol=%errorcontrol%+8" if not exist tools\ffplay.exe set /A "errorcontrol=%errorcontrol%+16" if not exist tools\ffprobe.exe set /A "errorcontrol=%errorcontrol%+32" if not exist video set /A "errorcontrol=%errorcontrol%+64" if %errorcontrol% NEQ 0 ( echo. echo.-Codigo de Erro: %errorcontrol% em onlycheck- echo.[%date%][%time%]-Codigo de Erro: %errorcontrol% em onlycheck->> video2gif.log echo. exit /B %errorcontrol% ) else ( echo. video2gif completo! ) exit /B :mainvideo2gif set SDL_AUDIODRIVER=directsound set "wait=10" :theloop cls echo. echo. Video2GiF echo. echo. modo de usar: echo. coloque apenas 1 video por vez dentro da pasta: "video" echo. o resultado serah salvo na pasta: "gif" echo. echo. quando o gif for produzido, aperte Q para sair echo. dir /b video\*.mp4 > video\lastvideo.txt 2> nul dir /b video\*.m4v >> video\lastvideo.txt 2> nul dir /b video\*.flv >> video\lastvideo.txt 2> nul dir /b video\*.mkv >> video\lastvideo.txt 2> nul dir /b video\*.webm >> video\lastvideo.txt 2> nul dir /b video\*.avi >> video\lastvideo.txt 2> nul dir /b video\*.mpg >> video\lastvideo.txt 2> nul dir /b video\*.mpeg >> video\lastvideo.txt 2> nul dir /b video\*.wmv >> video\lastvideo.txt 2> nul dir /b video\*.rm >> video\lastvideo.txt 2> nul dir /b video\*.rmvb >> video\lastvideo.txt 2> nul dir /b video\*.m4v >> video\lastvideo.txt 2> nul dir /b video\*.3gp >> video\lastvideo.txt 2> nul dir /b video\*.3g2 >> video\lastvideo.txt 2> nul set "thelastvideo=null" set "thenextgif=null" set /p thelastvideo=<video\lastvideo.txt echo. video2gif if %thelastvideo%==null ( echo. nenhum video foi encontrado! echo. por favor, coloque um video na pasta, echo. e aperte enter para continuar. echo. pause goto :theloop ) set "thenextgif=gif\%thelastvideo:~0,-3%gif" set "thelastvideo=video\%thelastvideo%" tools\ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 %thelastvideo% > video\lastvideo.txt 2> nul set "videoduration=10" set /p videoduration=<video\lastvideo.txt set "videoduration=%videoduration:~0,6%" echo. encontrado: %thelastvideo% echo. resultado.: %thenextgif% [futuro] echo. video em s: %videoduration% [duracao completa do video em segundos] echo. echo. perguntas: [na duvida, nao digite nada!, apenas aperte enter] echo. echo."a qualidade retro possui baixa resolucao e baixa qualidade de cor" set "oldgif=0" set /p "oldgif=.qualidade retro? [0 ou 1, default: 0] " echo. echo."informe em segundos o inicio do corte do video, na duvida, enter" set "startgif=0.0" set /p "startgif=.inicio do gif em s? [default: 0.0] " set /A "mathstartgif=startgif" set /A "mathvideoduration=videoduration" if %mathstartgif% GTR %mathvideoduration% ( set /A "startgif=mathvideoduration-7" ) if %mathstartgif% LSS 0 ( set "startgif=0.0" ) echo. echo."informe em segundos a duracao do gif, na duvida, enter" set "lengthgif=7.0" set /p "lengthgif=.duracao do gif em s? [default: 7.0] " set /A "mathlengthgif=lengthgif" if %mathlengthgif% GTR %mathvideoduration% ( set "lengthgif=%videoduration%" ) if %mathlengthgif% LSS 0 ( set "lengthgif=7.0" ) if "%oldgif%"=="1" ( echo. echo. echo. aguarde, seu video retro sera processado. echo. algumas janelas piscarao, para fechar a janela do gif, echo. clique no gif, e aperte a tecla "Q" para sair echo. echo. timeout /NOBREAK /T %wait% > nul start "" /WAIT tools\ffmpeg.exe -hide_banner -ss %startgif% -t %lengthgif% -i %thelastvideo% -r 20 -vf scale=-2:224 -y %thenextgif% start "" /WAIT tools\ffplay.exe -hide_banner -loop 0 %thenextgif% exit /B ) echo. set "framerate=25" echo."informe um framerate nao maior que 30, na duvida, enter" set /p "framerate=.framerate?[12;15;20;25;30default: 25] " set /A "framerate=framerate" if %framerate% GTR 30 ( REM :: soh um individuo teria a audacia de escolher REM :: um framerate maior que 30: Fal4KGamer. REM :: Deixa disso Fal4K@60Gamer. set "framerate=30" ) if %framerate% LSS 12 ( set "framerate=12" ) echo. echo."informe um resolucao nao maior que 480, na duvida, enter" echo."sugestoes: 144, 160, 180, 224, 240, 300, 320, 360, 480 " set "resolucao=300" set /p "resolucao=.resolucao?[144;240;320, default: 300] " set /A "resolucao=resolucao" if %resolucao% GTR 480 ( REM :: soh um individuo teria o desejo de escolher REM :: uma resolucao maior que 480: Fal4KGamer. REM :: Deixa disso Fal4K@60:51mpbsGamer. set "resolucao=480" ) if %resolucao% LSS 144 ( set "resolucao=144" ) echo. echo. echo. aguarde, algumas janelas piscarao, clique no gif, echo. e aperte a tecla "Q" para sair echo. echo. timeout /NOBREAK /T %wait% > nul REM echo tools\ffmpeg.exe -hide_banner -ss %startgif% -t %lengthgif% -i %thelastvideo% -vf fps=%framerate%,scale=-2:%resolucao%:flags=lanczos,palettegen -y video\palette.png start "" /WAIT tools\ffmpeg.exe -hide_banner -ss %startgif% -t %lengthgif% -i %thelastvideo% -vf fps=%framerate%,scale=-2:%resolucao%:flags=lanczos,palettegen -y video\palette.png start "" /WAIT tools\ffmpeg.exe -hide_banner -ss %startgif% -t %lengthgif% -i %thelastvideo% -i video\palette.png -filter_complex "fps=%framerate%,scale=-2:%resolucao%:flags=lanczos[x];[x][1:v]paletteuse" -y %thenextgif% start "" /WAIT tools\ffplay.exe -hide_banner -loop 0 %thenextgif% echo. echo. echo. echo. exit /B REM see: https://trac.ffmpeg.org/wiki/Scaling exit /B ::#######################:: ::## without use ##:: ::#######################:: exit /B for /L %%p IN (0,1,5) DO ( call :dontkilltheworld %counter% %%p echo.4:%%p - %counter% ) exit /B :dontkilltheworld set "abc=6" set "abc=%~1" set "def=7" set "def=%~2" echo.3:%def% - %abc% exit /B REM :: bitsadmin needs to run as ADMIN to download bitsadmin /CREATE dlffmpeg bitsadmin /TRANSFER dlffmpeg /DOWNLOAD /PRIORITY normal https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-4.1.1-win32-static.zip %temp%\ffmpegoff.zip bitsadmin /LIST /ALLUSERS bitsadmin /INFO dlffmpeg bitsadmin /CANCEL dlffmpeg exit /B |
senha: vaidormirgoogle
download: https://drive.google.com/open?id=1VmogHwfqkKDh7njJVBtnF5f4gHT5GRym
virustotal: 4/55 [kkkkkkkkkkkkkkkkk 4/55???]
https://www.virustotal.com/en/file/a85fae2aebc89d17bcab271899a94109404fe557cd8d971f0a7af9dbef90fda3/analysis/1551695689/
a google bloqueou o zip sem senha... por supor que seria "código protegido", "warez", "pirataria".
Cuidado!!!
[nao tem como um script "vir" com virus, apesar dele poder ser "malicioso", e dentro das maldades fazer download de ferramentas perigosas. e é o caso? certo? só execute código que você consiga escrever!]
* devo ficar sem internet durante todo o carnaval, eventualmente, eu acesso o 3G, mas devo passar o maior tempo desconectado. por favor, faça uso dos comentários para relatar os problemas, e as surpresas, caso ele funcione.
cheers!
Nenhum comentário:
Postar um comentário