分类 Note 下的文章

ffmpeg视频文件批量转换脚本

最近在制作mp4文件时,前后使用了魔影工厂、狸窝、格式工厂进行转码,但是发现转换过的视频经常有黑屏的现象,文件体积也比较大,自由度也比较低。最终发现了 ffmpeg 很好很强大,不但处理速度快,可自定义参数,处理过的视频体积小的很多,而且还很清晰。唯一美中不足的是这个软件的转换需要在命令行模式下完成。一个一个的复制、粘贴到cmd窗口,文件多了就吃不消了,这时人的惰性发挥了作用,于是就有了批量转换脚本,简单的一句话,几百个视频文件就哗啦哗啦的出来了。以 flv 到 mp4 文件为例:

for %%a in (*.flv) do ffmpeg.exe -threads 4 -i %%~na.flv -ab 32 -ar 22050 -vcodec libx264 -qscale 6 -r 25 -s 720x480 -flags +loop -crf 24 -bt 256k -vol 200 -keyint_min 6 -vf yadif %%~na.mp4

注意:文件名中如果有空格,需要加引号

常用参数:

-threads 指定用于编码的线程
-i 指定输入文件
-ab 设置音频码率
-ar 设置音频采样率
-vcodec 视频流编码方式
-qscale 使用固定的视频量化标度(VBR)
-r 视频流帧数(一般说来PAL制式通常用25,NTSC制式通常用29)
-s 视频分辨率
-flags 环路滤波器 (-loop禁用 +loop 启用)
-crf 恒定质量模式(也称为恒定ratefactor)
-bt 设置比特率容许的误差
-keyint_min 设置关键帧的间隔
-vol 设定音量
-vf 指定滤镜 (等同 -filter:v)

批量替换文件或文件夹名称中的字符串以重命名

@echo off
set batchName=批量重命名-替换文件或者文件夹中的字符串
title %batchName%
rem [head========================================================head]
rem 名称:批量重命名
rem 概要:批量替换文件或者文件夹中的字符串
rem 用法:
rem 1、将需要批量重命名的文件所在的那个文件夹拖到该处理上
rem 2、按提示输入要替换的字符串,然后按回车。
rem 3、按提示输入想要替换为的字符串,然后按回车。
rem 
rem 考虑到多次操作,该批处理加了循环操作处理,可进行多次替换,而不
rem 需要多次拖文件夹。
:main
set /a count=%count%+1
set /p oldStr=[请输入想要替换的字符串]
set /p newStr=[请输替换后的字符串]
for /f "tokens=*" %%a in (
'dir "%~1" /a /b'
) do (
setlocal enabledelayedexpansion
set "newFileName=%%~nxa"
set "newFileName=!newFileName:%oldStr%=%newStr%!"
ren "%~1\%%~nxa" "!newFileName!"
endlocal
)
echo.
echo 第 %count% 次替换已完成
echo.
goto :main
exit

将mp4视频元数据信息放在第一帧

需要软件:qt-faststart
解压得到qt-faststart.exe
放到 d:/mp4/ 目录下面
运行命令:

qt-faststart.exe d:/1.mp4 d:/2.mp4

最后出来的这个2.mp4就是成功的了。可以边下载边播放

附上一个批处理,实现将当前目录下所有的mp4文件自动处理

for %%a in (*.mp4) do qt-faststart.exe %%~na.mp4 %%~naz.mp4

处理过的视频后面统计增加一个字母z

给flv视频添加关键帧

yamdi官方下载地址
http://sourceforge.net/projects/yamdi/files/latest/download

下解下来解压得到一个单独的文件 yamdi.exe

第一步,把这个文件保存在一个安全的空间很大的地方(因为这地方要放视频文件,所以要有足够的空间)

第二步,运行这个文件,运行是看到一个黑框闪一下就关了,这就可以了

第三步,找一个flv文件放在和yamdi.exe同目录下

第四步,在运行里输入cmd然后回车打开命令提示符

第五步,执行下面命令就能成功的把1.flv加上关键帧,生成一个新的2.flv,新的flv就是包含关键帧的了

yamdi -i 1.flv -o 2.flv

附上一个批处理,以实现将当前目录下所有flv文件自动处理并在处理后的文件名中增加字母z

for %%a in (*.flv) do yamdi -i %%~na.flv -o %%~naz.flv