ffmpeg实战-音视频合成案例
转发自白狼栈:查看原文
很多小伙伴私下里留言说,之前没接触过音视频,对于ffmpeg可以做什么还是有些懵。
今天我们一起看下我们究竟可以用 ffmpeg 做什么?
很多小伙伴应该都玩过抖音,你在“拍同款”的时候,有没有留意过“正在合成中”的提示,视频越长合成的时间越长,少则几秒多则几十秒,这个其实就是app本地在做视频合成。
让用户等这么久,感觉体验很差。服务端可以合成吗,答案是“可以”。
但其实ffmpeg在编码的时候,非常吃cpu和内存,尤其是cpu,服务器cpu100%都是家常便饭。那增加cpu不就完事了吗?我们后面会实际测试8核8G、16核16G的机器,发现依然会爆,所以这是一个无底洞,消耗不起。
所以抖音能让服务端做吗?肯定不能,用户量大,app本地能做,最关键都是免费用户。
所以从技术的成本考虑,这也是为什么抖音上很多特效都是短视频,有的甚至只有10秒钟,起码这样不会让用户等太久。
在学习音视频相关的知识之前,我们先简单看两个应用场景。如果你刚巧有一些音视频的基础,顺便可以练练手。
场景1、公司有很多原视频,想以某种效果(比如电视机播放)更好的展示给用户
期望效果如图所示

素材比较难找,图片是百度的,电视机中间显示视频的部分已经被ps处理了,略微粗糙;视频是抖音下载的,原视频也做了局部模糊。
相信每个公司都有好的UI,当前案例仅作为学习。
需要注意的点:
- 视频可以裁剪,可以缩放,不能变形
- 注意电视机内屏的四个角是圆形的
- 原视频只取了中间部分,没有高斯模糊的背景
- 原视频尾部含有抖音的部分同样也被裁剪了
素材已经上传到github,请点击链接获取。
场景2、公司有很多素材视频以及对应的标题和字幕,想开放给用户配音,合成自己的作品
期望效果如图所示

素材同样来源于抖音,左侧视频是用户视频,右侧视频的中间部分是视频素材,底部是该素材的高斯模糊视频,此外还有标题,字幕,字体都是事先准备好的。
素材已经上传至github,请点击链接获取。
同一效果可能有多种不同的做法,如果你花费了一些时间都做出来了,先恭喜你。
为了降低服务器资源和合成的时间,请思考这两个视频效果如何各用一条命令完成。
第一次接触音视频的小伙伴可能会对这样的合成效果感到惊讶,学完ffmpeg基础部分,你至少应该会用一条命令解决以上甚至更复杂的音视频需求。
ffmpeg实战-音视频合成案例的更多相关文章
- ffmpeg实战-音视频基础概念
转发自白狼栈:查看原文 关于音视频,相信大家都看过电影(视频),听过音乐(音频),至少应该都知道mp4是视频文件,mp3是音频文件. 对于一个音视频文件,都有哪些属性呢?以视频为例,我们可以通过 ff ...
- PyQt+moviepy音视频剪辑实战1:多个音视频合成顺序播放或同屏播放的视频文件实现详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一. ...
- FFmpeg开发实战(五):FFmpeg 抽取音视频的视频数据
如何使用FFmpeg抽取音视频的视频数据,代码如下: // FFmpegTest.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include ...
- FFmpeg开发实战(四):FFmpeg 抽取音视频的音频数据
如何使用FFmpeg抽取音视频的音频数据,代码如下: void adts_header(char *szAdtsHeader, int dataLen); // 使用FFmpeg从视频中抽取音频 vo ...
- C#进程调用FFmpeg操作音视频
项目背景 因为公司需要对音视频做一些操作,比如说对系统用户的发音和背景视频进行合成,以及对多个音视频之间进行合成,还有就是在指定的源背景音频中按照对应的规则在视频的多少秒钟内插入一段客户发音等一些复杂 ...
- FFmpeg Android 学习(一):Android 如何调用 FFMPEG 编辑音视频
一.概述 在Android开发中,我们对一些音视频的处理比较无力,特别是编辑音视频这部分.而且在Android上对视频编辑方面,几乎没有任何API做支持,MediaCodec(硬编码)也没有做支持.那 ...
- javaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作?
通过"javaCV入门指南:序章 "大家知道了处理音视频流媒体的前置基本知识,基本知识包含了像素格式.编解码格式.封装格式.网络协议以及一些音视频专业名词,专业名词不会赘述,自行搜 ...
- FFmpeg处理音视频流程学习笔记
原文作者:一叶知秋0830 链接:https://www.jianshu.com/p/1b715966af50 FFmpeg处理音视频完整流程包括5个阶段(输入文件—>编码数据包—>解码后 ...
- FFmpeg开发实战(三):FFmpeg 打印音视频Meta信息
在之前使用FFmpeg命令行的时候,我们经常看到FFmpeg命令行在输出音视频文件的会打印一下文件的Meta信息,类似如图: 那么我们如何通过代码的方式输出这些Meta信息呢? FFmpeg提供了一个 ...
随机推荐
- SQL注入平台(sqli-labs)搭建提示Fatal error: Uncaught Error:
笔者搭建该平台时用的是phpstudy,估计wampserver和xmapp也适用 搭建过程中出现错误 在浏览器进入sqli-labs时有以下提示 Fatal error: Uncaught Erro ...
- 【python】Leetcode每日一题-笨阶乘
[python]Leetcode每日一题-笨阶乘 [题目描述] 通常,正整数 n 的阶乘是所有小于或等于 n 的正整数的乘积.例如,factorial(10) = 10 * 9 * 8 * 7 * 6 ...
- Elasticsearch数据库优化实战:让你的ES飞起来
摘要:ES已经成为了全能型的数据产品,在很多领域越来越受欢迎,本文旨在从数据库领域分析ES的使用. 本文分享自华为云社区<Elasticsearch数据库加速实践>,原文作者:css_bl ...
- Form-OCR & CSDNAPP初体验
项目 内容 课程:北航2020春软件工程 博客园班级博客 作业:阅读并撰写博客回答问题 软件案例分析 我在这个课程的目标是 全面地评价一个软件 这个作业在哪个具体方面帮助我实现目标 明确软件开发过程中 ...
- hive beeline详解
Hive客户端工具后续将使用Beeline 替代HiveCLI ,并且后续版本也会废弃掉HiveCLI 客户端工具,Beeline是 Hive 0.11版本引入的新命令行客户端工具,它是基于SQLLi ...
- jolokia配置Java监控
wget http://search.maven.org/remotecontent?filepath=org/jolokia/jolokia-jvm/1.3.6/jolokia-jvm-1.3.6- ...
- Zabbix5.0服务端部署
Zabbix5.0服务端部署 基础环境配置 [root@localhost ~]# systemctl disable --now firewalld Removed symlink /etc/sys ...
- nginx负载均衡搭建phpmyadmin加入redis了解session会话原理
myphpadmin项目理解cookie和session 当我们平时上网的时候,在刷新之后或者退出浏览器再次打开浏览器不需要登陆网页了,这就是利用了cookie和session: 环境配置 hostn ...
- 066.Python框架DRF之序列化器Serializer
一 序列化器-Serializer 作用: 1. 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串 2. 反序列化,把客户端发送过来的数据,经过request以后变成 ...
- inux操作系统测试工具
inux操作系统测试工具 转载minions_222 最后发布于2017-08-02 11:42:13 阅读数 1481 收藏 展开 转自:http://blog.csdn.net/crisscha ...