1.研究可行性:
<1>针对实时流;
<2>可实现图片水印的控制显示;
2.参考
http://ffmpeg.org/ffmpeg-all.html#overlay-1
ffmpeg提供了overlay滤镜来支持图层覆盖,且第一个输入为"main"视频,第二输入覆盖层。
3.参数:
eof_action
设置当覆盖层读取完毕时,所采取的处理措施,可能值:
repeat
重复最后一帧(默认)
endall
停止
pass
透传"main"视频
eval
设置x,y表达式的运用规则,默认值"frame",可能值如下:
init
只在执行命令时,求值一次;
frame
针对每一个帧,重新求值
shortest
若设置为1,当最短输入终止时,强制输出终止,默认值0
format
设置输出视频格式,默认值yuv420,可能值:
yuv420
yuv422
yuv444
rgb
gbrp
rgb (不推荐使用)
若设置为1,强制filter从RGB色彩空间接收数据,默认0.建议使用format选项替代该选项
repeatlast
若设置为1,在流结束前,强制绘制覆盖帧的最后一帧到main视频。默认值1
x
y
设置覆盖层相对"main"视频的坐标,默认值0.如果表达式无效,将会被设置为一个很大的值,此时覆盖层不会被显示到可见区域。可用于计算它们的值如下:
main_w, W
main_h, H
main视频的宽度和高度
overlay_w, w
overlay_h, h
覆盖输入的宽度和高度
x
y
已经计算好的x和y值。
hsub
vsub
输出格式的垂直和水平色度采样值。如yuv422p的hsub和vsub分别为2和1。
n
帧数量,从0开始
pos
输入帧文件的位置。若未知,值为NAN
t
时间戳,单位s。若未知,值为NAN
注意: n, pos, t只有每帧都进行计算时才有效,当eval设置为’init’它们的值为NAN
"movie='/root/mscore/extern/source/logo/test.png' [logo];[in][logo] overlay=10:10 [out]"
视频转GIF:
ffmpeg -ss 25 -t 10 -i udp://224.2.2.2:8882 -s 320x240 -f gif -r 1 b.gif
ffmpeg -ss 25 -t 10 -i udp://224.2.2.2:8882 -r 1 -s 320x240 -f image2 foo-%03d.jpeg
ffmpeg -f image2 -framerate 5 -i foo-%03d.jpeg c.gif
叠加GIF
ffmpeg -i udp://224.2.2.2:8882 -ignore_loop 0 -i /etc/mscore/mscore_cctv13.gif -filter_complex '[0:0]scale=iw:ih[a];[1:0]scale=iw/4:-1[wm];[a][wm]overlay=x=0:0:shortest=1' -f mpegts udp://224.2.2.2:2000