【2013-12-24】Android应用开发笔记:多个MP4合并(mp4parser)
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2013-12-24 标题Android应用开发笔记多个MP4合并(mp4parser)分类编程 / android / java 标签android·java·mp4parserTOCAndroid 录制视频时有时需要将多个 MP4 文件合并成一个这里备份使用mp4parser实现的方式。使用 mp4parser 合并视频官网https://code.google.com/p/mp4parser/使用方法在官网上下载jar文件作者下载的是【 isoviewer-1.0-RC-28.jar 】将jar文件添加到Android的工程里配置好buildpath合并多个文件基本实现如下ListStringfileListnewArrayListString();ListMoviemoviesListnewLinkedListMovie();fileList.add(/1387865774255.mp4);fileList.add(/1387865800664.mp4);try{for(Stringfile:fileList){moviesList.add(MovieCreator.build(file));}}catch(IOExceptione){e.printStackTrace();}ListTrackvideoTracksnewLinkedListTrack();ListTrackaudioTracksnewLinkedListTrack();for(Moviem:moviesList){for(Trackt:m.getTracks()){if(t.getHandler().equals(soun)){audioTracks.add(t);}if(t.getHandler().equals(vide)){videoTracks.add(t);}}}MovieresultnewMovie();try{if(audioTracks.size()0){result.addTrack(newAppendTrack(audioTracks.toArray(newTrack)));}if(videoTracks.size()0){result.addTrack(newAppendTrack(videoTracks.toArray(newTrack)));}}catch(IOExceptione){// TODO Auto-generated catch blocke.printStackTrace();}ContaineroutnewDefaultMp4Builder().build(result);try{FileChannelfcnewRandomAccessFile(output.mp4,rw).getChannel();out.writeContainer(fc);fc.close();}catch(Exceptione){// TODO Auto-generated catch blocke.printStackTrace();}moviesList.clear();fileList.clear();备注mp4parser的功能有很多更多的使用方法可以参考源码SVN里面的sample。mp4parser的速度比较慢可以使用一些小技巧神马的提升一些速度这里就不扩展了。