|
@@ -1,7 +1,9 @@
|
|
|
package com.iden.common.util;
|
|
|
|
|
|
|
|
|
+import com.iden.common.enums.TimeoutOption;
|
|
|
import org.bytedeco.javacv.FFmpegFrameGrabber;
|
|
|
+import org.bytedeco.javacv.FFmpegFrameRecorder;
|
|
|
import org.bytedeco.javacv.Frame;
|
|
|
import org.bytedeco.javacv.Java2DFrameConverter;
|
|
|
import org.slf4j.Logger;
|
|
@@ -197,6 +199,49 @@ public class VideoUtil {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 视频截取
|
|
|
+ * @param videoFile
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public static void cut(File videoFile, File outputFile) throws Exception{
|
|
|
+ boolean isStart = true;// 该变量建议设置为全局控制变量,用于控制录制结束
|
|
|
+ FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(videoFile);
|
|
|
+// // 微秒 大概为设置时间的两倍
|
|
|
+ // grabber.setOption(TimeoutOption.RW_TIMEOUT.getKey(), "10000000");
|
|
|
+ // rtsp 默认udp 丢包 改为tcp
|
|
|
+ // grabber.setOption("rtsp_transport", "tcp");
|
|
|
+ // rtsp 默认udp 丢包 改为tcp
|
|
|
+ // grabber.setOption("rtsp_transport", "tcp");
|
|
|
+ grabber.start();
|
|
|
+ //好多视频熟悉可以获取后打印 示例几个
|
|
|
+ System.out.println("ImageWidth:" + grabber.getImageWidth());
|
|
|
+ System.out.println("ImageHeight:" + grabber.getImageHeight());
|
|
|
+ System.out.println("AudioChannels:" + grabber.getAudioChannels());
|
|
|
+ System.out.println("Format:" + grabber.getFormat());
|
|
|
+ FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputFile, grabber.getImageWidth(), grabber.getImageHeight(), grabber.getAudioChannels());
|
|
|
+ recorder.setFrameRate(grabber.getFrameRate());
|
|
|
+// recorder.setAudioBitrate(grabber.getAudioBitrate());
|
|
|
+// recorder.setSampleRate(grabber.getSampleRate());
|
|
|
+// recorder.setGopSize(2);
|
|
|
+ recorder.setFormat( grabber.getFormat());
|
|
|
+ // recorder.setAudioCodecName("aac");
|
|
|
+ recorder.setVideoCodec(grabber.getVideoCodec());
|
|
|
+ Frame frame = null;
|
|
|
+ //如果想截取规定时间段视频 请看系列文章二
|
|
|
+ while (isStart) {
|
|
|
+ frame = grabber.grabFrame();
|
|
|
+ if (frame != null && frame.image != null) {
|
|
|
+ recorder.record(frame);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ recorder.stop();
|
|
|
+ recorder.release();
|
|
|
+ grabber.stop();
|
|
|
+ grabber.release();
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
public static void main(String[] args) {
|
|
|
try {
|
|
|
//getList(10,113);
|
|
@@ -205,8 +250,8 @@ public class VideoUtil {
|
|
|
// List<File> files = VideoUtil.fetchPicByCount(file, "E:/223", 100);
|
|
|
// System.out.println(files.get(0).getName());
|
|
|
// System.out.println(VideoUtil.getVideoTime(file));
|
|
|
- fetchAllPic(file,"E:/223",new Date());
|
|
|
-
|
|
|
+// fetchAllPic(file,"E:/223",new Date());
|
|
|
+ cut(file,new File("e:/a.mp4"));
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|