java 使用javacv连接摄像头问题
之前是使用这样的命令去跑 vlc可以正确使用 rtmp的m3u8的流进行播放视频 现在改为javacv去进行推流
但是跑完以后vlc播放不了会直接报错 求解答
java 使用javacv连接摄像头问题
使用JavaCV连接海康摄像头并推流的示例代码:
import org.bytedeco.javacpp.Loader;
import org.bytedeco.javacpp.avcodec;
import org.bytedeco.javacpp.avutil;
import org.bytedeco.javacv.*;
import java.io.IOException;
public class HikvisionCameraDemo {
public static void main(String[] args) throws IOException, FrameGrabber.Exception, FrameRecorder.Exception {
Loader.load(avutil.class);
Loader.load(avcodec.class);
// 海康摄像头的RTSP地址
String rtspUrl = "rtsp://192.168.1.1:554/stream1";
// 推流地址
String rtmpUrl = "rtmp://example.com/live/stream";
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(rtspUrl);
grabber.setOption("rtsp_transport", "tcp");
grabber.setOption("stimeout", "5000000");
grabber.start();
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(rtmpUrl, grabber.getImageWidth(), grabber.getImageHeight(), grabber.getAudioChannels());
recorder.setInterleaved(true);
recorder.setVideoOption("preset", "ultrafast");
recorder.setVideoOption("crf", "23");
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
recorder.setFormat("flv");
recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P);
recorder.start();
Frame frame;
while ((frame = grabber.grabFrame()) != null) {
recorder.record(frame);
}
grabber.stop();
recorder.stop();
}
}