0

FFMpegライブラリを使用して、本当に単純な Qt プログラムを構築しようとしています。

現在、ビデオファイルを開いたり閉じたりしたいだけです。

ここに私のプロジェクトファイルがあります:

QT    += core gui
TARGET = avtest01
TEMPLATE = app
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib -lavformat
SOURCES += main.cpp

そして私のコード:

#include <QDebug>

extern "C" {
#include <libavformat/avformat.h>
}

int main(int argc, char *argv[])
{
    if(argc > 1)
    {
        AVFormatContext *format_context;
        qDebug() << argv[1];
        if(avformat_open_input(&format_context, argv[1], NULL, NULL) == 0)
        {
            qDebug() << "open";
            avformat_close_input(&format_context);
        }
        else
            qDebug() << "error opening " << argv[1];
    }    
    return 0;
}

残念ながら、リンカーは失敗します。

Undefined symbols for architecture x86_64:
  "avformat_open_input(AVFormatContext**, char const*, AVInputFormat*, AVDictionary**)", referenced from:
    _main in main.o
  "avformat_close_input(AVFormatContext**)", referenced from:
    _main in main.o

MacOS で Qt 5.1.0 を使用しています。

4

1 に答える 1

1

av_register_all();メインに追加した後、あなたのコードはうまくいきました。

私の推測では、32 ビット用にコンパイルされた avformat があると思います。file /usr/local/lib/libavformat.dylibターミナルで実行することで確認できます。

出力は次のようになります。

/usr/local/lib/libavformat.dylib: Mach-O 64-bit dynamically linked shared library x86_64
于 2013-10-02T21:12:39.217 に答える