weixin_42892965 2023-02-21 15:54 采纳率: 41.2%
浏览 201
已结题

java 使用javacv 连接海康摄像头的问题

java 使用javacv连接摄像头问题

img


之前是使用这样的命令去跑 vlc可以正确使用 rtmp的m3u8的流进行播放视频 现在改为javacv去进行推流

img


img


但是跑完以后vlc播放不了会直接报错 求解答

img

  • 写回答

5条回答 默认 最新

  • 喊你敲代码 2023-02-21 21:37
    关注

    使用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();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • XYCMS 2023-02-21 16:06
    关注

    跑小文件试试,是不是文件数据流太大了!假如是文件太大做缓存处理

    评论
  • 阳光宅男xxb 2023-02-21 16:11
    关注

    参数的问题吧。参考我的配置:

    img

    评论 编辑记录
  • 封尘绝念丶 2023-02-21 16:33
    关注
    评论
  • GISer Liu 2023-02-22 02:54
    关注

    以下答案基于ChatGPT与GISer Liu编写:
    对于JavaCV连接摄像头并使用RTMP协议进行推流的问题,出现VLC无法播放的情况可能有多种原因,以下是一些常见的解决方案:

    1. 检查推流地址是否正确:确保推流地址正确,包括协议、IP地址和端口号等参数。

    2. 检查推流参数是否正确:JavaCV推流需要指定推流格式、视频编码、音频编码等参数,确保参数设置正确。

    3. 检查网络环境是否良好:如果网络环境较差,推流过程中可能会出现丢包、卡顿等现象,导致推流失败或推流质量下降。可以尝试使用更稳定的网络或者优化网络环境。

    4. 检查VLC版本是否支持推流:部分VLC版本可能不支持通过RTMP协议播放流媒体,需要使用支持该协议的版本。

    5. 检查编码格式是否支持:部分编码格式可能不被VLC支持,需要选择支持的编码格式。

    6. 检查VLC播放参数是否正确:VLC播放时需要指定正确的播放参数,如视频格式、音频格式、码率等,确保参数设置正确。

    7. 检查日志信息:通过查看JavaCV和VLC的日志信息,可以帮助定位问题所在,进而采取针对性的解决方案。

    如果以上方案仍然无法解决问题,可以提供更具体的错误信息或者代码示例,以便更好地排查问题。

    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 修改了问题 2月21日
  • 修改了问题 2月21日
  • 展开全部

悬赏问题

  • ¥15 电脑锁屏时vba运行SAP,excel数据不能复制到SAP
  • ¥50 74LS系列 74LS00 74LS04设计一个RS485电路(关键词-差分)
  • ¥30 各位help写一下代码
  • ¥15 在运行SDEdit模型下载不了
  • ¥15 求51控制l298n驱动的小车中超声波避障怎么写
  • ¥15 电脑连上WIFI却用不了
  • ¥30 MATLAB在RLC电路的固有响应和阶跃响应GUI仿真报告
  • ¥15 hyper-v出现的问题
  • ¥15 有能用的可加酬金,求可以批量下载懒人听书的软件,能登录自己帐号的。
  • ¥100 高博一起做RGB-D SLAM(5)VO无法出visualisation问题