ffmpeg编译E

2024-04-26 13:19:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图在我的raspberry pi上编译ffmpeg,但是它给了我很多警告,比如(codec不推荐使用),尤其是在运行sudo make时。在

 pi@raspberrypi:/usr/src/ffmpeg $ sudo make && sudo make install

....... lots of successful execution here ...... 


CC  libavfilter/avf_showfreqs.o
libavfilter/lavfutils.c: In function ‘ff_load_image’:
libavfilter/lavfutils.c:53:5: warning: ‘codec’ is deprecated (declared at    ./libavformat/avformat.h:880) [-Wdeprecated-declarations]
 codec_ctx = format_ctx->streams[0]->codec;
 ^
libavfilter/lavfutils.c:79:5: warning: ‘avcodec_decode_video2’ is deprecated   (declared at ./libavcodec/avcodec.h:4763) [-Wdeprecated-declarations]
 ret = avcodec_decode_video2(codec_ctx, frame, &frame_decoded, &pkt);
 ^
CC  libavfilter/lswsutils.o
CC  libavfilter/opencl_allkernels.o
CC  libavfilter/pthread.o
CC  libavfilter/setpts.o
CC  libavfilter/settb.o
CC  libavfilter/split.o
CC  libavfilter/src_movie.o
libavfilter/src_movie.c: In function ‘movie_push_frame’:
libavfilter/src_movie.c:524:9: warning: ‘avcodec_decode_video2’ is deprecated (declared at ./libavcodec/avcodec.h:4763) [-Wdeprecated-declarations]
     ret = avcodec_decode_video2(st->codec_ctx, frame, &got_frame, pkt);
     ^
libavfilter/src_movie.c:527:9: warning: ‘avcodec_decode_audio4’ is deprecated (declared at ./libavcodec/avcodec.h:4714) [-Wdeprecated-declarations]
     ret = avcodec_decode_audio4(st->codec_ctx, frame, &got_frame, pkt);
     ^
CC  libavfilter/transform.o
CC  libavfilter/trim.o
CC  libavfilter/vaf_spectrumsynth.o
libavfilter/vaf_spectrumsynth.c: In function ‘try_push_frame’:
libavfilter/vaf_spectrumsynth.c:370:19: warning: variable ‘ret’ set but not used [-Wunused-but-set-variable]
 int ch, n, i, ret;                 ^
CC  libavfilter/vf_alphamerge.o
CC  libavfilter/vf_aspect.o
CC  libavfilter/vf_atadenoise.o
CC  libavfilter/vf_colorlevels.o
CC  libavfilter/vf_colorspace.o
libavfilter/vf_colorspace.c: In function ‘fill_rgb2xyz_table’:
libavfilter/vf_colorspace.c:360:22: warning: passing argument 1 of ‘invert_matrix3x3’ from incompatible pointer type
 invert_matrix3x3(rgb2xyz, i);
                  ^
libavfilter/vf_colorspace.c:277:13: note: expected ‘const double (*)[3]’ but argument is of type ‘double (*)[3]’
 static void invert_matrix3x3(const double in[3][3], double out[3][3])
         ^
libavfilter/vf_colorspace.c: In function ‘fill_whitepoint_conv_table’:
libavfilter/vf_colorspace.c:424:21: warning: passing argument 3 of ‘mul3x3’   from incompatible pointer type
 mul3x3(tmp, ma, fac);
libavfilter/vf_colorspace.c:376:13: note: expected ‘const double (*)[3]’ but argument is of type ‘double (*)[3]’
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
         ^
libavfilter/vf_colorspace.c:425:17: warning: passing argument 2 of ‘mul3x3’ from incompatible pointer type
 mul3x3(out, tmp, mai);
             ^
libavfilter/vf_colorspace.c:376:13: note: expected ‘const double (*)[3]’ but argument is of type ‘double (*)[3]’
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
         ^
libavfilter/vf_colorspace.c:425:22: warning: passing argument 3 of ‘mul3x3’ from incompatible pointer type
 mul3x3(out, tmp, mai);
                  ^
libavfilter/vf_colorspace.c:376:13: note: expected ‘const double (*)[3]’ but argument is of type ‘double (*)[3]’
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
         ^
libavfilter/vf_colorspace.c: In function ‘convert’:
libavfilter/vf_colorspace.c:480:20: warning: passing argument 7 of ‘s->yuv2yuv’ from incompatible pointer type
                s->yuv2yuv_coeffs, s->yuv_offset);
                ^
libavfilter/vf_colorspace.c:480:20: note: expected ‘const int16_t (*)[3][8]’ but argument is of type ‘int16_t (*)[3][8]’
libavfilter/vf_colorspace.c:480:39: warning: passing argument 8 of ‘s->yuv2yuv’ from incompatible pointer type
                s->yuv2yuv_coeffs, s->yuv_offset);
                                   ^
libavfilter/vf_colorspace.c:480:39: note: expected ‘const int16_t (*)[8]’ but argument is of type ‘int16_t (*)[8]’
libavfilter/vf_colorspace.c:502:20: warning: passing argument 7 of ‘s->yuv2rgb’ from incompatible pointer type
                s->yuv2rgb_coeffs, s->yuv_offset[0]);
                ^
libavfilter/vf_colorspace.c:502:20: note: expected ‘const int16_t (*)[3][8]’ but argument is of type ‘int16_t (*)[3][8]’
libavfilter/vf_colorspace.c:506:62: warning: passing argument 5 of ‘s->dsp.multiply3x3’ from incompatible pointer type
             s->dsp.multiply3x3(rgb, s->rgb_stride, w, h, s->lrgb2lrgb_coeffs);
                                                          ^
libavfilter/vf_colorspace.c:506:62: note: expected ‘const int16_t (*)[3][8]’ but argument is of type ‘int16_t (*)[3][8]’
libavfilter/vf_colorspace.c:511:28: warning: passing argument 7 of ‘s->rgb2yuv_fsb’ from incompatible pointer type
                        s->rgb2yuv_coeffs, s->yuv_offset[1], s->dither_scratch);
                        ^
libavfilter/vf_colorspace.c:511:28: note: expected ‘const int16_t (*)[3][8]’ but argument is of type ‘int16_t (*)[3][8]’
libavfilter/vf_colorspace.c:514:24: warning: passing argument 7 of ‘s->rgb2yuv’ from incompatible pointer type
                    s->rgb2yuv_coeffs, s->yuv_offset[1]);
                    ^
libavfilter/vf_colorspace.c:514:24: note: expected ‘const int16_t (*)[3][8]’ but argument is of type ‘int16_t (*)[3][8]’
libavfilter/vf_colorspace.c: In function ‘create_filtergraph’:
libavfilter/vf_colorspace.c:614:30: warning: passing argument 1 of ‘invert_matrix3x3’ from incompatible pointer type

                 ^

它还在继续。。。。在

如何解决?此警告可能有什么问题?在


Tags: offromistypeargumentbutccdouble
1条回答
网友
1楼 · 发布于 2024-04-26 13:19:55

首先,不要编译为根。在

您应该以普通用户的身份运行make,而不使用sudo。在

如果要在根用户拥有的位置(例如/usr或{}),则只运行sudo make install。在


至于您的问题,警告似乎来自ffmpeg代码,而不是您通过编译它所做的事情。在

可能是您使用的gcc比ffmpeg开发人员更新,而您的新版本会报告以前认为正常的内容的警告。或者您使用了一些gcc选项来打开一些警告,而ffmpeg开发人员则关闭了这些警告。或者,ffmpeg在编译时也看到了这些警告,并决定忽略它们。在

但这些只是警告,即编译器告诉您“这是可疑的,您可能需要检查它,但它可能会没事”。因此,除非您确定了实际的问题,否则您可以忽略它们,或者向上游发送一个补丁,以使警告消失(当然,代码保持正确)。在

例如,我看到一个warning: variable ‘ret’ set but not used [-Wunused-but-set-variable]的实例。好吧,你可以向上游发送一个补丁,删除变量的定义,就像那样,一个警告就会消失。:)

不过,在您提供的输出中没有任何错误,所以我假设您的编译成功了,而且您现在正在愉快地使用ffmpeg的新版本。在

或者你没有在这里粘贴错误吗?在

相关问题 更多 >