这是我到目前为止:
for i in *.mp4; do ffprobe -show_format -i "%i"
Run Code Online (Sandbox Code Playgroud)
// 获取持续时间,然后需要以某种方式减去 30 秒,并将这两个命令结合起来
ffmpeg -ss 0 -i "$i" -t %duration% "${i%.mp4}-cut.mp4
Run Code Online (Sandbox Code Playgroud)
我认为这很简单,呃……为什么你没有-endtrim开关,ffmpeg?还是呢?也许另一个像这样的命令行可以?
代表自己解决问题的 OP 发帖:
_trim.bat:
@echo off
for %%i in (*.mp4) do (
call _trim2.bat "%%i"
)
Run Code Online (Sandbox Code Playgroud)
_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"
Run Code Online (Sandbox Code Playgroud)
处理后的文件将放在.\_fixed\samename.mp4 中,并且都将缩短 30 秒。
| 归档时间: |
|
| 查看次数: |
6035 次 |
| 最近记录: |