原来FFmpeg这么有意思(一)

前言

其实FFmpeg大家都耳熟能详的的一个东西了,知名的ijkplayer 就是有Bilibili开源出来的播放器也是基于FFmpeg做出来的。但是FFmpeg不仅仅止于音视频的播放裁剪功能,还能干些更有趣的事情,就比如说视频的画面拼接,对于一个Android开发者来说,一想到FFmpeg c/c++是跑不掉的。下载官方库,然后编译成不同平台的so,然后在通过jni集成到项目中,这一个开头就难倒了不少开发者。一个问题是如何编译出这个so。如何把编译好的文件集成到项目中。这个我之后的文章会详细说明,这里我只和大家说说有趣在哪里。

说道这里 我不得不说,现在各个大厂都在做统一前端的开发语言和框架,搞得开发者TMD头都大,其实不还是做得都是一些UI页面而已,通过不同的方式渲染而已,如果真的要做一些定制化的功能,还是离开不了原生。

Android FFmpeg视频画面拼接

通过标题大家可能还是不太明白啥意思,我就上几张我做的这个App的截图吧,顺便放几张动态图,可能大家能知道个大概功能。其实大家看了之后,可能感觉感觉市面上已经有做到了这种效果的App了,但是作为一个Android攻城狮,必须要知道他是怎么做出来的,在ios上做这种效果很容易,有原生的Api提供,但是苦逼的Android 那只能通过C/C++来实现,原生搞的话很难。

这个App大概有以下功能(目前并未开源,项目地址

  • 视频画面拼接(主要的)
  • 视频宽高裁剪
  • 视频时长裁剪
  • 添加视频边框及修改边框颜色
  • 添加视频封面
  • 添加视频背景图片
  • 添加视频水印
  • 添加背景音乐

下面是App做出来的两个视频转gif的图片

threemegerone.gif
onebyone.gif

想看视频的 话点击下面的链接即可
三合一视频
二合一视频

这个app已有下面的页面,不过现在还没有开源,还有很多地方要改。功能是实现了。但是页面还有很多优化的地方,所以啊 FFmpeg真的很牛逼。接下来我会教大家自己怎么实现这个功能。那么来看看做出来的视频如何,某音好像没有这个功能哦,

first.png
second.png
third.png
four.png

如何实现这种效果

这一期,我只是教大家如何通过shell 命令实现一个视频画面拼接。首先从最基础的功能来实现吧。然后在根据当前的功能进行扩展。至于FFmpeg库的编译,一时半会儿也说不完。参数配置也很麻烦,尤其是不同的平台坑很多。这里我就以最简单的方式交大家如何实现吧

第一步

既然要做功能,第一步当然是找相应的工具了,我们可以通过FFmpeg官网找到,对应自己平台的静态库,大家别下错了哈,static binary不要下载错了,下载成源文件了。因为官方已经给我们编译好了静态库,可以直接通过shell 脚本就可以简单的走起来。

FFmpeg官方网站库

打开链接,我这边选中的是mac os 可以看到底下提供了 static 库。我们可以直接下载下来就行了。Ubuntu 和windows 都是一样的 都有现成的库。可以下载下来。

ffmpeg static.png

下载下来就是一个这个东西。我这边大概71M。还挺大的,因为里面官方给我们把大部分基本的功能都给编译进去了。所以这么大,但是如果我们自己编译的话,会小很多。可以吧一下不需要的东西直接disable


屏幕快照 2019-03-03 下午6.39.38.png

第二步

那当然是打开我们的terminal,windows 直接win+R 然后cmd就ok,然后cd 到我们下载的ffmpeg静态库的文件路径,执行一下命令,不出意外的话,这时候你应该可以看到以下页面

./ffmpeg

如果出现一下内容,说明这时候你的ffmpeg 已经ok了

屏幕快照 2019-03-03 下午6.48.23.png

如果说权限不足的话 ,cd到你的静态库路径下执行这个就可以了。加个sudo,然后在change mode 一下 赋予777权限

chmod +x  ffmpeg
chmod 777 ffmpeg

这时候ffmpeg环境已经准备好了。接下来万事俱备只欠东风了。

第三步

视频拼接,那么如何视频拼接呢,不用担心 ffmpeg 已经给我们做好了相应的封装了。只要了解相应的命令就可以完成了最基础的视频拼接功能了。其实ffmpeg不仅仅如此啊,他的功能太强大了。

先简单的来几个命令看看,查看视频文件信息

./ffmpeg -i input.mp4

这时候我们可以看到视频的具体信息fps,宽高啊,视频质量啊,等等很多信息

屏幕快照 2019-03-03 下午7.05.36.png

-i 的指令就是入参的,接下来我们直接看如何通过命令把一个视频合在一起,就比如上面两个视频合在一起的小姐姐,我们通过电脑简单的来合成一下。

./ffmpeg -i input2.mp4  -i input2.mp4  -filter_complex [0][1]vstack -y output.mp4 

成功的话应该是以下页面

屏幕快照 2019-03-03 下午7.06.08.png

这一个MP4文件是同级目录下的文件,大家可以换成自己的文件名就可以,至于filter_complex吗?我这边就大白话讲了,就相当于我们java 中的函数一样,你把输入给他 在这个方法体内,把相应的输出给你。
vstack 可以官网看到这样的介绍 Stack input videos vertically.就是垂直拼接视频的意思,同理如何想水平的话,只要把vstack 改成hstack就可以了,老铁们是不是很简单,很给力,

最主要的是自己通过命令行就可以完成一些视频的基本操作,什么ps,Photoshop,我命令行就ok了。哈哈哈哈哈哈哈哈

刚刚作出来的视频效果,截图给大家看看

vstack.png

说好的小姐姐呢,tmd 这是什么鬼很可怕,博主换了个视频 哈哈哈,但是这个效果的话产品看到会骂死人的,接下来的文章将会给大家讲解如何优化视频效果。

Ending

希望给老铁们带来的是知识的储备而不是时间的浪费。这一期就说到这里,最简单的方式实现视频画面的拼接,下一期将会给大家带来更多的内容。大家也可以在留言里说说更想了解哪一方面的内容。我会根据大家的意见来写,

原来FFmpeg这么有意思 (二)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,609评论 4 59
  • 概述 网上充斥着大量的 iOS FFmpeg 编译的教程,有的时间比较早了,有的很多都没有说详细,或者有个别坑作者...
    ForestSen阅读 24,301评论 24 183
  • 这次感冒是真滴难受。 原因和上次一样,又是头发没吹干,这次更过分,头顶心还被吹了电风扇。所谓自作孽吧。 第一天感觉...
    江江小流儿阅读 216评论 0 0
  • 失眠的人无非两种 一是手里拿着手机 二是脑子里有个剧场
    娜简书阅读 127评论 0 1
  • 不知从什么时候开始,“情怀”在人们的讨论语境中慢慢变得越来越不像个褒义词。每每说起,仿佛总有半是“将就”半是“卖老...
    pizCat阅读 465评论 0 0