小高想做码农 2022-09-28 11:51 采纳率: 0%
浏览 29

FFmpegFrameGrabber报空指针

问题遇到的现象和发生背景

音乐与视频合成 执行到这里为什么报空指针异常 recorder.record(sampleFrame); 求解

用代码块功能插入代码,请勿粘贴截图

pom文件

<dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv-platform</artifactId>
            <version>1.5.4</version>
        </dependency>
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv</artifactId>
            <version>1.5.2</version>
        </dependency>

public static void testAudioMornThanVideo(String videoInput, String audioInput, String outputPath)
            throws org.bytedeco.javacv.FrameRecorder.Exception, org.bytedeco.javacv.FrameGrabber.Exception {
 
        FFmpegFrameGrabber imageGrabber = new FFmpegFrameGrabber(videoInput);
        imageGrabber.start();
        FFmpegFrameGrabber audioGrabber = new FFmpegFrameGrabber(audioInput);
        audioGrabber.start();
        // 流媒体输出地址,分辨率(长,高),是否录制音频(0:单声道/1:立体声)
        FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputPath, imageGrabber.getImageWidth(),
                imageGrabber.getImageHeight(), 1);
        recorder.setInterleaved(true);
        recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
        recorder.setFormat("mp4");
        recorder.start(imageGrabber.getFormatContext());
        long videoTime = imageGrabber.getLengthInTime();
        AVPacket packet = null;
 
        // 解封装/解复用
        for (; (packet = imageGrabber.grabPacket()) != null;) {
            // 封装/复用
            recorder.recordPacket(packet);
        }
        // 解封装/解复用
        Frame sampleFrame = null;
        while ((sampleFrame = audioGrabber.grabSamples()) != null) {
            recorder.record(sampleFrame);
            if (audioGrabber.getTimestamp() >= videoTime) {
                break;
            }
        }
        recorder.close();
        audioGrabber.close();
        imageGrabber.close();
 
    }

运行结果及报错内容

Exception in thread "main" java.lang.NullPointerException
at org.bytedeco.javacv.FFmpegFrameRecorder.recordSamples(FFmpegFrameRecorder.java:1066)
at org.bytedeco.javacv.FFmpegFrameRecorder.record(FFmpegFrameRecorder.java:922)
at org.bytedeco.javacv.FFmpegFrameRecorder.record(FFmpegFrameRecorder.java:911)
at VideoUtils.testAudioMornThanVideo(VideoUtils.java:37)
at VideoUtils.main(VideoUtils.java:157)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'E:\aa.mp4':

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-28 12:18
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 9月28日

悬赏问题

  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22
  • ¥15 R语言中lasso回归报错