Open ZhangTeng2017 opened 7 months ago
public static void video2Webp(String localVideoPath, String localWebpPath) { try(FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(localVideoPath); FFmpegFrameFilter filter = new FFmpegFrameFilter("scale=iw/2:ih/2", grabber.getImageWidth() / 2, grabber.getImageHeight() / 2)) { grabber.start(); filter.setAudioChannels(1); filter.setSampleFormat(grabber.getSampleFormat()); filter.setSampleRate(grabber.getSampleRate()); filter.start();
FFmpegFrameRecorder recorder = FFmpegFrameRecorder.createDefault(localWebpPath, grabber.getImageWidth()/2, grabber.getImageHeight()/2); recorder.setFrameRate(30); recorder.setAudioChannels(1); recorder.setVideoCodec(avcodec.AV_CODEC_ID_WEBP); recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC); recorder.setAudioOption("an", "1"); recorder.start(); Frame in, out; while ((in = grabber.grab()) != null) { filter.push(in); while ((out = filter.pull()) != null) { recorder.record(out); } } recorder.stop(); filter.stop(); grabber.stop(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { String inputFile = "/Users/terryzhang/IdeaProjects/code/media-morph/1.MP4"; // 输入视频文件路径 String outputFile = "/Users/terryzhang/IdeaProjects/code/media-morph/1.webp"; // 输出GIF文件路径 video2Webp(inputFile, outputFile); }
while the error:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/terryzhang/IdeaProjects/code/media-morph/1.MP4': Metadata: major_brand : mp42 minor_version : 1 compatible_brands: isommp41mp42 creation_time : 2021-05-03T08:01:21.000000Z Duration: 00:00:04.84, start: 0.000000, bitrate: 1231 kb/s Stream #0:00x1: Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 960x544, 1175 kb/s, 29.14 fps, 29.97 tbr, 600 tbn (default) Metadata: creation_time : 2021-05-03T08:01:21.000000Z handler_name : Core Media Video vendor_id : [0][0][0][0] Stream #0:10x2: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 49 kb/s (default) Metadata: creation_time : 2021-05-03T08:01:21.000000Z handler_name : Core Media Audio vendor_id : [0][0][0][0] [webp @ 0x7fa083b9b0c0] Only exactly 1 stream is supported [aac @ 0x7fa082710c80] Qavg: nan org.bytedeco.javacv.FFmpegFrameRecorder$Exception: avformat_write_header error() error -22: Could not write header to '/Users/terryzhang/IdeaProjects/code/media-morph/1.webp' (For more details, make sure FFmpegLogCallback.set() has been called.) at org.bytedeco.javacv.FFmpegFrameRecorder.startUnsafe(FFmpegFrameRecorder.java:969) at org.bytedeco.javacv.FFmpegFrameRecorder.start(FFmpegFrameRecorder.java:437) at com.xx.mediamorph.service.SnapService.video2Webp(SnapService.java:28) at com.xx.mediamorph.service.SnapService.main(SnapService.java:49)
Process finished with exit code 0
Please make sure that FFmpegLogCallback.set() has been called.
FFmpegLogCallback.set()
public static void video2Webp(String localVideoPath, String localWebpPath) { try(FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(localVideoPath); FFmpegFrameFilter filter = new FFmpegFrameFilter("scale=iw/2:ih/2", grabber.getImageWidth() / 2, grabber.getImageHeight() / 2)) { grabber.start(); filter.setAudioChannels(1); filter.setSampleFormat(grabber.getSampleFormat()); filter.setSampleRate(grabber.getSampleRate()); filter.start();
while the error:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/terryzhang/IdeaProjects/code/media-morph/1.MP4': Metadata: major_brand : mp42 minor_version : 1 compatible_brands: isommp41mp42 creation_time : 2021-05-03T08:01:21.000000Z Duration: 00:00:04.84, start: 0.000000, bitrate: 1231 kb/s Stream #0:00x1: Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 960x544, 1175 kb/s, 29.14 fps, 29.97 tbr, 600 tbn (default) Metadata: creation_time : 2021-05-03T08:01:21.000000Z handler_name : Core Media Video vendor_id : [0][0][0][0] Stream #0:10x2: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 49 kb/s (default) Metadata: creation_time : 2021-05-03T08:01:21.000000Z handler_name : Core Media Audio vendor_id : [0][0][0][0] [webp @ 0x7fa083b9b0c0] Only exactly 1 stream is supported [aac @ 0x7fa082710c80] Qavg: nan org.bytedeco.javacv.FFmpegFrameRecorder$Exception: avformat_write_header error() error -22: Could not write header to '/Users/terryzhang/IdeaProjects/code/media-morph/1.webp' (For more details, make sure FFmpegLogCallback.set() has been called.) at org.bytedeco.javacv.FFmpegFrameRecorder.startUnsafe(FFmpegFrameRecorder.java:969) at org.bytedeco.javacv.FFmpegFrameRecorder.start(FFmpegFrameRecorder.java:437) at com.xx.mediamorph.service.SnapService.video2Webp(SnapService.java:28) at com.xx.mediamorph.service.SnapService.main(SnapService.java:49)
Process finished with exit code 0