ffmpeg学习心得之一键处理视频图片合成加图片水印文字水印裁剪

学了一个晚上,下面是我写的批处理


window命令行批处理直接拖文件夹或者拖动视频或者拖动音频可一键生成mp4.或者批量生成图片,或者生成gif

https://download.csdn.net/download/u010042660/10282760

2018/03/12  20:27               369 去掉音频.bat
2018/03/12  20:35               653 去掉音频姿势1 - 副本.bat
2018/03/12  20:35               653 去掉音频姿势1.bat
2018/03/12  20:58               306 命令提示.bat
2018/03/12  21:50               407 将文件夹image-5位数.jpeg图片转换为视频.bat
2018/03/12  21:56               465 将文件夹image-5位数.jpeg图片转换为视频每秒8帧.bat
2018/03/12  22:02               717 将文件夹image-5位数.jpeg图片转换为视频每秒8帧指定码率200清晰度.bat
2018/03/12  21:14               444 
                            帧视频批量转换jpeg所有慎用.bat
2018/03/12  20:26               400 截取视频前15秒.bat
2018/03/12  22:41               498 拖拽文件夹图片和test.mp3合成为mp4.bat
2018/03/12  20:24               403 生成30帧转gif.bat
2018/03/12  21:03               391 视频中截帧变jpg指定分辨率.bat
2018/03/12  21:19               541 视频批量转换jpeg15秒开始抽取15帧.bat
2018/03/12  21:23               583 视频批量转换jpeg只抽取5秒从5秒开始-5张图.bat
2018/03/12  20:55               420 视频提取gif指定分辨率9秒还不错.bat
2018/03/12  20:53               521 视频文件转提取前20秒.bat
2018/03/12  21:34               735 调整视频分辨率Linux.bat
2018/03/12  22:24               732 音频图片test.jpg合并为新的视频.bat      

官方可执行文件包:
https://ffmpeg.zeranoe.com/builds/
文档
http://ffmpeg.org/ffmpeg.html
选择window版本即可 建议配置环境变量,不然我这批处理要放到和ffmpeg文件在同一个地方..

我下载的是ffmpeg-20180312-939440a-win64-static文件包
ffmpeg加图片水印

ffmpeg  -i video.mp4   -i test.png -c copy  -filter_complex overlay=0:0 -y xx.mp4

之前测试,输出之后竟然视频卡在第一帧,郁闷了 原来是overlay=0:0后面加了一个:1的原因,不需要填写,我还以为设置透明度支持的呢.实际上就这样就可以
0:0代表x,和y参数.

ffmpeg加文字水印

ffmpeg  -i %file%   -vf "drawtext=fontfile=test.ttf:text='情随事迁666':x=0:y=0:fontsize=24:fontcolor=yellow:shadowy=2"   -y %out%

加文字批处理文件如下

@echo off
::作者情随事迁  [email protected]  http://github.com/qssq

cls
:start
set file=%1
if "%file%"=="" echo 没有文件&pause&goto end
echo 正在对%file%进行处理
echo %file%|findstr ".mp4" >nul
if %errorlevel% equ 0 (
set out=%file:~0,-4%_new.mp4
) else (v
set out=new_%file%.mp4
)
echo 输出目录%out%
::-vcodec copy 
ffmpeg  -i %file%   -vf "drawtext=fontfile=test.ttf:text='情随事迁666':x=0:y=0:fontsize=24:fontcolor=yellow:shadowy=2"   -y %out%
pause
:end

探索:好像必须设置字体,不然各种错误,那么安卓系统就蛋疼了,如何使用系统字体并且不会受权限影响呢???
window尝试使用

ffmpeg  -i %file%   -vf "drawtext=text='情随事迁666':x=0:y=0:fontsize=24:fontcolor=yellow:shadowy=2"   -y %out%


Cannot find a valid font for the family Sans
[AVFilterGraph @ 000002417b436500] Error initializing filter 'drawtext' with args 'text=鎯呴殢浜嬭縼666:x=0:y=0:fontsize=24:fontcolor=yellow:shadowy=2'
Error reinitializing filters!

Failed to inject frame into filter network: No such file or directory
参考
具体参数详情请看https://ffmpeg.org/ffmpeg-filters.html
`

添加动态gif

ffmpeg -y -i %file% -ignore_loop 0 -i test.gif -ss 00  -t 5000  -filter_complex overlay=0:0:1 %out%

ignore_loop 是否循环添加默认为帧
ss 开始的秒
t总时长
overlay=0:0:1 x,y,是否支持透明通道 1表示支持
添加图片文字水印一起添加提升效率
网上找到了文字和图片一起添加的,但是结果很不理想 估计是推荐转换为ts然后批量合并.

缩放gif 下面括号的内容可以不删除,语法照样支持的.

ffmpeg -y -i movie.mkv -ignore_loop 0 -i movieGif.gif -ss 0 -t 100 -filter_complex '[0:0]scale=iw:ih[firstInput]; [1:0]scale=iw/4:ih/4[secondInput]; [firstInput][secondInput]overlay=0:0:1' movieScaleGif.mp4

视频合成

ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy outputMovie.mpg

多段合成的优化

ffmpeg -i input1 -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts
ffmpeg -i input2 -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts
ffmpeg -i input3 -c copy -bsf:v h264_mp4toannexb -f mpegts input3.ts
ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart output

具体参考
http://blog.csdn.net/doublefi123/article/details/47276739

裁剪和缩放实现视频海报区域

@echo off
::作者情随事迁  [email protected]  http://github.com/qssq
cls
:start

set file=%1
if "%file%"=="" echo 没有文件&pause&goto end
echo 正在对%file%进行处理
echo %file%|findstr ".mp4" >nul

if %errorlevel% equ 0 (
set out=%file:~0,-4%_new.mp4
set scaleout=%file:~0,-4%_crop.mp4
) else (
set scaleout=%file:~0,-4%_crop.mp4
set out=new_%file%.mp4

)
set width=150
set height=266
echo 输出目录%out%
::先缩放各位知道同时进行绘制图片和文字 以及同时缩放并裁剪 一条命令能搞定的朋友请指导,我尝试是不行的,会提示不能这样操作
ffmpeg -y -i %file%  -vf scale=%width%:%height% %scaleout%
ffmpeg -y -i %scaleout%  -vf crop=%width%:%height% %out%
pause
:end

滚动字幕实现

左右滚动的字幕: 
./ffmpeg -i hello.mp4 -b:v 500K -vf drawtext=”fontfile=mpp.ttf:fontcolor=0xaaff00:fontsize=18:shadowy=0:\x=’if(gte(t,2), (main_w-mod(t*50,main_w)), NAN)’:y=(main_h-line_h-10):text=’关注广州小程,提升专业技能。’” hello.mp4
固定位置的字幕(这里加了两行): 
./ffmpeg -i ~/Desktop/hello.mp4 -b:v 500K -vf “drawtext=fontfile=/Library/Fonts/华文黑体.ttf:fontcolor=yellow:fontsize=20:shadowy=0:x=(w-tw)/2-30:y=(main_h-line_h-50):text=”qssqqqqqq”,drawtext=fontfile=mpp.ttf:fontcolor=0xaaff00:fontsize=18:shadowy=0:x=(w-tw)/2-30:y=(main_h-line_h-20):text=’test’” hello1.mp4

你可能感兴趣的:(ffmpeg学习心得之一键处理视频图片合成加图片水印文字水印裁剪)