zoukankan      html  css  js  c++  java
  • ffmpeg实战-音视频合成案例

    转发自白狼栈:查看原文

    很多小伙伴私下里留言说,之前没接触过音视频,对于ffmpeg可以做什么还是有些懵。

    今天我们一起看下我们究竟可以用 ffmpeg 做什么?

    很多小伙伴应该都玩过抖音,你在“拍同款”的时候,有没有留意过“正在合成中”的提示,视频越长合成的时间越长,少则几秒多则几十秒,这个其实就是app本地在做视频合成。

    让用户等这么久,感觉体验很差。服务端可以合成吗,答案是“可以”。

    但其实ffmpeg在编码的时候,非常吃cpu和内存,尤其是cpu,服务器cpu100%都是家常便饭。那增加cpu不就完事了吗?我们后面会实际测试8核8G、16核16G的机器,发现依然会爆,所以这是一个无底洞,消耗不起。

    所以抖音能让服务端做吗?肯定不能,用户量大,app本地能做,最关键都是免费用户。

    所以从技术的成本考虑,这也是为什么抖音上很多特效都是短视频,有的甚至只有10秒钟,起码这样不会让用户等太久。

    在学习音视频相关的知识之前,我们先简单看两个应用场景。如果你刚巧有一些音视频的基础,顺便可以练练手。

    场景1、公司有很多原视频,想以某种效果(比如电视机播放)更好的展示给用户

    期望效果如图所示


    素材比较难找,图片是百度的,电视机中间显示视频的部分已经被ps处理了,略微粗糙;视频是抖音下载的,原视频也做了局部模糊。

    相信每个公司都有好的UI,当前案例仅作为学习。

    需要注意的点:

    1. 视频可以裁剪,可以缩放,不能变形
    2. 注意电视机内屏的四个角是圆形的
    3. 原视频只取了中间部分,没有高斯模糊的背景
    4. 原视频尾部含有抖音的部分同样也被裁剪了

    素材已经上传到github,请点击链接获取

    下载图片素材

    下载视频素材

    下载合成效果

    场景2、公司有很多素材视频以及对应的标题和字幕,想开放给用户配音,合成自己的作品

    期望效果如图所示


    素材同样来源于抖音,左侧视频是用户视频,右侧视频的中间部分是视频素材,底部是该素材的高斯模糊视频,此外还有标题,字幕,字体都是事先准备好的。

    素材已经上传至github,请点击链接获取

    下载左侧用户视频

    下载右侧素材视频

    下载右侧的字幕文件1字幕文件2

    下载字体

    最终合成的视频效果

    同一效果可能有多种不同的做法,如果你花费了一些时间都做出来了,先恭喜你。

    为了降低服务器资源和合成的时间,请思考这两个视频效果如何各用一条命令完成。

    第一次接触音视频的小伙伴可能会对这样的合成效果感到惊讶,学完ffmpeg基础部分,你至少应该会用一条命令解决以上甚至更复杂的音视频需求。

  • 相关阅读:
    Mysql(7) _常用函数
    Mysql(6)_ 帮助的使用
    Mysql(5)_ 基本数据类型-时间
    Mysql(4)_整型和浮点型
    1 HTTP请求头Header及其作用详解
    Java(35) _JDBC批量插入数据二
    Java(34)_ 用JDBC批量向数据库插入语句
    Java(33)_ JDBC指针移动
    Mysql(3)_ Mycat简介
    Mysql(2)_ binlog文件
  • 原文地址:https://www.cnblogs.com/wwolf/p/14894298.html
Copyright © 2011-2022 走看看