背景

1、app有类似微信拍摄小视频功能,时长上限8s,视频文件保存在第三方云存储,app直接上传,后端数据库只记录视频的存放地址。

2、最近一次功能迭代,增加了小视频下载功能,小视频有可能在别的社交渠道传播,因此设想给小视频结尾增加平台logo.

方案评审

方案一

服务端统一处理,针对拍摄的视频,从第三方云存储拉取至本地,利用ffmpeg处理水印,再重新上传至第三方云存储(我们平台接入的云存储服务方不能提供在视频结尾增加

水印logo的功能,因此由平台自己处理)

优点:

成功率有保障,基本上服务端ffmpeg增加水印的成功率要高,服务器配置相比手机端要好很多,处理过程更快

缺点:

高峰期产生大量的视频,若服务器投入有限,整个处理周期会被拉长,完成上传带logo的小视频存在一定的延迟。

方案二

客户端在下载视频时增加logo水印。

优点:

分而治之,个人用户级别的视频处理,性能开销均在用户端,不会对服务端造成影响。

缺点:

1、插件兼容性问题,比如安卓必须os在某个特定版本之上才行,ios也无法保障

2、插件过大,差不多十几兆,app文件增长太大

3、安卓机机型太多,部分定制机、山寨机性能参差不齐,部分使用第三方插件性能不理想。

选定方案,方案一

综合考虑后还是先选定了方案一,服务端处理

实现

ffmpeg运行环境搭建

//TODO

增加水印命令

//TODO

遇到的问题

//TODO

利用ffmpeg给小视频结尾增加logo水印的更多相关文章

  1. 利用FFmpeg转压视频的说明

    当我们制作视频的时候,录制完成的视频往往很大,很容易超过50M,上传的时候会很慢.下面将相关技巧说明如下(转载,版权属于原作者所有). 利用FFmpeg转压视频的说明 录制介绍视频时可以用尽可能高的分 ...

  2. 利用Ffmpeg获得flv视频缩略图和视频时间的代码

    问题描述:获得flv视频的缩略图和视频时间长度 谷歌了半天发现可以使用Ffmpeg获得视频的一些信息,先介绍一下FFMEPG 这里简单说一下:FFmpeg是用于录制.转换和流化音频和视频的完整解决方案 ...

  3. EasySwoole+ElasticSearch打造 高性能 小视频服务系统

    EasySwoole+ElasticSearch打造高性能小视频服务 第1章 课程概述 第2章 EasySwoole框架快速上手 第3章 性能测试 第4章 玩转高性能消息队列服务 第5章 小视频服务平 ...

  4. 利用FFmpeg玩转Android视频录制与压缩(二)<转>

    转载出处:http://blog.csdn.net/mabeijianxi/article/details/72983362 预热 时光荏苒,光阴如梭,离上一次吹牛逼已经过去了两三个月,身边很多人的女 ...

  5. 【VS开发】【视频开发】利用ffmpeg+opencv实现画中画

    需求:把两路视频合成一路,即一个画面同时显示两路视频,其中一路缩小成小视频叠在大视频上面,和电视机的画中画效果类似. 思路:用h264编码的视频举例,文件中存储的es流是h264,经过解码成yuv,y ...

  6. 利用FFmpeg生成视频的缩略视频 v8.3

    目前生成视频缩略图的工具大多数是生成静态的图片,为了解决这样的局限性,这 次春节期间搞了个利用 FFMpeg 能生成缩略动态视频的批处理. 把 Make_NxM_videos.bat LED_font ...

  7. 利用FFmpeg生成视频缩略图 2.1.6

    利用FFmpeg生成视频缩略图 1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/build ...

  8. FFMpeg笔记(五) 录制小视频时几个问题解决

    1. YUV数据在使用avfilter scale时在特定的分辨率下UV分量不对 由于是小视频,那么分辨率不需要太高,但是有的视频源是1080p,甚至有的是4K的,所以对视频源进行scale非常有必要 ...

  9. C# 利用ffmpeg 对视频转换系类操作 (1) 基本分析

    最近公司做一个项目,开发一个视频站点.项目需求中有很多视频转换的需求,如:格式转换(flv,Mp4),视频水印,视频截图,视频合成,获取视频的基本信息(时间戳,视频大小等).经过网络的收集资料以及自己 ...

随机推荐

  1. c++构造函数 对象初始化

    最近查看了关于c++构造函数的博客,为了防止关键知识的遗忘,特此记录一些要点,以便于今后的查阅. 如果不主动书写构造函数,c++或默认提供一般构造函数,拷贝构造函数以及复制运算符的操作.一般的构造函数 ...

  2. Designing for iOS: Graphics & Performance

    http://robots.thoughtbot.com/designing-for-ios-graphics-performance  [原文] In the previous article, w ...

  3. jekins 持续集成手记

    1.安装一个干净Ubuntu14.04桌面版本 2.打开http://jenkins-ci.org/ 官网, 选择use jenkins 中, Installing Jenkins on Ubuntu ...

  4. LinuxMint17.1 Rebecca中安装设置输入法

    LinuxMint14使用了几年一直未更新,突然想去更新一下去发现源已经不支持了,所以就直接安装了最新版本. 安装好以后发现还是跟以前一样的毛病,没有中文输入法,直接sudo aptitude ins ...

  5. jdbc mysql写入中文乱码解决

    一. 问题 数据库编码:utf8 mysql> create database dbnameDEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; ...

  6. 转载:ORA-01438: 值大于为此列指定的允许精度

    Number的数据声明如下: 表示        作用        说明Number(p, s)        声明一个定点数        p(precision)为精度,s(scale)表示小数 ...

  7. php判断json对象是否存在的方法

    在实际测试中php读取json数组时 使用简单的 if 或者 array_key_exists 去判断对象是否存在是会报错的,以下是google搜寻的正确判断方法 实际上出现报错只是我对php还不是很 ...

  8. JavaScript面向对象,及面向对象的特点,和如何构造函数

    1.面向对象和面向过程的区别 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了: 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是 ...

  9. MySQL字符串处理函数的几种常见用法

    1.字符串大小写转化: (1).将tbl_student表的user_name字段所有小写字母,替换为大写: update tbl_student set user_name=UPPER(user_n ...

  10. React(JSX语法)-----JSX基本语法

    JSX------HTML tags vs React Components: 1.To render a html tag,just use lower-case tag names in JSX; ...