问题:原视频的编码格式是H265,无法在小程序上播放,需要转换成MPEG-4格式。
1。引入依赖关系
<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> <version>1.4.1</version></dependency><dependency> <groupId>org.bytedeco</groupId> <artifactId>javacpp</artifactId> <version>1.4.1</version></dependency><dependency> <groupId>org.bytedeco.javacpp-presets</groupId> <artifactId>opencv-platform</artifactId> <version>3.4.1-1.4.1</version></dependency><dependency> <groupId>org.bytedeco.javacpp-presets</groupId> <artifactId>ffmpeg-platform</artifactId> <version>3.4.2-1.4.1</version></dependency>
2。视频转码工具类
import org.bytedeco.javacv.Frame;import org.bytedeco.javacpp.avcodec;import org.bytedeco.javacv.FrameGrabber;import org.bytedeco.javacv.FrameRecorder;import org.bytedeco.javacv.FFmpegFrameGrabber;import org.bytedeco.javacv.FFmpegFrameRecorder;/** * 视频转码工具类 */public class VideoConvertUtil { public void convert(String inputFile, String outputFile) throws Exception { FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(inputFile); Frame captured_frame; FFmpegFrameRecorder recorder = null; try { grabber.start(); recorder = new FFmpegFrameRecorder(outputFile, grabber.getI***geWidth(), grabber.getI***geHeight(), grabber.getAudioChannels()); recorder.setVideoCodec(avcodec.***_CODEC_ID_MPEG4); recorder.setFor***t("mp4"); recorder.setFrameRate(grabber.getFrameRate()); recorder.setSampleRate(grabber.getSampleRate()); recorder.setVideoBitrate(grabber.getVideoBitrate()); recorder.setAspectRatio(grabber.getAspectRatio()); recorder.setAudioBitrate(grabber.getAudioBitrate()); recorder.setAudioOptions(grabber.getAudioOptions()); recorder.setAudioCodec(avcodec.***_CODEC_ID_AAC); recorder.start(); while (true) { captured_frame = grabber.grabFrame(); if (captured_frame == null) { System.out.println("转码完成"); break; } recorder.record(captured_frame); } } catch (FrameRecorder.Exception e) { e.printStackTrace(); } finally { if (recorder != null) { try { recorder.close(); } catch (Exception e) { System.out.println("recorder.close异常" + e); } } try { grabber.close(); } catch (FrameGrabber.Exception e) { System.out.println("frameGrabber.close异常" + e); } } }}
3。调用工具类方法
VideoConvertUtil convertUtil = new VideoConvertUtil();convertUtil.convert(url, videoSavePath);
获得渊博的知识和崇高的道德的途径是如此之远,我将全心全意地从天堂到地狱去寻找它们。
在追求真理的道路上,前面的路还很长,但我会持之以恒,不遗余力地去追求和探索。
本文来自止步投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/577069.html