Android(java方法)上实现mp4的分割和拼接 (一)
来源:互联网 发布:2016年网络经典口头禅 编辑:程序博客网 时间:2024/06/13 15:47
最近正在处理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切割问题。
- Android(java方法)上实现mp4的分割和拼接 (一)
- Android(java方法)上实现mp4的分割和拼接 (一)
- Android(java方法)上实现mp4的分割和拼接 (一)
- Android(java方法)上实现mp4的分割和拼接 (二)
- Android(java方法)上实现mp4的分割和拼接 (二)
- Android(java方法)上实现mp4的分割和拼接 (全)
- Android(java方法)上实现mp4的分割和拼接 (二)
- MP4学习(二)MP4文件格式的解析,以及MP4文件的分割算法
- guava(二)字符串拼接和分割
- Android多媒体(二) 多段Mp4文件拼接 我用双手成就你的梦想
- (一一一)图文混排基础 -利用正则分割和拼接属性字符串
- android图片裁剪拼接实现(一):Matrix基本使用
- 简单的拼接字符串方法 新建数组 然后push()进去内容 最后join(“”)分割
- c语言 字符串的拼接和分割
- MP4学习(一)MP4格式分析
- Java分割拼接图片
- Java分割拼接图片
- python 语言实现字符串的拼接(三种方法)
- 【NvRAM】Native层读写nvram
- Remove Duplicates from Sorted List
- 粗心、大意、疏忽这些词以后要少用最好忘掉!
- Spring MVC 3 深入总结
- Jetty 的工作原理以及与 Tomcat 的比较
- Android(java方法)上实现mp4的分割和拼接 (一)
- 互联网思维
- 【NvRAM】apk中中读写nvram
- string类的成员函数
- DNS
- linux 信任关系的添加
- Bellman-Ford 算法及其优化
- 题目1162:I Wanna Go Home
- AJAX - 创建 XMLHttpRequest 对象