解决cuvid中的sample编译和链接问题
unzip Video_Codec_SDK_9.0.20.zip
cd Video_Codec_SDK_9.0.20/Samples/AppDecode/AppDecImageProvider
vi Makefile
#增加
CCFLAGS += -g
LDFLAGS += -L$(CUDA_PATH)/lib64 -lcudart -lnvcuvid
LDFLAGS += -L/usr/local/ffmpeg/lib/ -lavcodec -lavutil -lavformat
#LDFLAGS += $(shell pkg-config --libs libavcodec libavutil libavformat)
LDFLAGS += -L/usr/lib64/ -lcuda
LDFLAGS += -pthread
make
#执行
./AppDecImageProvider -i ./stand_input.mp4 -o ./test1.bin -of rgba -gpu 3
#出现错误
[INFO ][10:57:36] GPU in use: Tesla P40
[INFO ][10:57:36] Media format: QuickTime / MOV (mov,mp4,m4a,3gp,3g2,mj2)
Session Initialization Time: 46 ms
./AppDecImageProvider: symbol lookup error: ./AppDecImageProvider: undefined symbol: cuvidGetDecodeStatus
搜索一下发现这篇文章:https://devtalk.nvidia.com/default/topic/1038289/symbol-lookup-error-with-cuvidgetdecodestatus/
原来是驱动的版本的问题:
执行 nvidia-smi发现驱动版本是 Driver Version: 390.30
在这里找到了最新的驱动: https://www.nvidia.com/Download/driverResults.aspx/144595/en-us
==========================
2019-04-29补充:升级驱动比较麻烦,因此选择降级SDK
在这里找到旧版的SDK: https://developer.nvidia.com/video-codec-sdk-archive
下载老一点的 Video_Codec_SDK_8.2.16
链接库的时候选择 ./Video_Codec_SDK_8.2.16/Samples/NvCodec/Lib/linux/stubs/x86_64/libnvcuvid.so