ffmpeg提取视频分辨率输出为批处理变量

在使用ffmpeg批处理编码视频时候,如果导入的素材尺寸不一样,得每次输入分辨率很麻烦,

这里提供一个自动提取拖入的视频文件的分辨率的批处理脚本,另存为bat即可,需要文件夹下有ffprobe.exe

原理是通过ffprobe.exe把媒体信息导出到文本,然后从文本里提取指定行数的数据,获得分辨率(宽高)信息(ffprobe.exe是FFMPEG完整包里的一个组件)

实际上,本方法不只是可以提取分辨率(宽高),所有的媒体信息都可以提取,只要指定对应的行数即可(本脚本里第11行是宽,第12行是高)

@echo off
REM 声明采用UTF-8编码
chcp 65001

rem 自动获取视频宽高并把长宽存为变量
rem 拖入视频文件并把视频信息导出到output.txt,需要有ffprobe.exe,这个output.txt会包含媒体的所有信息,不只是宽高,这里只演示宽高

ffprobe -select_streams v -show_entries format=duration,size,bit_rate,filename -show_streams -v quiet -of csv="p=0" -of json -i %~dp1%~nx1 >output.txt 2>&1

rem 对导出的output.txt进行读取,第11行是宽,第12行是高,所以提取第12行
@echo off &setlocal enabledelayedexpansion
title ExtractContent
color 0a
set start=11
set /a stop=start+2
set start2=11
set /a stop2=start2+2
:replay
rem 提取第11行数据获得视频宽
for /f "tokens=1,* delims=:" %%a in ('findstr /n ".*" output.txt ^| findstr /b "\<%start%:"') do (
    set /a start+=1
    if "%stop%"=="!start!" goto end
    set var1=%%b
)
:end
rem 去掉第11行里除了宽的数字外的字符(替换法)
set var1=%var1: =%
set var1=%var1:"width":=%
rem 把宽的信息输出到变量yuankuan
set yuankuan=%var1:,=%

rem 提取第12行数据获得视频高,第12行是高,所以提取第12行
for /f "tokens=1,* delims=:" %%a in ('findstr /n ".*" output.txt ^| findstr /b "\<%start%:"') do (
    set /a start+=1
    if "%stop2%"=="!start2!" goto end
    set var2=%%b
)
:end
rem 去掉第12行里除了宽的数字外的字符(替换法)
set var2=%var2: =%
set var2=%var2:"height":=%
rem 把高的信息输出到变量yuangao
set yuangao=%var2:,=%
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值