【错误记录】编译 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“ )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、報錯信息
- 二、解決方案
參考 https://github.com/bilibili/ijkplayer 項目的編譯過程 ;
一、報錯信息
在編譯完 ffmpeg 之后 , 執行
./compile-ijk.sh all命令 , 編譯 ijkplayer ;
這也是最后一條命令 ;
執行后報錯 :
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 castis->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 目錄中 , 執行
./init-android-soundtouch.sh命令 , 下載 libyuv 依賴庫 , 之后編譯 ijkplayer 需要用到 ;
執行過程 :
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 目錄 ;
再次執行 , 就不會報上述錯誤 ;
總結
以上是生活随笔為你收集整理的【错误记录】编译 ijkplayer 报错 (fatal error: libyuv.h: No such file or directory #include “libyuv.h“ )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【错误记录】编译 ijkplayer 报
- 下一篇: 【ijkplayer】编译 Androi