问题:原视频的编码格式为H265,在小程序上面无法播放,需要转为MPEG-4格式。
1、引入相关依赖
属国
groupIdorg.bytedeco/groupId
artifactIdjavacv/artifactId
版本1 .4 .1/版本
/依赖性
属国
groupIdorg.bytedeco/groupId
artifactIdjavacpp/artifactId
版本1 .4 .1/版本
/依赖性
属国
GroupIdog。字节德科。javacpp-首选项/GroupID
artifactIdopencv-平台/artifactId
版本3 .4 .1-1 .4 .1/版本
/依赖性
属国
GroupIdog。字节德科。javacpp-首选项/GroupID
artifactIdffmpeg-平台/artifactId
版本3 .4 .2-1 .4 .1/版本
/依赖性
2、视频转码工具类
导入组织。字节德科。javacv。框架;
导入组织。字节德科。javacpp。avcodec
导入组织。字节德科。javacv。FrameGrabber
导入组织。字节德科。javacv。帧记录器;
导入组织。字节德科。javacv。ffmpegframegrabber
导入组织。字节德科。javacv。ffmpegframerecorder
/**
* 视频转码工具类
*/
公共类VideoConvertUtil {
公共空转换(字符串输入文件,字符串输出文件)引发异常{
ffmpegrame grabber grabber=ffmpegrame grabber。创建默认值(输入文件);
帧已捕获_帧;
FFmpegFrameRecorder记录器=null
尝试{
格雷勃。start();
recorder=new FFmpegFrameRecorder(输出文件,grabber.getImageWidth()、grabber.getImageHeight()、grabber。getaudiochannels());
recorder.setVideoCodec(avcodec .AV _ CODEC _ ID _ MPEG4);
录音机。setformat(' MP4 ');
录音机。setframerate(grabber。getframerate());
录音机。setsamplerate(grabber。getsamplerate());
录音机。setvideo bitrater(grabber。getvideo bitrater());
录音机。setaspectratio(grabber。getspectraratio());
录音机。setaudio bitrater(grabber。getaudiostrate());
录音机。setaudioptions(grabber。Getaudiooptions
recorder . setaudiode(avcodec .AV _ CODEC _ ID _ AAC);
录音机。start();
while(true){ 0
captured _ frame=grabber。grabframe();
if(captured _ frame==null){ 0
System.out.println('转码完成');
打破;
}
录音机。记录(捕获的_帧);
}
} catch (FrameRecorder .例外e){ 0
e。print stack trace();
}最后{
如果(录音机!=null){ 0
尝试{
录音机。close();
}捕获(例外e){ 0
System.out.println('记录器。关闭异常e);
}
}
尝试{
格雷勃。close();
} catch (FrameGrabber .例外e){ 0
系统。出去。println(' FrameGrabber。关闭异常e);
}
}
}
}
3、调用工具类方法
视频convertUtil convertUtil=新视频convertUtil();
convertUtil.convert(url,视频保存路径);
路漫漫其修远兮,吾将上下而求索
译文:在追寻真理方面,前方的道路还很漫长,但我将百折不挠,不遗余力地去追求和探索。