1.1 MP4
MP4 是上开源的一个视频处理项目 。
链接
1.2功能及使用场景
使用该项目能实现视频剪切、视频合并、视频转码等效果 。在本博客中,只对视频编辑代码进行讲解,在你的项目中加入开源项目的核心代码后,即可对视频文件进行剪辑处理 。
二下载方法
2.1 下载流程
1)先进入地址
2)点击如下图按钮
文章插图
3)点击如下图按钮
文章插图
4)选择如下图文件下载
文章插图
5)将下载下来的jar包放入项目的libs文件夹下
6)在build.中添加框中的代码
文章插图
7)在.xml中添加框中的权限
文章插图
三视频编辑代码
3.1 源码中的剪辑视频例子仓库源码中的视频剪辑例子 3.2 源码中的剪辑视频代码中文解释
1)代码块1----对需要剪辑的视频的开始时间和结束时间进行校正
文章插图
2)代码块二----根据校正后的时间得到剪辑开始和结束的位置
文章插图
3)代码块三----根据剪辑开始和结束的位置保存视频
文章插图
3.3 基于源码的剪辑代码类使用方法
1)实例化类
= new ();
2)设置被编辑视频的文件路径
.(url);
文章插图
3)设置被编辑的视频输出路径
.();
4)设置剪辑开始的时间
.();
5)设置剪辑结束的时间
.();
6)设置输出的文件名称
.();
7)调用剪辑并保存视频文件方法(建议作为点击保存时的操作并加入等待对话框)
.clip();
四 基于源码的视频剪辑代码
.java
import com.R;import com.coremedia.iso.boxes.Container;import com.googlecode.mp4parser.authoring.Movie;import com.googlecode.mp4parser.authoring.Track;import com.googlecode.mp4parser.authoring.builder.DefaultMp4Builder;import com.googlecode.mp4parser.authoring.container.mp4.MovieCreator;import com.googlecode.mp4parser.authoring.tracks.CroppedTrack;import java.io.File;import java.io.FileOutputStream;import java.nio.channels.FileChannel;import java.util.LinkedList;import java.util.List;/*** @ClassName: VideoClip* @Description:* @version: V2.0* @Copyright: X-Force* @author: foryou* @Date: 2017/2/20 14:24*/public class VideoClip {private static final String TAG = "VideoClip";private String filePath;//视频路径private String workingPath;//输出路径private String outName;//输出文件名private double startTime;//剪切起始时间private double endTime;//剪切结束时间public void setFilePath(String filePath) {this.filePath = filePath;}public void setWorkingPath(String workingPath) {this.workingPath = workingPath;}public void setOutName(String outName) {this.outName = outName;}public void setEndTime(double endTime) {this.endTime = endTime / 1000;}public void setStartTime(double startTime) {this.startTime = startTime / 1000;}public void clip() {try {//将要剪辑的视频文件Movie movie = MovieCreator.build(filePath);List tracks = movie.getTracks();movie.setTracks(new LinkedList());//时间是否修正boolean timeCorrected = false;//计算并换算剪切时间for (Track track : tracks) {if (track.getSyncSamples() != null&& track.getSyncSamples().length > 0) {if (timeCorrected) {throw new RuntimeException("The startTime has already been corrected by another track with SyncSample. Not Supported.");}//true,false表示短截取;false,true表示长截取startTime = VideoHelper.correctTimeToSyncSample(track, startTime, false);//修正后的开始时间endTime = VideoHelper.correctTimeToSyncSample(track, endTime, true);//修正后的结束时间timeCorrected = true;}}//根据换算到的开始时间和结束时间来截取视频for (Track track : tracks) {long currentSample = 0; //视频截取到的当前的位置的时间double currentTime = 0; //视频的时间长度double lastTime = -1;//上次截取到的最后的时间long startSample1 = -1;//截取开始的时间long endSample1 = -1;//截取结束的时间//设置开始剪辑的时间和结束剪辑的时间避免超出视频总长for (int i = 0; i
- jsp使用七牛云API和webuploader上传多组图片
- 下面是以十六进制格式存储的一个 UDP 首部:~~~TCP连接使用1000字节的
- pycharm使用超级鹰无输出结果/尝试新的跨平台问题
- 春秋时期铸鼎大量使用垫片鎏金过程须有汞做载体
- 根据这个开源工具去使用的速度之快
- JS 打印图片
- 相机品牌排行榜前十名,品牌浴霸排行前十名 浴霸使用注意事项
- 柑橘开花时有些药剂不宜使用,花期如何有效防治病虫害呢?
- 三星电视机使用寿命,三星电视的寿命
- 1 Android 输入法框架源码分析总结