用mplayer从视频中按周期提取帧

时间:2023-03-09 01:38:16
用mplayer从视频中按周期提取帧

使用方法:extract file time step folder

time 设置时间长度

step 设置周期

均以秒(s)为单位

贡献:1. 从视频文件中周期性提取图片;2. Windows下批处理程序的一些技术。

依赖:mplayer

todo: 目前周期最小为1s,可以扩展使频率大于1Hz.

更详细的内容可以参考:

http://blog.****.net/xuyaqun/article/details/6077917

http://blog.****.net/aa846555831/article/details/53400974

http://blog.****.net/yjfkpyu/article/details/3694990

 @echo off

 :: extract frames
rem echo filename: %1
rem echo time: %2 s
rem echo step: %3 s
rem echo folder: %4 if "%4" equ "" (
echo Usage: extract file time step folder
echo file: mplayer can play
echo time unit: s
echo step unit: s
echo folder: snap saved folder
goto :end
) if not exist %4 mkdir %4 set /A length = %2 / %3
echo length: %length% setlocal enabledelayedexpansion set n=0
for /L %%i in (0, %3, %2) do (
:: progress info
set /A n += 1
set /A n = !n! %% 10
if !n! equ 0 (
set /A nth = %%i * 100 / %2
echo !nth! %%
) :: key command
mplayer -ss %%i -noframedrop -nosound -vo png -frames 1 %1 > nul :: save files because mplayer extracts frame in same name
set /A name = %%i / %3
move 00000001.png %4\!name!.png > nul
) :end