Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

This is what I have so far:

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

// get duration, then need to somehow subtract 30 seconds, and marry these two commands

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

I thought it would be simple, ugh.. why you no have -endtrim switch, ffmpeg? or does it? Maybe another command line one like this can?

share|improve this question
    
If you have found a solution to your question, please post it as an answer. –  Ambo100 Apr 21 at 19:38

1 Answer 1

Post on behalf of the OP who solved the problem themselves:

_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"

the processed filed will be put in .\_fixed\samename.mp4 and will all be 30 seconds shorter.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.