【问题标题】:FFmpegFrameGrabber deprecated pixel format errorFFmpegFrameGrabber 弃用像素格式错误
【发布时间】:2015-01-05 20:56:37
【问题描述】:

我尝试使用 JavaCV 和 FFmpegFrameGrabber 类显示我的手机通过 WiFi 发送的图像。不幸的是,无论我设置哪种像素格式(尝试从 0 到 65),我都会收到此错误。

Input #0, mjpeg, from 'http://IP:PORT/video':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 640x480 [SAR 1:1 DAR 2:3], 24 tbr, 1200k tbn, 24 tbc    
[swscaler @ 0x7ff6cc3cba00] deprecated pixel format used, make sure you did set range correctly

这就是我创建 FrameGrabber 的方式:

FrameGrabber grabber = new FFmpegFrameGrabber("http://IP:PORT/video");
grabber.setFormat("mjpeg");
grabber.setVideoCodec(8);
grabber.setFrameRate(24);

然后获取框架:

frame = grabber.grab();

编辑:

显然这个错误来自ffmpeg库,与jpeg有关。

它位于:libswscale/utils.c

第 975 行和第 976 行导致此错误:

if(srcFormat!=c->srcFormat || dstFormat!=c->dstFormat)
     av_log(c, AV_LOG_WARNING, "deprecated pixel format used, make sure you did set range correctly\n");

不幸的是,我不够熟练,无法删除/更改此行。所以我只是忽略这些消息,因为它不会影响程序。除非有人可以为 mac 重新编译 ffmpeg 的编辑版本 :)

【问题讨论】:

  • 这不是错误,而是警告,您可以忽略。
  • 你是对的,但它会使控制台变得混乱,因此很难忽视。
  • 您可以将日志级别更改为error,它只会显示所有错误,包括可以从中恢复的错误。见docs
  • 我会在哪里做呢? JavaCV 使用 .jar 中的 ffmpeg,因此在控制台中设置它不会影响它。

标签: video ffmpeg javacv


【解决方案1】:

您可以使用 avutil.av_log_set_level(avutil.AV_LOG_ERROR) 过滤此警告。

【讨论】:

    【解决方案2】:

    FFmpegLogCallback.setLevel(AV_LOG_ERROR)

    org.bytedeco:javacv-platform:1.5.6

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-11
      • 2018-10-05
      • 2012-02-24
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      相关资源
      最近更新 更多