ffmpeg学习心得之一键处理视频图片合成加图片水印文字水印裁剪
简书链接:ffmpeg学习心得之一键处理视频图片合成加图片水印文字水印裁剪
文章字数:1406,阅读全文大约需要5分钟
学了一个晚上,下面是我写的批处理
window命令行批处理直接拖文件夹或者拖动视频或者拖动音频可一键生成mp4.或者批量生成图片,或者生成gif
https://download.csdn.net/download/u010042660/10282760
1 | 2018/03/12 20:27 369 去掉音频.bat |
官方可执行文件包:
https://ffmpeg.zeranoe.com/builds/
文档
http://ffmpeg.org/ffmpeg.html
选择window版本即可 建议配置环境变量,不然我这批处理要放到和ffmpeg文件在同一个地方..
我下载的是ffmpeg-20180312-939440a-win64-static文件包
ffmpeg加图片水印
1 | 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加文字水印
1 | ffmpeg -i %file% -vf "drawtext=fontfile=test.ttf:text='情随事迁666':x=0:y=0:fontsize=24:fontcolor=yellow:shadowy=2" -y %out% |
加文字批处理文件如下
1 | @echo off |
探索:好像必须设置字体,不然各种错误,那么安卓系统就蛋疼了,如何使用系统字体并且不会受权限影响呢???
window尝试使用
1 | ffmpeg -i %file% -vf "drawtext=text='情随事迁666':x=0:y=0:fontsize=24:fontcolor=yellow:shadowy=2" -y %out% |
1 | Cannot find a valid font for the family Sans |
Failed to inject frame into filter network: No such file or directory
参考
具体参数详情请看https://ffmpeg.org/ffmpeg-filters.html
`
添加动态gif
1 | ffmpeg -y -i %file% -ignore_loop 0 -i test.gif -ss 00 -t 5000 -filter_complex overlay=0:0:1 %out% |
1 | ```ss``` 开始的秒 |
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
1 | 视频合成 |
ffmpeg -i “concat:input1.mpg|input2.mpg|input3.mpg” -c copy outputMovie.mpg
1 | 多段合成的优化 |
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
1 | 具体参考 |
@echo off
::作者情随事迁 qssq666@foxmail.com 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.mp40,-4%_crop.mp4
set scaleout=%file:
) 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
1 | 滚动字幕实现 |
左右滚动的字幕:
./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
1 | 分离裸视频流264 |
fmpeg -i test.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 test.264
更多链接
https://blog.csdn.net/weiyuefei/article/details/51678582
https://www.cnblogs.com/AllenChou/p/7048528.html