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

09/10 08:45
阅读数 14
在剪映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】


本文分享自微信公众号 - code小生(codexiaosheng)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部