2

FFmpeg を使用してビデオ .avi を開いて読み取ろうとしています。Visual Studio 2010 を使用して win7 x64 で作業しています。

今のところ、私のコードは非常に単純です:

#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "SDL.h"
#include "SDL_mixer.h"


int main (int argc, char *argv[]) {

AVFormatContext *pFile_video;
int             s, videoStream;
AVCodecContext  *pCodecCtx;
AVCodec         *pCodec;
AVFrame         *pFrame; 
AVFrame         *pFrameRGB;
AVPacket        packet;
int             frameFinished;
int             numBytes;
uint8_t         *buffer;

av_register_all();

    if((avformat_open_input(&pFile_video, "AR.avi", NULL,NULL)!=0)) cout <<"cannot open video file"<<endl;
    //if(av_find_stream_info(pFile_video) <0) cout <<"cannot retrive stream information"<<endl;

    videoStream =-1;
    for(s=0; s<pFile_video->nb_streams;s++){
        if((pFile_video->streams[s]->codec->codec_type) == AVMEDIA_TYPE_VIDEO) videoStream =s;
    }
    if(videoStream ==-1) cout <<"cannot open video stream"<<endl;

f(SDL_Init(SDL_INIT_EVERYTHING)< 0) cout<< "cannot initialize SDL subsystems"<<endl;
    if(Mix_OpenAudio(22050,MIX_DEFAULT_FORMAT,2, 4096) <0) cout <<"error mixer audio"<<endl;
    music = Mix_LoadMUS("AR.wav");
    if(music == NULL) {cout <<"error loading music    "<<endl;
}

return 0;
}

次の .lib ファイルをリンクしました。

avcodec.lib
avdevice.lib
avfilter.lib
avformat.lib
avutil.lib
postproc.lib
swresample.lib
swscale.lib

しかし、私はこれらのエラーが発生します:

>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: la libreria predefinita 'msvcrt.lib' è in conflitto con l'utilizzo di altre librerie; utilizzare /NODEFAULTLIB:libreria
1>main_video_ffmpeg.obj : error LNK2019: riferimento al simbolo esterno "int __cdecl avformat_open_input(struct AVFormatContext * *,char const *,struct AVInputFormat *,struct AVDictionary * *)" (?avformat_open_input@@YAHPAPAUAVFormatContext@@PBDPAUAVInputFormat@@PAPAUAVDictionary@@@Z) non risolto nella funzione _SDL_main
1>main_video_ffmpeg.obj : error LNK2019: riferimento al simbolo esterno "void __cdecl av_register_all(void)" (?av_register_all@@YAXXZ) non risolto nella funzione _SDL_main
1>C:\Users\Cristina\Desktop\OpenCV\Progetti\MIEI_PROGETTI_Vs\video_ffmpeg\Debug\video_ffmpeg.exe : fatal error LNK1120: 2 esterni non risolti

リンカエラーだと思います..しかし、FFmpegライブラリ用の他の.libファイルはありません。

4

1 に答える 1

4

ffmpeg インクルードを extern "C" で囲む必要があります

    extern "C" {
      #include "libavcodec/avcodec.h"
      #include "libavformat/avformat.h"
      #include "SDL.h"
      #include "SDL_mixer.h"
    }
于 2013-02-26T13:59:12.157 に答える