ffmpeg--overlay,delogo,drawtext,subtitle,utils

水印在应用开发中还是挺常用的,现总结如下:

 

水印图片位置overlay值
左上角10:10
右上角main_w-overlay_w-10:10
左下角10:main_h-overlay_h-10
右下角main_w-overlay_w-10 : main_h-overlay_h-10

overlay方式的水印

用in.avi作为输入视频,out.avi作为输出视频,pp.png表示要添加的水印图片,是png格式的,调整水印大小(scale = 50:50)和位置(overlay=10:10)

ffmpeg -i 7.mp4   -i 1.png   -filter_complex '[1:v]scale=50:50[s];[0:v][s]overlay=10:10'   -vcodec h264 a.mp4

简单例子:ffmpeg -i 1.mp4  -i 1.png  -vcodec libx264-an -filter_complex "overlay=x=100:y=0" -s 320x240 output.mp4

位置说明:

使用overlay添加透明水印时,位置参数的位置在 -vfilters里面的 overlay= 的后面的前两个参数,参数之间是冒号分隔的。第一个参数是横向的间距,第二个是纵向的间距。可以结合与视频和水印相关的四个值来设置,这四个值分别是:mainW表示主视频宽度,mainH表示主视频高度,overlayW表示水印宽度,overlayH表示水印高度。这些值加在overlay参数中,ffmpeg将自动识别。

也就是说要让水印

显示在视频的左上角overlay参数为overlay=0:0  例:ffmpeg  -i  pair.mp4 -i  logo.png  -filter_complex  overlay  pair1.mp4

显示在右上角为 overlay= main_w-overlay_w:0   例:ffmpeg  -i  pair.mp4  -i  logo.png -filter_complex  overlay=W-w  pair2.mp4
显示在右下角为 overlay=main_w-overlay_w:main_h-overlay_h  例:ffmpeg -i  pair.mp4  -i  logo.png  -filter_complex overlay=W-w:H-h  pair4.mp4
显示在左下角为 overlay=0: main_h-overlay_h   例:ffmpeg  -i  pair.mp4  -i  logo.png  -filter_complex overlay=H-h  pair3.mp4

上面的0可以改为5,或10像素,以便多留出一些空白。

movie方式的水印

Top left corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png, scale=200x200 [watermark];[in][watermark] overlay=10:10 [out]" outputvideo.flv
Top right corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark];[in][watermark] overlay=main_w-overlay_w-10:10 [out]" outputvideo.flv
Bottom left corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark];[in][watermark] overlay=10:main_h-overlay_h-10 [out]" outputvideo.flv
Bottom right corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark];[in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]"outputvideo.flv

例子

ffmpeg -i yfx.mp4 -vf "movie=1.png [watermark];[in][watermark] overlay=10:10 [out]" outputvideo.mp4

PNG图片必须含有alpha通道。Overlay过滤器是根据alpha通道来进行复盖的。所以,你想要透明效果时,须先制做一张透明的PNG图片。

加水印转码

ffmpeg -y -i url  -acodec copy   -vf "movie=2.png [watermark]; [in][watermark]overlay=main_w-overlay_w-0:0[out]"  -f hls -hls_time 2 -hls_list_size 0   a.m3u8

1 加水印与多字幕

背景图拉伸

/usr/local/ffmpeg/bin/ffmpeg -i concat:"1.ts" -i 1.png  -vcodec libx264 -g 25 -bf 0 -b:v 1300k -acodec copy -filter_complex
scale='w=1280:h=720',overlay=x=330:y=260,"drawtext=fontfile=/usr/share/fonts/chinese/TrueType/simhei.ttf:text=天
浪:x=635:y=302:fontsize=40:fontcolor=#333333@1.0:shadowy=0","drawtext=fontfile=/usr/share/fonts/chinese/TrueType/simhei.ttf:text=【准备服装设计】才吃饭:x=635:y=378:fontsize=32:fontcolor=#666666@1.0:shadowy=0" a.ts

背景图不拉伸
/usr/local/ffmpeg/bin/ffmpeg -i concat:"1.ts" -i 1.png  -vcodec libx264 -g 25 -bf 0 -b:v 1300k -acodec copy -filter_complex "overlay=10:10,drawtext=fontfile=/usr/share/fonts/chinese/TrueType/simhei.ttf:text=天浪:x=200:y=100:fontsize=40:fontcolor=#333333@1.0:shadowy=0","drawtext=fontfile=/usr/share/fonts/chinese/TrueType/simhei.ttf:text=【准备服装设计】才吃饭:x=200:y=200:fontsize=32:fontcolor=#666666@1.0:shadowy=0" a.ts

合并音频

ffmpeg -i 3hk.mp4  -i cu.aac  -filter_complex amix=inputs=2:duration=first:dropout_transition=2 a.mp4

加字幕

指定字体,例子如下:

ffmpeg -i o.mp4 -vf "subtitles=st.srt:force_style='FontName=Microsoft YaHei'" out.mp4

字幕+PAD

ffmpeg -i /data/86435/86435.file   -i /data/watermark/86435/20171226105015.png   -filter_complex "[0:v]scale=270:480,pad=640:480:185:0:black[bg];[1:v]scale=80:14[vv];[bg][vv]overlay=main_w-overlay_w-30:15"   -y -c:v libx264 -c:a libfaac -r 25 -g 25 -b:v 700k -maxrate 1050k -bufsize 1050k -ab 64k -keyint_min 25 -sc_threshold 0 -f hls -hls_time 10 -hls_list_size 2048 -pix_fmt yuv420p  1.m3u8
 

水印+字幕

ffmpeg -i 3.mp4  -i 1.png   -filter_complex "overlay=x=30:y=60,subtitles=Vtt:force_style='FontName=Microsoft YaHei'"   1.mp4

 

模糊水印

删除logo

语法:-vf delogo=x:y:w:h[:t[:show]]

x:y 离左上角的坐标

w:h  logo的宽和高

t: 矩形边缘的厚度默认值4   (set delogo area band size,其实是内矩形到外矩形的距离,设置的这个模糊条带可以起到过渡作用,还可以了解到,条带区域的像素会被用来插值运算。参数 band 的值不宜设置过大。)

show:若设置为1有一个绿色的矩形,默认值0.

ffplay -i jidu.mp4 -vf delogo=50:51:60:60:100:0

依次是  左上X坐标,左上Y坐标,宽,高,set delogo area band size, 是否加框。
例子:ffmpeg -i 1.mp4  -vf delogo=40:25:100:30:10:1  a.mp4
 

subtitle

字幕

第一种是外挂字幕(软字幕),视频文件和字幕文件分离。当播放某视频文件时,会自动载入相同文件夹下同名的字幕文件,当然也可以用播放器(如:VLC media player)手动载入字幕(不要求字幕文件和视频文件同名并在相同文件夹下,可任意载入)。
第二种是将字幕封装到容器中,就是所谓的字幕流,和视频流、音频流同等地位。值得说明的是,并非所有的容器都支持字幕流,先进的 MKV 是支持的,MP4 目前我只知道支持苹果的 MOV text。
第三种是内嵌字幕(硬字幕),利用 video filter(subtitles、ass、甚至是 overlay)将字幕文件烧进视频流中,就像水印一样。

首先需要科普下。vob,mkv等格式文件以流的形式存储字幕,而mp4不支持这种方式。如果希望生成带字幕的mp4文件,只能将字幕“烧录”到视频中。 也就是说我们需要将字幕流与视频流进行合成。最终只留下视频流。这样肯定会对原始的视频的画质造成一定影响。

ffmpeg -i video.avi -vf "ass=subtitle.ass"out.avi

ffmpeg -i video.avi -vf subtitles=st.srtout.avi

指定字体  ffmpeg -i o.mp4 -vf "subtitles=st.srt:force_style='FontName=Microsoft YaHei'" out.mp4

添加idx/sub字幕 ffmpeg -i o.mp4 -i BareWitness_2002_He_CN_2886841.sub -i BareWitness_2002_He_CN_2886841.idx -filter_complex "[0:v][2:s]overlay" -vcodec h264  -acodec aac  the_equalizer-captioned2.mp4

加秒表时间

ffmpeg -i rtmp://10.80.3.17:1935/live/1 -vf "drawtext=fontfile=/usr/share/fonts/chinese/TrueType/simhei.ttf: text='fuck': timecode='09\:57\:00\:00': r=25: \x=(w-tw)/1.5: y=h-(20*lh):fontcolor=white: box=1: boxcolor=0x00000000@1" -vcodec h264    -y out.wmv

drawtext

间隔出现文字

ffmpeg  -loglevel  verbose  -i 1.mp4 -filter_complex  "drawtext=fontfile=/usr/share/fonts/chinese/TrueType/simhei.ttf:text=亦非云:x=200:y=100:fontsize=40:fontcolor=#333333@1.0:shadowy=0:x=100:y=x/dar:enable='between(t,3,5)'"  -c:a copy  out.mp4    -y

:enable='between(t,3,5)'    可以处理开始时间,结束时间 ;shadowy是字跟阴影的距离;@1.0是透明度;dar是固定值,- setdar='dar=16/9' 。

每隔3秒出现水印

ffmpeg -i t.mp4 -vf "movie=a.png [watermark]; [in][watermark] overlay=10:10:enable=lt(mod(t\,3)\,1) [out]" -vcodec h264 -c:a copy outputvideo1.mp4

更强的逻辑见:http://www.ffmpeg.org/ffmpeg-utils.html

 

 

 

 

 

 

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山西茄子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值