我正在尝试使用ffmpeg构建简单的程序
#include <stdio.h>
#include <stdlib.h>
#define __STDC_CONSTANT_MACROS
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavformat/avio.h>
#include <libavdevice/avdevice.h>
#include <libavutil/time.h>
}
#include <iostream>
int main( int argc, char* argv[] )
{
AVCodec *icodec;
AVFormatContext *ifcx = NULL;
AVInputFormat *ifmt;
AVCodecContext *iccx;
AVStream *ist;
AVStream *ost;
AVPacket pkt;
int i_index;
int64_t timenow, timestart;
int got_key_frame = 0;
AVFormatContext *ofcx;
const char *sProg = argv[ 0 ];
const char *sFileInput;
const char *sFileOutput;
int64_t bRunTime;
bRunTime = atoi( argv[ 2 ] ) * 1000000;
// Initialize library
av_log_set_level( AV_LOG_DEBUG );
av_register_all();
avcodec_register_all();
avformat_network_init();
avdevice_register_all();
我得到了这些错误
g ++ -o rtsp3 -I / usr / include -I / usr / local / include rtsp3.cpp -lavformat -lavcodec -lavutil -lm -lz -lva -lpthread
/tmp/ccAXDgvi.o:在函数main':
rtsp3.cpp:(.text+0x115): undefined reference to
avdevice_register_all&#39;
/usr/local/lib/libavformat.a(matroskadec.o):在函数matroska_decode_buffer':
/home/user/projects/ffmpeg-git/ffmpeg/libavformat/matroskadec.c:1242: undefined reference to
BZ2_bzDecompressInit&#39;
/home/user/projects/ffmpeg-git/ffmpeg/libavformat/matroskadec.c:1257:对BZ2_bzDecompress'
/home/user/projects/ffmpeg-git/ffmpeg/libavformat/matroskadec.c:1250: undefined reference to
未定义的引用BZ2_bzDecompressEnd&#39;
/home/user/projects/ffmpeg-git/ffmpeg/libavformat/matroskadec.c:1262:未定义引用`BZ2_bzDecompressEnd&#39;
collect2:错误:ld返回1退出状态
我有gf版本的ffmpeg并成功编译并进行安装。
答案 0 :(得分:1)
试试这个,它对我有用:
gcc -o main.o main.c `pkg-config --cflags --libs libavformat libavutil`
答案 1 :(得分:0)
您需要与libavdevice链接,例如-lavdevice
另外,显然,libbz2,例如-lbz2
答案 2 :(得分:0)
我通过安装libbz2-dev
解决了这个问题在Ubuntu上:sudo apt-get install libbz2-dev
答案 3 :(得分:0)
检查路径中是否添加了libav格式的目标文件。您已在makefile中正确添加了库管理程序,因此不应该出现问题。
如果您使用的是ubuntu,请检查是否已预设
/usr/lib/x86_64-linux-gnu/libavformat.so
如果没有,则需要安装libavformat-dev
您可以使用“sudo apt-get install libavformat-dev”
进行安装我遇到了同样的问题,之后就解决了。