c++ 调用 ffmpeg 编程
(如果有轉載的請注明哈哈)
這個ffmpeg的使用看的是一頭霧水,前兩天還在一個勁地編譯,也沒編譯成功。
請教了一個同學,說這個庫很強大,一般不需要編譯就可以使用。
這次直接從官網上下的 http://ffmpeg.zeranoe.com/builds/的
ffmpeg-20130906-git-bcd1c20-win64-static.7z?? (靜態編譯)
ffmpeg-20130906-git-bcd1c20-win64-shared.7z? (動態編譯的bin下面有相應的dll文件)
ffmpeg-20130906-git-bcd1c20-win64-dev.7z?? (有庫文件)
打不開的或者懶得找的,直接去下我整合好了的 http://download.csdn.net/detail/kuaile123/6232827(這是64位的)
(不好意思,后面才發現上傳的那個里面的bin是static的,這里又重新發了一個http://download.csdn.net/detail/kuaile123/6237069)
里面的bin,include,lib都可以直接用,按平時配置vs的c++路徑去配置就好了,注意博主的是64位的,按自己電腦來下載。
而且從官網上下載的文件缺少inttypes.h文件,上面的資源里面已經放進去了,編譯不會出錯,缺少的可以自己去下載。
下載下后兩個,解壓,需要用到的為ffmpeg-20130906-git-bcd1c20-win64-shared下的bin,ffmpeg-20130906-git-bcd1c20-win64-dev下的include和lib
用vs2010 新建工程,需要配置 include和lib,為ffmpeg-20130906-git-bcd1c20-win64-dev下的include和lib
配置 Executable Directories 的路徑為 ffmpeg-20130906-git-bcd1c20-win64-shared下的bin
(但是這樣運行程序時會出現缺少dll 文件程序無法啟動,所以最好把dll文件放于工程下)
?
在程序中添加頭文件,例如:
extern "C"{ #include <libavutil/opt.h> #include <libavcodec/avcodec.h> #include <libavutil/channel_layout.h> #include <libavutil/common.h> #include <libavutil/imgutils.h> #include <libavutil/mathematics.h> #include <libavutil/samplefmt.h>#include <libavformat/avformat.h> #include <libswscale/swscale.h> };注意一定要加 extern "C"{},因為dll中封裝的是.c 文件,函數接口不對,如果不添加會出現無法識別的外部符號。如:
error LNK2001: unresolved external symbol "void __cdecl av_close_input_file(struct AVFormatContext * 等
?
添加依賴的lib文件
#pragma comment(lib,"avcodec.lib") #pragma comment(lib,"avdevice.lib") #pragma comment(lib,"avfilter.lib") #pragma comment(lib,"avformat.lib") #pragma comment(lib,"avutil.lib") #pragma comment(lib,"postproc.lib") #pragma comment(lib,"swresample.lib") #pragma comment(lib,"swscale.lib")
?
還有注意有時編寫代碼會出現如下等:
error C3861: 'avcodec_decode_video': identifier not found
這是由于 ffmpeg版本問題,這個函數式舊版中的,新的版本里是'avcodec_decode_video2'
所以要下載最新版本,并參考 \ffmpeg-20130906-git-bcd1c20-win64-XX\doc\example 示例里面函數的用法
我用了 decoding_encoding.c 里面的一個函數調通了,可以用。
總結
以上是生活随笔為你收集整理的c++ 调用 ffmpeg 编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7 X64 编译ffmpeg
- 下一篇: 最新版ffmpeg 提取视频关键帧