Corte os últimos 30 segundos das extremidades dos vídeos usando o ffmpeg em um arquivo de lote no Windows

7

Isso é o que eu tenho até agora:

for i in *.mp4; do ffprobe -show_format -i "%i"

// obtém a duração e, de alguma forma, precisa subtrair 30 segundos e casar com esses dois comandos

ffmpeg -ss 0 -i "$i" -t %duration% "${i%.mp4}-cut.mp4

Eu pensei que seria simples, ugh .. por que você não tem -endtrim switch, ffmpeg? ou faz isso? Talvez outra linha de comando assim possa?

    
por Haicim 11.10.2013 / 14:01

1 resposta

4

Poste em nome do OP que resolveu o problema:

_trim.bat :

@echo off
for %%i in (*.mp4) do (
call _trim2.bat "%%i"
)

_trim2.bat :

@echo off
for /f "tokens=*" %%a in ('_ffprobe -show_format -i %1 ^| find "duration"') do set _duration=%%a
set _duration=%_duration:~9%
for /f "delims=. tokens=1*" %%b in ('echo %_duration%') do set /a "_durS=%%b"
for /f "delims=. tokens=2*" %%c in ('echo %_duration%') do set "_durMS=%%c"
rem following line is seconds to cut
set /a "_durS-=30"
set "_newduration=%_durS%.%_durMS%"
set "_output=%~n1"
md _fixed
_ffmpeg -ss 0 -i %1 -t %_newduration% -c copy "_fixed\%_output%.mp4"

o arquivo processado será colocado em . \ _ fixed \ samename.mp4 e será 30 segundos mais curto.

    
por 23.04.2014 / 11:06

Tags