【发布时间】: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,因此在控制台中设置它不会影响它。