package com.ruoyi.utils;
|
|
import org.bytedeco.ffmpeg.global.avcodec;
|
import org.bytedeco.javacv.FFmpegFrameRecorder;
|
import org.bytedeco.javacv.Frame;
|
import org.bytedeco.javacv.FrameRecorder;
|
import org.bytedeco.javacv.OpenCVFrameConverter;
|
|
public class PullStmpThread extends Thread{
|
|
@Override
|
public void run() {
|
|
/*// 视频720分辨率最好,20-25帧最佳 , 画面清晰度自己调参ffmpeg很多参数
|
FrameRecorder recorder = new FFmpegFrameRecorder("rtmp://127.0.0.1/live/livestream", videoWidth, heightWidth, 0);
|
|
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
|
recorder.setFormat("flv");
|
recorder.setFrameRate(frameRate);
|
recorder.setVideoBitrate(2000000); //画面清晰的和模糊和马赛克 受码率影响,码率越大画面越清晰,延迟越高,根据自己服务器带宽调整
|
recorder.setVideoOption("tune", "zerolatency");
|
recorder.setVideoOption("preset", "ultrafast");
|
recorder.setGopSize(50);
|
try {
|
recorder.start();
|
} catch (FrameRecorder.Exception e) {
|
throw new RuntimeException(e);
|
}
|
OpenCVFrameConverter.ToMat converterToMat = new OpenCVFrameConverter.ToMat();
|
while (true) {
|
Frame frame = converterToMat.convert(img.clone());
|
try {
|
Thread.sleep((long) (20));
|
recorder.record(frame);
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
}
|
*/
|
|
}
|
}
|