最近正在处理android上的mp4切割问题。学习了很多mp4的知识,mp4文件按照编码类型,分为mpeg-4,avc这两种;这两种类型的mp4在后面的处理中会有不同的地方。

            在android系统下,MP4的分割大致有三种可选择的方法,(1)FFmpeg框架,对视频进行一帧一帧解码编码处理。(2)第三方java开源库,比如优秀的mp4parser。(3)Android4.1中新加入的api:MediaCodec。

            以上三种方法都有自己的优劣势,简单介绍:

           (1)FFmpeg,需要做jni实现。编码解码可以裁剪任意长度视频的任意中间长度区间,支持对视频加入水印,配乐,滤镜处理;支持裁剪屏幕尺寸。最致命的缺点是:

             效率低的难以忍受,大概是1s的视频1.5S的处理时间,如果Android应用中这样处理让用户等待完全找死行为。

             (2)mp4Parser。有非常详细的资料和demo可以学习,是一个大牛的个人作品。但是它对视频的裁剪处理非常粗糙,只能从关键帧进行裁剪。经过我测试:mpeg-4格式的mp4文件,大概2S-10S左右会有一个关键帧;avc格式的mp4文件大概0.3S有一个关键帧。

                很大的有点是运行效率非常高,可以忽略时间成本。

               但是这样会引入很明显的问题,如果你的业务需求需要准确截取,无论你是选择上一个节点还是下一个,头尾大概都会引入平均3-4S的长度误差。这个误差有时难以忍受。

              (3)mediaCodec是Android4.1才引入的。如果以来这个Lib进行操作,会导致4.1之前的版本无法使用。另外,需要说明,这个api以来很多C层和硬件层的实现,不要试图将所有代码分隔出来加到自己的项目中。

                下篇给出一个可行的方案来解决android上的mp4切割问题。

更多相关文章

  1. 【微信 video】微信 video 踩坑记录
  2. 基于FFmpeg和SurfaceView实现Android原生窗口(ANativeWindow)的视
  3. Android视频播放项目总结之 使用第三方Vitamio库,开发万能播放器(
  4. 【流媒體】Android(安卓)实时视频采集/编码/传输/解码/播放—方
  5. Android(安卓)视频录制 动态图
  6. ViewStub must have a valid layoutResource
  7. 在Android项目中引入JsBridge时需要注意的问题。
  8. Android界面跳转时候onDestroy和onResume的调用顺序
  9. 【Android(安卓)FFMPEG 开发】音视频基础 和 FFMPEG 编译 ( 音视

随机推荐

  1. Adroid 之 Builder 对话框
  2. java.io.IOException: Unable to open sy
  3. Android源代码查看途径
  4. Android: INSTALL_FAILED_UPDATE_INCOMPAT
  5. Android梳理 Fragment
  6. android官方技术文档翻译——Android Lin
  7. Android(安卓)ApiDemos示例解析(116):Vie
  8. fedora 18 源码编译 android 4.0.1
  9. Android App安装失败错误总结
  10. [Android(安卓)Pro] 关于BitmapFactory.d