前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【错误记录】编译 ijkplayer 报错 (fatal error: libyuv.h: No such file or directory #include “libyuv.h“ )

【错误记录】编译 ijkplayer 报错 (fatal error: libyuv.h: No such file or directory #include “libyuv.h“ )

作者头像
韩曙亮
发布2023-03-30 13:23:29
4490
发布2023-03-30 13:23:29
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

参考 https://github.com/bilibili/ijkplayer 项目的编译过程 ;

一、报错信息


在编译完 ffmpeg 之后 , 执行

代码语言:javascript
复制
./compile-ijk.sh all

命令 , 编译 ijkplayer ;

这也是最后一条命令 ;

执行后报错 :

代码语言:javascript
复制
root@octopus:~/ijkplayer/ijkplayer-android/android# ./compile-ijk.sh all
profiler build: NO

[armeabi-v7a] Prebuilt       : libijkffmpeg.so <= /root/ijkplayer/ijkplayer-android/android/contrib/build/ffmpeg-armv7a/output/
[armeabi-v7a] Compile thumb  : ijkplayer <= ff_cmdutils.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ff_ffplay.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ff_ffpipeline.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ff_ffpipenode.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkmeta.c
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/ff_ffplay.c: In function 'convert_image':
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/ff_ffplay.c:526:5: warning: 'avcodec_encode_video2' is deprecated (declared at /root/ijkplayer/ijkplayer-android/android/contrib/build/ffmpeg-armv7a/output/include/libavcodec/avcodec.h:5509) [-Wdeprecated-declarations]
     ret = avcodec_encode_video2(img_info->frame_img_codec_ctx, &avpkt, dst_frame, &got_packet);
     ^
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/ff_ffplay.c: In function 'stream_close':
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/ff_ffplay.c:1041:9: warning: implicit declaration of function 'ijk_soundtouch_destroy' [-Wimplicit-function-declaration]
         ijk_soundtouch_destroy(is->handle);
         ^
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/ff_ffplay.c: In function 'audio_decode_frame':
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/ff_ffplay.c:2589:13: warning: implicit declaration of function 'ijk_soundtouch_translate' [-Wimplicit-function-declaration]
             int ret_len = ijk_soundtouch_translate(is->handle, is->audio_new_buf, (float)(ffp->pf_playback_rate), (float)(1.0f/ffp->pf_playback_rate),
             ^
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/ff_ffplay.c: In function 'stream_open':
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/ff_ffplay.c:3655:9: warning: implicit declaration of function 'ijk_soundtouch_create' [-Wimplicit-function-declaration]
         is->handle = ijk_soundtouch_create();
         ^
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/ff_ffplay.c:3655:20: warning: assignment makes pointer from integer without a cast
         is->handle = ijk_soundtouch_create();
                    ^
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkplayer.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ffpipeline_ffplay.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ffpipenode_ffplay_vdec.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ffmpeg_api_jni.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkplayer_android.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkplayer_jni.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ffpipeline_android.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ffpipenode_android_mediacodec_vdec.c
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/android/pipeline/ffpipenode_android_mediacodec_vdec.c: In function 'feed_input_buffer2':
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/android/pipeline/ffpipenode_android_mediacodec_vdec.c:509:9: warning: 'av_packet_split_side_data' is deprecated (declared at /root/ijkplayer/ijkplayer-android/android/contrib/build/ffmpeg-armv7a/output/include/libavcodec/avcodec.h:4707) [-Wdeprecated-declarations]
         av_packet_split_side_data(&pkt);
         ^
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/android/pipeline/ffpipenode_android_mediacodec_vdec.c:550:17: warning: 'avcodec_decode_video2' is deprecated (declared at /root/ijkplayer/ijkplayer-android/android/contrib/build/ffmpeg-armv7a/output/include/libavcodec/avcodec.h:4994) [-Wdeprecated-declarations]
                 change_ret = avcodec_decode_video2(new_avctx, frame, &got_picture, avpkt);
                 ^
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/android/pipeline/ffpipenode_android_mediacodec_vdec.c: In function 'feed_input_buffer':
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/android/pipeline/ffpipenode_android_mediacodec_vdec.c:757:9: warning: 'av_packet_split_side_data' is deprecated (declared at /root/ijkplayer/ijkplayer-android/android/contrib/build/ffmpeg-armv7a/output/include/libavcodec/avcodec.h:4707) [-Wdeprecated-declarations]
         av_packet_split_side_data(&pkt);
         ^
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/android/pipeline/ffpipenode_android_mediacodec_vdec.c:797:17: warning: 'avcodec_decode_video2' is deprecated (declared at /root/ijkplayer/ijkplayer-android/android/contrib/build/ffmpeg-armv7a/output/include/libavcodec/avcodec.h:4994) [-Wdeprecated-declarations]
                 change_ret = avcodec_decode_video2(new_avctx, frame, &got_picture, avpkt);
                 ^
[armeabi-v7a] Compile thumb  : ijkplayer <= allformats.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijklivehook.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkmediadatasource.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkio.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkiomanager.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkiocache.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkioffio.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkioandroidio.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkioprotocol.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkioapplication.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkiourlhook.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkasync.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkurlhook.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijklongurl.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijksegment.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkdict.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkutils.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkthreadpool.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijktree.c
[armeabi-v7a] Compile thumb  : ijkplayer <= ijkfifo.c
[armeabi-v7a] Compile++ thumb: ijkplayer <= ijkstl.cpp
cc1plus: warning: command line option '-std=c99' is valid for C/ObjC but not for C++
[armeabi-v7a] Compile thumb  : ijksdl <= ijksdl_aout.c
[armeabi-v7a] Compile thumb  : ijksdl <= ijksdl_audio.c
[armeabi-v7a] Compile thumb  : ijksdl <= ijksdl_egl.c
[armeabi-v7a] Compile thumb  : ijksdl <= ijksdl_error.c
[armeabi-v7a] Compile thumb  : ijksdl <= ijksdl_mutex.c
[armeabi-v7a] Compile thumb  : ijksdl <= ijksdl_stdinc.c
[armeabi-v7a] Compile thumb  : ijksdl <= ijksdl_thread.c
[armeabi-v7a] Compile thumb  : ijksdl <= ijksdl_timer.c
[armeabi-v7a] Compile thumb  : ijksdl <= ijksdl_vout.c
[armeabi-v7a] Compile thumb  : ijksdl <= ijksdl_extra_log.c
[armeabi-v7a] Compile thumb  : ijksdl <= color.c
[armeabi-v7a] Compile thumb  : ijksdl <= common.c
[armeabi-v7a] Compile thumb  : ijksdl <= renderer.c
[armeabi-v7a] Compile thumb  : ijksdl <= renderer_rgb.c
[armeabi-v7a] Compile thumb  : ijksdl <= renderer_yuv420p.c
[armeabi-v7a] Compile thumb  : ijksdl <= renderer_yuv444p10le.c
[armeabi-v7a] Compile thumb  : ijksdl <= shader.c
[armeabi-v7a] Compile thumb  : ijksdl <= rgb.fsh.c
[armeabi-v7a] Compile thumb  : ijksdl <= yuv420p.fsh.c
[armeabi-v7a] Compile thumb  : ijksdl <= yuv444p10le.fsh.c
[armeabi-v7a] Compile thumb  : ijksdl <= mvp.vsh.c
[armeabi-v7a] Compile thumb  : ijksdl <= ijksdl_vout_dummy.c
[armeabi-v7a] Compile thumb  : ijksdl <= ijksdl_vout_overlay_ffmpeg.c
[armeabi-v7a] Compile thumb  : ijksdl <= image_convert.c
[armeabi-v7a] Compile thumb  : ijksdl <= android_audiotrack.c
/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/jni/ijkmedia/ijksdl/ffmpeg/abi_all/image_convert.c:26:20: fatal error: libyuv.h: No such file or directory
 #include "libyuv.h"
                    ^
compilation terminated.
make: *** [/root/ijkplayer/ijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/obj/local/armeabi-v7a/objs/ijksdl/ffmpeg/abi_all/image_convert.o] Error 1
make: *** Waiting for unfinished jobs....
/root/ijkplayer/ijkplayer-android/android
profiler build: NO

搜索整个目录 , 确实没有 “libyuv.h” 文件 ;

二、解决方案


在根目录下 , 有一个 init-android-libyuv.sh 脚本 ,

在这里插入图片描述
在这里插入图片描述

执行该 init-android-libyuv.sh 脚本 , 就可以自动下载并安装 libyuv;

在 ijkplayer-android 目录中 , 执行

代码语言:javascript
复制
./init-android-soundtouch.sh

命令 , 下载 libyuv 依赖库 , 之后编译 ijkplayer 需要用到 ;

执行过程 :

代码语言:javascript
复制
root@octopus:~/ijkplayer/ijkplayer-android# 
root@octopus:~/ijkplayer/ijkplayer-android# ./init-android-libyuv.sh 
== pull libyuv base ==
正克隆到 'extra/libyuv'...
remote: Enumerating objects: 12767, done.
remote: Total 12767 (delta 0), reused 0 (delta 0), pack-reused 12767
接收对象中: 100% (12767/12767), 2.60 MiB | 839.00 KiB/s, 完成.
处理 delta 中: 100% (10540/10540), 完成.
== pull libyuv fork ==
正克隆到 'ijkmedia/ijkyuv'...
对象计数中: 12767, 完成.
Delta compression using up to 4 threads.
压缩对象中: 100% (2210/2210), 完成.
写入对象中: 100% (12767/12767), 完成.
Total 12767 (delta 10540), reused 12767 (delta 10540)
分支 'ijk-r0.2.1-dev' 设置为跟踪来自 'origin' 的远程分支 'ijk-r0.2.1-dev'。
切换到一个新分支 'ijk-r0.2.1-dev'
/root/ijkplayer/ijkplayer-android
root@octopus:~/ijkplayer/ijkplayer-android# 
root@octopus:~/ijkplayer/ijkplayer-android# 
在这里插入图片描述
在这里插入图片描述

执行完毕后 , 在 ijkplayer-android/ijkmedia 目录中就可以看到 ijkyuv 目录 ;

在这里插入图片描述
在这里插入图片描述

再次执行 , 就不会报上述错误 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、报错信息
  • 二、解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档