sun5244725
V2EX  ›  问与答

关于 javacv hls 切片结果很模糊的为

By sun5244725 at 2022 年 7 月 15 日 · 1885 次点击

最近接触了 javacv 准备弄一个 mp4 切片 m3u8 的工具。

网上找了一些资料,也直接扣了别人的 demo 来运行。

但是最终出来的视频播放效果都很模糊

不知道是不是哪里姿势不对 有大佬能指点一下吗

   public static void hls(String input) throws Exception, org.bytedeco.javacv.FrameGrabber.Exception {
        FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(input);
        grabber.start();
        int frameRate = 25;
        String output="D:\\test\\hls";
        FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(output+"\\index.m3u8", grabber.getImageWidth(), grabber.getImageHeight(), grabber.getAudioChannels());
        recorder.setFormat("hls");
        recorder.setOption("hls_time", "2");
        recorder.setOption("hls_list_size", "0");
        recorder.setOption("hls_segment_type", "mpegts");
        recorder.setOption("strftime", "1");
        recorder.setOption("hls_segment_filename", output+"\\%Y%m%d_%H%M%S.ts");
        recorder.setFrameRate(frameRate);//设置帧率
        recorder.setGopSize(2 * frameRate);//设置 gop
        recorder.setVideoQuality(1.0); //视频质量
        recorder.setVideoBitrate(3000);//码率
        recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
        recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);
        recorder.start();
        Frame frame = null;
        // 只抓取图像画面
        for (; (frame = grabber.grabImage()) != null; ) {
            try {
                recorder.record(frame);
            } catch (org.bytedeco.javacv.FrameRecorder.Exception e) {
                e.printStackTrace();
            }
        }
        recorder.close();
        grabber.close();
    }
目前尚无回复
© 2026 V2EX · 22ms · 3.9.8.5