问题:原视频的编码格式为H265,在小程序上面无法播放,需要转为MPEG-4格式。
1、引入相关依赖
org.bytedeco
javacv
1.4.1
org.bytedeco
javacpp
1.4.1
org.bytedeco.javacpp-presets
opencv-platform
3.4.1-1.4.1
org.bytedeco.javacpp-presets
ffmpeg-platform
3.4.2-1.4.1
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.getImageWidth(), grabber.getImageHeight(), grabber.getAudioChannels());
recorder.setVideoCodec(avcodec.AV_CODEC_ID_MPEG4);
recorder.setFormat("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.AV_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);
路漫漫其修远兮,吾将上下而求索
译文:在追寻真理方面,前方的道路还很漫长,但我将百折不挠,不遗余力地去追求和探索。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 ZLME@ZLME.COM 举报,一经查实,立刻删除。