剪映团队内部解密:视频裁剪应该怎么优化?

共 2116字,需浏览 5分钟

 ·

2021-09-10 19:54

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

aad30a19293188defce3bdb7ece2add0.webp

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

a2d81de89d98b92a3418a79720fc54eb.webp

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

8fc89ad0b5f6406857266cad088c2bc2.webp

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

58ae56ea3f98a237511081cc4ea71263.webp

要实现这些功能,就需要对视频文件进行编解码操作,即先解码要处理的视频文件,还原出对应的原始帧然后再对原始帧重新编码
最后就能得到剪辑后的视频文件
原理知道了 谁来做解码和编码呢?
MediaCodec可以帮我做音视频的解码与编码?
MediaCodeC是Android处理音视频API, Mediacodec类可用于访问DSP媒体编解码器

7f6933463d24303da7acd02036728278.webp

  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();
  }
}
是不是会被震撼住?

a3cff04d6f68676305504322ad6b1dff.webp

音视频为什么难学?

  1. 音视频知识庞杂,通俗易懂的资料非常少,自学困难重重;
  2. 网上博客、视频充斥着大量的错误信息,使得很多初学者掉到坑里就爬不出来了。
来举个例子,按照传统的音视频学习方法:首先接触大量的音视频开源库,如MediaCodec,FFmpeg 往往这些API就已经把脑袋弄大了。停留在使用API,不能让你适应不断变化的需求。如果最开始的方向错了,不管你如何努力,都学不好音视频。
那么,我们该如何学习音视频呢?

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


原价298元《剪映音视频剪辑实战》,现在限时优惠只需要0.1元即可加入学习(限量100个名额
大家手速要快,赶紧识别下方图中二维码加入学习!

2962b41ab503c9abbf4c2bbc81690662.webp

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

cedced52b39dbd7a96bbfa6aa19c3302.webp

38ebce6f0aba7ecb913013825002ce06.webp

▲该PDF整理于网络,作者灰色飘零,整编BlackZhangJX
赶紧扫码报名领取资料,开启你的学习之旅扫码添加时记得备注:"音视频"快速通过)【如遇扫码频繁+VX:sjsgyb6】

浏览 190
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐