视频剪辑开启 Android 下一个风口,拥抱音视频开发新潮流

在剪映APP中,对多个视频文件进行截取和拼接是非常常见的操作。视频截取我们应该怎么做呢?

有这样一个视频文件,对他做视频剪辑

例如有100M的视频文件  总时长 10min,想截取前面5min中的视频, 直接以100M 的1/2进行切割 ,前面的1/2的文件既是 剪辑后的视频文件

纳尼?视频剪辑是这样做的?

在摄像头录制时原始画面中,每一帧与每一帧之间的数据是单独保存,但经过编码形成压缩数据后,每一帧的数据就不再单独存在,而是高度压缩和连续的,后面视频帧会复用前面视频帧的数据信息,这就导致单纯视频文件切割 不能做到视频剪辑

视频剪辑中正确的姿势是什么样呢?

要实现这些功能,就需要对视频文件进行编解码操作,

即先解码要处理的视频文件,还原出对应的原始帧

然后再对原始帧重新编码

最后就能得到剪辑后的视频文件

原理知道了 谁来做解码和编码呢?

MediaCodec可以帮我做音视频的解码与编码?

MediaCodeC是Android处理音视频API, Mediacodec类可用于访问DSP媒体编解码器

  1. Google并没有MediaCodec实现音视频解码器,相反,解码器都是后期手机厂商自己register进去的,MediaCodeC只提供抽象的接口,具体实现在各个手机上,

  2. 当然,Android源码里面引入了一套AAC编码器(因为AAC是开放标准的 ),而大家常用的MP3是有版权的,所以原生MediaCodec无法编码MP3,除非厂商提供MP3编码器)

MediaCodec的API非常的丰富,可以用它来做视频剪辑,音视频合成 ,视频倒放,剪影App中所有的功能 都是由MediaCodec实现的,所以它功能非常强大

MediaCodec 功能丰富却难学,面向过程的语法 很难理解每一句代码是在做什么事情

我们看下面一段解码的api  

MediaCodec codec = MediaCodec.createByCodecName(name);
 codec.configure(format, …);//配置 MediaCodeC
 codec.start();//开始解码
 ByteBuffer[] inputBuffers = codec.getInputBuffers();//获取输入的缓存区
 ByteBuffer[] outputBuffers = codec.getOutputBuffers();//获取输出的缓冲区
 for (;;) {
   int inputBufferId = codec.dequeueInputBuffer(…);
   if (inputBufferId >= 0) {
     codec.queueInputBuffer(inputBufferId, …);
   }
   int outputBufferId = codec.dequeueOutputBuffer(…);
   if (outputBufferId >= 0) {
     codec.releaseOutputBuffer(outputBufferId, …);
   } else if (outputBufferId == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
     outputBuffers = codec.getOutputBuffers();
   } else if (outputBufferId == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
     MediaFormat format = codec.getOutputFormat();
   }
 }

是不是会被震撼住?

音视频为什么难学?

  1. 音视频知识庞杂,通俗易懂的资料非常少,自学困难重重;

  2. 网上博客、视频充斥着大量的错误信息,使得很多初学者掉到坑里就爬不出来了。

来举个例子,按照传统的音视频学习方法:首先接触大量的音视频开源库,如MediaCodec,FFmpeg 往往这些API就已经把脑袋弄大了。停留在使用API,不能让你适应不断变化的需求。如果最开始的方向错了,不管你如何努力,都学不好音视频。

那么,我们该如何学习音视频呢?

为了帮助大家更快更好的学习音视频开发技术,我特别邀请了前华为、OPPO 、阿里资深架构师 David,为大家带来《剪映音视频剪辑实战系列直播分享,在这里给大家准备了一场干货十足的音视频学习之旅,将带大家从H265编码原理入手,从0手写剪映音视频剪辑技术,一键制作大片。

原价298元《剪映音视频剪辑实战》,现在限时优惠只需要0.1元即可加入学习(限量100个名额

大家手速要快,赶紧识别下方图中二维码加入学习!

报名学习后还将附赠一套系统的开发进阶资料,帮助大家在技术的道路上更进一步。

▲该PDF整理于网络,作者灰色飘零,整编BlackZhangJX

赶紧扫码报名领取资料,开启你的学习之旅

扫码添加时记得备注:"音视频"快速通过)

【如遇扫码频繁+VX:sjsgyb6】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值