H265视频编码转H264编码

阳光穿透心脏的1/2处 2024-05-05 07:54 263阅读 0赞
  1. /**
  2. * 完成编码转换
  3. *
  4. * @param inputFile
  5. * @param outputFile
  6. * @return
  7. * @throws Exception
  8. */
  9. public static void convert(String inputFile, String outputFile) throws Exception {
  10. FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(inputFile);
  11. Frame captured_frame;
  12. FFmpegFrameRecorder recorder = null;
  13. try {
  14. grabber.start();
  15. recorder = new FFmpegFrameRecorder(outputFile, grabber.getImageWidth(), grabber.getImageHeight());
  16. recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
  17. recorder.setVideoCodecName("libx264");
  18. recorder.setFormat("mp4");
  19. recorder.setVideoQuality(35);
  20. recorder.setFrameRate(grabber.getFrameRate());
  21. recorder.setSampleRate(grabber.getSampleRate());
  22. recorder.setVideoBitrate(grabber.getVideoBitrate());
  23. recorder.setAspectRatio(grabber.getAspectRatio());
  24. recorder.setAudioBitrate(grabber.getAudioBitrate());
  25. recorder.setAudioOptions(grabber.getAudioOptions());
  26. recorder.start();
  27. while (true) {
  28. captured_frame = grabber.grabFrame();
  29. if (captured_frame == null) {
  30. System.out.println("转码完成");
  31. break;
  32. }
  33. recorder.record(captured_frame);
  34. }
  35. } catch (FrameRecorder.Exception e) {
  36. e.printStackTrace();
  37. } finally {
  38. if (recorder != null) {
  39. try {
  40. recorder.stop();
  41. recorder.close();
  42. } catch (Exception e) {
  43. System.out.println("recorder.close异常" + e);
  44. }
  45. }
  46. try {
  47. grabber.close();
  48. } catch (FrameGrabber.Exception e) {
  49. System.out.println("frameGrabber.close异常" + e);
  50. }
  51. }
  52. }

发表评论

表情:
评论列表 (有 0 条评论,263人围观)

还没有评论,来说两句吧...

相关阅读

    相关 H.264编码

    1.为什么要对视频进行编码 视频是连续的图像序列,由连续的帧构成,一帧即为一幅图像,由于人眼的视觉暂留效应,当帧序列以一定的速率播放时,我们看到的就是动作连续的视频,这么

    相关 H.265视频编码与技术

    一. 概述 作为新一代视频编解码格式,H.265得到越来越广泛的应用。不久之前,苹果公司在翘首期盼中发布了iPhone6,该款手机较之以往的iPhone,不仅仅只是简单地增