|
本帖最后由 独孤求败 于 2024-1-5 18:25 编辑
df原版的视频提取转换为图档脚本
是采用每一秒提取几张图像
(默认 0 代表全部提取,输入2则一秒钟提取两张)
我思来想去,这样不对劲,那60秒的视频*2=120张
我用 ffmpeg 语法写了采取平均间格取样
这样极大化减轻你不需要的重复帧数图像
仅适用于路径 \workspace\data_src.mp4 视频
有能力的话,自行修改代码的路径及视频档名
以下代码,自行复制到记事本,另存为 .bat 脚本,储存在DF工作目录即可
@echo off
set rr="HKCU\Console\%%SystemRoot%%_system32_cmd.exe"
reg delete %rr% /f>nul
reg add %rr% /v "WindowPosition" /t REG_DWORD /d 0x00010001 /f>nul
mode con cols=85 lines=60
REM 以上四排是将 cmd 视窗固定在萤幕左上角
CLS
@echo.
@echo.
@echo.
@echo. 说明:这是间格的提取视频中转为图像的帧数
@echo. 假如你输入2,则代表视频中,每间格2帧只抽取一张图像
@echo. 意思就是你只会平均抽取到原来视频帧数的一半,即百分之50
@echo. 假如你输入4,则每4帧取一个图像,即原帧数的百分之25
@echo.
@echo.
@echo. 提取全部,那么请输入 1 ,则不进行间格提取
@echo.
@echo.
@echo.
set /p aa=. 请输入视频要提取的间格图像帧数?→
@echo.
@echo.
@echo.
@echo. 你输入的视频要提取图像间格值为→ %aa%
@echo.
@echo.
@echo.
pause
call _internal\setenv.bat
ffmpeg -i ".\workspace\data_src.mp4" -vf "select=(gte(n\,%aa%))*not(mod(n\,%aa%))" -vsync 0 ".\workspace\DATA_src\%%6d.png"
REM 若要输出成 jpg 格式,自行将上面这一行最后的 png 改为 jpg
pause
假如你真的很懒 点我下载
密码:7mn6
有兴趣的朋友想进阶学习,各参数说明:
-i 输入文件,这里指的就是视频文件。
-vf 一个命令行,表示过滤图形的描述,选择过滤器select会选择帧进行输出。
-y 表示无需询问,直接覆盖输出文件(如果有原文件的话)
-vsync 0 每一帧从解码器到编码器,时间戳保持不变。
not(mode(n\, K))是指每隔几帧输出一帧。
|
评分
-
参与人数 1 | 金钱 +5 |
贡献 +20 |
符石 +20 |
收起
理由
|
老枪
| + 5 |
+ 20 |
+ 20 |
实用小工具又增加了! |
查看全部评分
Zhatv换脸论坛免责声明
全站默认解压密码:zhatv.cn
【Zhatv】论坛里的文章仅代表作者本人的观点,与本网站立场无关。
所有文章、内容、信息、资料,都不保证其准确性、完整性、有效性、时效性,请依据情况自身做出判断。
因阅读本站内容而被误导等其他因素所造成的损失责任自负,【Zhatv】不承担任何责任。
|