《FFmpeg Basics》中文版-21-批处理文件

写在前面

如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑
也可以关注我的简书账户: 张芳涛,我后期会发布更多的音视频以及图像处理方面的文章。

正文

批处理文件的优点

FFmpeg工具通常用于各种任务,不容易记住不同的编解码器的所有参数,过滤器等等。将各种命令组合保存到批处理文件中,优化了工作,并将开发提升到下一个级别。批处理文件是带有.bat扩展名的文本文件,在Windows操作系统上主要用于管理任务。它们包含命令,这些命令是按顺序处理的,可以打印各种消息,请求输入等等。

@echo off
ffmpeg -i %1

将该文本保存到文件测试中。bat并由下一个命令调用,其中filename是媒体文件,我们希望看到它的属性(。命令中的bat扩展是可选的):

test.bat filename or test filename

批处理文件的命令

可以使用命令帮助或帮助|来显示可用的Windows控制台命令。其中一些是特定于批处理文件的。这些和其他命令在表中描述:
基本批处理文件命令

@ 在行开始时使用,然后命令没有响应。例子:@echo off
%n(n是自然数) 在命令行上输入空格分隔的参数的占位符,在批处理文件的名称之后,例如:greeting.bat用两行代码:
@echo off
Good %1, %2
如果用右边这个命令调用:greeting day friends
显示的结果就是:Good day, friends
:label GOTO命令的起始点,更改处理顺序,批处理文件示例:
line 1 ... line 10 (第1 - 10行包含各种命令)
:NewItem
line 12 ... line 16 (第12 - 16行包含各种命令)
GOTO NewItem
当处理流到达第17行时,GOTO命令将它发送回NewItem标签,并在第12行继续运行
CALL 语法:调用[drive][path] filename [batch parameters]
调用另一个批处理文件,并且在它的所有命令都准备好之后,继续处理调用文件的下一行。如果被调用的文件不存在,则会显示一条错误消息
CHOICE 停止处理,让用户选择一个选择,通常是或否
语法:CHOICE [/C[:]choices] [/N] [/S] [/T[:]c,nn] [text]
/C[:]choices 指定允许的key。默认是YN
/N 在提示字符串的末尾 不显示choices和?
/S 把选择键当作区分大小写
/T[:]c,nn 在<nn>秒之后会默认选择到c 文本提示字符串显示
CLS 清除屏幕,控制台输出从顶部继续
ECHO 语法: ECHO [ON | OFF] or ECHO [message]
命令“echo off”在处理过程中停止打印命令,“echo on”,即默认情况下,再次打开它。命令“echo some_text”将在处理过程中打印some_text
FOR 在一组文件中为每个文件运行指定的命令
FOR %%变量 IN(set) DO 命令[命令行设置]
%变量 指定一个可替换的参数,该参数值由该命令使用。
(set)指定一组或多个文件,可以使用通配符,e.g.(.doc)
command(命令行) 指定为每个文件执行的命令。
command-parameters(命令行参数) 指定指定命令的参数或开关。
示例命令显示所有TXT文件(在批量中使用%%f,在cmd命令行以%f形式):
FOR %%F IN (
.txt) DO type %%F
GOTO label 将处理重定向到指定的标签,请参见:标签示例:上面的命令的
IF IF [NOT] ERRORLEVEL 数字命令
IF [NOT] string1==string2命令
IF [NOT] EXIST 文件名命令
NOT 指定只有在条件为假时,DOS才应该执行命令
ERRORLEVEL 如果最后一个程序运行返回的退出码等于或大于指定的数字,则number指定一个真实的条件
command 指定在满足条件时执行的命令
string1==string2 如果指定的文本字符串匹配,则指定一个真实的条件
EXIST 如果指定的文件名存在,则filename指定一个真实的条件
IF 命令指定条件处理
PAUSE 停止处理并显示消息:“按任意键继续…”
REM 语法:REM [命令]
用于添加描述和其他信息,在处理过程中不使用
SHIFT 语法:SHIFT [n] (n是一个自然数)
用于通过命令行移动已编号参数的位置,并在批处理文件中使用%1、%2等。批文件名称shift.bat:
@ECHO OFF
ECHO %1
SHIFT
ECHO %1
现在,当我们开始这个文件的时候,它的结果是:
First
First
START START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]<bt>[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [command/program]
[参数]
为指定的命令启动一个新窗口。对于所有选项的描述,请输入帮助启动

批处理文件的典型用法

  • 便携式设备的视频转换
  • 音频转换从各种格式到MP3文件的MP3播放器
  • 减少在web上使用的帧大小和比特率

    批处理文件用于音频和视频处理任务,这些任务经常重复。例如,我们可以将一个快捷方式放在桌面上的yt2mp3文件。bat位于目录C:\media,其中保存从YouTube下载的视频转换成MP3格式。yt2mp3。bat文件包含下一行:

    成功转换后,ffplay开始播放创建的MP3文件。

音频发生器

ToneGenerator.bat 是生成指定音调和持续时间音调的批处理文件。为了区分同一音高的两个音调,每个音都加入了silence.mp3,,持续时间是0.2秒,如果我们计划加快速度,它可以是0.3秒或更多秒,命令是:

ffmpeg -f lavfi -i aevalsrc=0 -t 0.2 silence.mp3

文件ToneGenerator.bat有以下内容(添加行号以方便解释,并没有出现在ToneGenerator中)。蝙蝠计算机文件):

1    @echo off
2    set /p n=Please enter the note name:
3    set /p f=Please enter the frequency:
4    set /p d=Please enter the duration in seconds:
5    ffmpeg -f lavfi -i aevalsrc=sin(%f%*2*PI*t) -t %d% tone%n%_%d%.mp3
6    copy /b tone%n%%d%.mp3+silence.mp3 tone%n%_%d%.mp3

对特定命令行的解释(如果音调单独使用,可以跳过加入slience这个步骤):

  • 1:在批处理文件处理过程中,命令echo off停止显示命令的内容,@符号也不包含此命令的显示。
  • 2: 命令: set /p variable_name=text创建一个变量,在作业处理期间,显示一行文本并等待输入键的输入结束。这个字符串"Please enter the note name: "显示并在按下Enter之后,将创建一个新的变量n并包含所输入的值。
  • 3: 与第2行类似,创建的是带有输入频率的变量f。
  • 4:类似于第2行,创建的变量d包含在秒内的音调的持续时间。
  • 5: ffmpeg使用lavfi (libavfilter虚拟输入设备)和aevalsrc音频输入设备,通过变量d设定的持续时间来生成由变量f指定的频率的声音。MP3格式的输出文件的名称与注释名称和持续时间相结合。
  • 6: 在生成的文件中添加了一个带有0.2秒长度的短MP3文件,用于通过/b选项的复制命令来区分音调,它指定了二进制模式。最终文件的名称为“tone+ notename +_duration+”.mp3“,以A4音为例,有1秒的时间,它是noteA4_1.mp3。

创建Jingle Bells(歌曲名)

Jingle Bells 是一款非常流行的冬季恋歌,它的副歌只有5个音符,虽然有些持续的时间很长,这张图片显示了这段文字的顺序:

现在我们生成9种不同的音调与前一节中的ToneGenerator.bat不同:

  • E4,频率329.63 Hz,持续时间1秒-文件E_1.mp3。

  • E4,频率329.63 Hz,持续时间2秒-文件E_2.mp3。

  • E4,频率329.63 Hz,持续时间4秒-文件E_4.mp3。

  • G4,频率392.00 Hz,持续时间1秒-文件G_1.mp3。

  • G4,频率392.00 Hz,持续时间2秒-文件G_2.mp3。

  • C4,频率261.63 Hz,持续时间1秒-文件C_1.mp3。

  • D4,频率293.66 Hz,持续时间1秒-文件D_1.mp3。

  • D4,频率293.66 Hz,持续时间2秒-文件D_2.mp3。

  • F4,频率349.23 Hz,持续时间1秒-文件F_1.mp3。
    从文件名中跳过了octave 4。第一行和第二行的音调可以与接下来的两个命令连接在一起,第三个命令连接这两行:

    copy /b E_1.mp3+E_1.mp3+E_2.mp3+E_1.mp3+E_1.mp3+E_2.mp3+E_1.mp3+^ G_1.mp3D+C_1.mp3+D_1.mp3+E_4.mp3 line1.mp3
    
    copy /b F_1.mp3+F_1.mp3+F_1.mp3+F_1.mp3+F_1.mp3+E_1.mp3+E_2.mp3+^ E_1.mp3D+D_1.mp3+D_1.mp3+E_1.mp3+D_2.mp3+G_2.mp3 line2.mp3
    
    copy /b line1.mp3+line2.mp3 refrain.mp3
    

另一种方法是修改ToneGenerator.bat文件用来生成编号的文件名,然后立即加入一个批处理文件。下面是修正版的ToneGenerator.bat文件,我们可以用它来生成24个MP3文件,文件名是tone01。mp3,tone02。mp3,…tone24.mp3:

@echo off
echo If the number of notes is over 9, start numbering with 0.
set /p n=Please enter the note number:
set /p f=Please enter the frequency:
set /p d=Please enter the duration in seconds:
ffmpeg -f lavfi -i aevalsrc=sin(%f%*2*PI*t) -t %d% %n%.mp3
copy /b %n%.mp3+silence.mp3 tone%n%.mp3

现在我们可以通过FileJoiner连接所有的24个MP3文件。bat批文件与内容:

@echo off
copy /y nul output >nul
set /p t=Please enter the file type:
for %%f in (*.%t%) do copy /b output+%%f output
ren output output.%t%
  • 第2行创建一个空文件,作为初始文件,从目录复制第一个文件。
  • 第3行请求文件扩展名并将其存储在t变量中,将加入这个扩展的文件。
  • 第4行使用for循环将文件按顺序复制到文件输出。
  • 第5行增加了文件输出的扩展名。

两种方法产生的折射率都比原曲慢,atempo滤波器可以用来调节速度:

ffmpeg -i output.mp3 -af atempo=2 refrain.mp3

atempo过滤器可以应用更多的时间,细节在章节的时间操作中。

简化转换

为Codecs编写的章节介绍了如何使用预设置文件简化转换。如果您经常使用各种预置转换媒体,那么要求特定预置的批处理文件可能有用,一个名为Conversion.bat的简单批处理文件示例如下



请参阅前面的章节来描述第1 - 7行

  • 第8行使用IF构造来选择带有或没有预设置文件的转换,如果变量p为0,则在标签NOPRESET由于GOTO命令指示后继续处理。
  • 如果指定了预置文件,第9行将转换输入。
  • 第10行终止处理,因此跳过第12行中的转换。
  • 第12行使用可选的附加参数将输入转换为没有预设置的文件。

文件转换。bat可以在许多方面进行修改,例如,包括过滤、更多的输入等等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容

  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 8,077评论 1 19
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,710评论 0 11
  • 一、基础语法: 1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文...
    蒋_Sir阅读 9,137评论 1 4
  • 批处理符号简介 回显屏蔽 @ 重定向1 >与>> 重定向2 < 管道符号 | 转义符 ^ 逻辑命令符包括:&、&&...
    wyude阅读 2,973评论 2 5
  • 上古有大椿者,以八千岁为春,八千岁为秋。 01 如果说看完《大鱼海棠》后,我有什么感觉 那么大概只有一个词可以形容...
    冰糖陈皮阅读 571评论 10 15