难题:原视频编码为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;/** * 视频渲染java工具 */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);

得到博学多识专业知识和宏伟社会道德的方式是这样之远,以致于我能一心一意地从人间天堂到炼狱寻找他们。

探求真理,漫漫长路,但我能坚持不懈,竭尽全力地喜欢和探寻。

评论(0条)

刀客源码 游客评论