bytedeco/javacv

recorder.recordPacket(avPacket) Unable to convert opus to aac

Open

#1,972 opened on Jan 17, 2023

View on GitHub
 (9 comments) (0 reactions) (0 assignees)Java (1,583 forks)batch import
help wantedquestion

Repository metrics

Stars
 (6,985 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(o, grabber.getImageWidth(), grabber.getImageHeight()); // 部分监控设备流信息里携带的帧率为9000,如出现此问题,会导致dts、pts时间戳计算失败,播放器无法播放,故出现错误的帧率时,默认为25帧 if (grabber.getFrameRate() > 0 && grabber.getFrameRate() < 100) { framerate = grabber.getFrameRate(); } else { framerate = 25.0; } recorder.setInterleaved(true); // 关键帧间隔,一般与帧率相同或者是视频帧率的两倍 recorder.setGopSize((int) framerate * 2); // 视频帧率(保证视频质量的情况下最低25,低于25会出现闪屏) recorder.setFrameRate(framerate); // 设置比特率 recorder.setVideoBitrate(grabber.getVideoBitrate()); recorder.setVideoCodec(AV_CODEC_ID_H264); // h264编/解码器 recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P); //视频参数 Map<String, String> videoOption = new HashMap<>(); // 该参数用于降低延迟 videoOption.put("tune", "zerolatency"); videoOption.put("preset", "ultrafast"); videoOption.put("crf", "28"); videoOption.put("vcodec","libx264"); //------------------------------- recorder.setMaxDelay(500); recorder.setAudioOption("crf", "0"); // 最高音质 recorder.setAudioQuality(0); // 192 Kbps recorder.setAudioBitrate(192000); recorder.setSampleRate(44100); recorder.setAudioChannels(2); recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC); //-------------------------------- recorder.setOptions(videoOption);

            recorder.start(formatContext);//I made a mistake in this step

FLV does not support sample rate 48000, choose from (44100, 22050, 11025)

Contributor guide