编程

当前位置:永利皇宫463登录 > 编程 > 触发OSS来拍卖图片加水印和分寸裁剪

触发OSS来拍卖图片加水印和分寸裁剪

来源:http://www.makebuLuo.com 作者:永利皇宫463登录 时间:2019-09-19 22:54

1、对图片的处理需要编写相关代码

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

业务场景描述

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

用户仅仅需要在Function Compute上设置触发器+函数,例如,监控某个Bucket下的PutObject的事件,当用户把图片上传到OSS的某个Bucket,

多段合成的优化

3、设置OSS的Trigger

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!

老的框架:

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

这个示例中选在线编辑,输入编写代码即可。

滚动字幕实现

整体架构图

视频合成

在Web应用中,有很多在类型,其中针对有一种是针对电商、图片处理网站中当客户上传到OSS的图片进行大小裁剪或者批量加上防盗水印,通常的做法是搭建一个在线服务器并部署WEB应用来进行处理,程序需要按照一定规则来定时来触发事件,这样的情况下,会有3个明显的工作需要额外来考虑:

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

图片 1

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

整个业务处理流程

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

整个业务执行结束,完成了完整的一个例子。


1、需要搭建Web应用服务器(不管有没有图片处理,空置率会比较高)

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

图片 2

加文字批处理文件如下

2、需要编写相关OSS代码来处理这块事情(需要专门维护一套运行处理代码)

添加动态gif

图片 3

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

总结下来需要用户关注内容点:

ffmpeg加文字水印

基于新框架的内容,我把相关代码按块来分解,按照两块内容来处理,控制台上的操作和Fcli命令行工具的使用

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

源码实例

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

首先来对比一下新老架构有什么不同,老架构需要考虑三个地方的处理,例如处理OSS图片的内容、触发条件的处理、以及搭建应用服务器等。

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

图片 4

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

3、需要考虑图片处理的及时性

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

2、在OSS上把转码后的图片转移到新的Bucket,需要维护相关代码

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

2、新增函数计算

@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.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

图片 5

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

通过控制台的操作

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

在这个选项页里,我们选中华东2的Bucket和触发事件,触发事件目前控制台仅支持通过OSS进行触发,但是通过API或者SDK可以编写自行触发的事件。在这里,我列举控制台的方式来处理。

@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.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

图片 6

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

阿里云在4月26日推出Function Compute后,很多客户踊跃申请试用,基于这个产品的目前的试用场景,会汇总多个场景逐步从浅入深来完成一系列主题讲解。

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      

图片 7

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

设置到这个地方,肯定有人会跑出来说,为什么不直接用OSS本身的URL进行resize呀,你考虑一点都没错,但是当我想把resize后的图片再存下来,怎么搞?或者我是不同Bucket下的,怎么搞?再或者,我想跨region保存,怎么搞?涉及到一系列问题,都交给OSS的SDK来处理,就要写大量代码。哪么通过FC,在一个函数中都可以自定义搞定,这样灵活方便的事情,显然不用再搭建执行环境来处理,交给FC即可。

左右滚动的字幕: 
./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、开通service

3、需要考虑图片处理的及时性如何保障(要考虑并发和定时器的执行方法)

代码段:

新建函数计算里,需要选择运行环境,目前是Nodejs4.4,后续会推出Python、Java环境等。

马上触发后续的函数代码,函数代码的无非就是把图片进行处理,并把图片转移到新的bucket中,整个过程,不需要搭建Web服务器,不需要写触发条件,

图片 8

也无需关注整个服务状态如何。纯粹的事件触发后续程序,详见下图分解,仅仅一处蓝色圆圈就是需要编写的代码。

以上问题,我们仅仅需要通过阿里云的函数计算产品来设置简单事件触发器和编写一些简单OSS的程序就能完美解决上述问题,下面让我们来看看这个任务的如何分解。

图片 9

4、查看执行结果

蓝色标注是老架构中需要关注的,程序需要一种机制对上传来的图片进行设置,例如从OSS的某个目录进行定期扫描,并批量发送到图片进行加水印,大小变化等,并把处理过的图片,用户需要搭建WEB应用,需要编写相关OSS的处理,还需要有个机制能定期做程序处理。

如下图,需要考虑蓝色部分,图片转码需要编写相关代码进行处理。

本文由永利皇宫463登录发布于编程,转载请注明出处:触发OSS来拍卖图片加水印和分寸裁剪

关键词:

上一篇:iOS事件传递和响应,iOS事件的传递和拍卖

下一篇:没有了