背景

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. WebStrom 10 注册码(转)

    webStorm : UserName:William ===== LICENSE BEGIN ===== 45550-12042010 00001SzFN0n1bPII7FnAxnt0DDOPJA ...

  2. 后缀名“.dll .obj .lib”和“ .so .o .a”文件的区别含义

    (1) .dll .obj .lib使用在windows平台下.        .dll:动态链接库,作为共享函数库的可执行文件.        .obj:目标文件,相当于源代码对应的二进制文件,未经 ...

  3. (zhuan)Python 虚拟环境:Virtualenv

    Python 虚拟环境:Virtualenv zhuanzi: http://liuzhijun.iteye.com/blog/1872241 virtualenv virtualenv用于创建独立的 ...

  4. Objective C运行时(runtime)

    #import <objc/runtime.h> void setBeingRemoved(id __self, SEL _cmd) { NSLog(@"------------ ...

  5. STM32启动代码分析 IAR 比较好

    stm32启动代码分析 (2012-06-12 09:43:31) 转载▼     最近开始使用ST的stm32w108芯片(也是一款zigbee芯片).开始看他的启动代码看的晕晕呼呼呼的. 还好在c ...

  6. JUCE 界面库显示中文乱码问题

    JUCE 界面库显示中文乱码问题 环境: Windows7 64位 旗舰版 Visual Studio Ultimate 2012 JUCE 4.1 问题描述: 直接使用juce::String存储中 ...

  7. Project Woosah Tu (五色土)

    I bought this Raspberry Pi (model B) in spring 2013, I hadn't done too much with it except for some ...

  8. eclipse创建maven web项目

    eclipse创建maven web项目: 1.安装eclipse maven插件 2.新建maven project选择webapp模板. 3.改造为maven文档结构. 4.添加项目的JAVAEE ...

  9. [原创]C++通用宏定义

    //单态模式(singletion) #defube DECLEAR_SINGLETION(ClassName) \ private: \ static ClassName* m_pInstance; ...

  10. Apache虚拟机建立本地域名

    Apache虚拟机建立本地域名 1.首先打开conf文件夹下http.conf文件,查找vhost,如下操作 2.删除#(取消注释,启用虚拟机功能),根据红框内路径找到httpd-vhosts.con ...